分布式架構(gòu)基本概念/技術(shù)

一些基本概念

  • 服務(wù)提供方provider
  • 服務(wù)調(diào)用方consumer

以下1,2,3,4都是provider出現(xiàn)問題,consumer的應(yīng)對(duì)對(duì)策

1.超時(shí)

WHY:如果provider要10s才響應(yīng),那么consumer也要等10s才響應(yīng),這種情況多的話consumer性能會(huì)降低。
HOW:對(duì)consumer設(shè)置時(shí)間閾值,超過consumer就不等待了
TO:保護(hù)服務(wù),使consumer保持原來的性能。

2.重試

WHY:有時(shí)候provid只是偶爾抖動(dòng),如果這時(shí)候超時(shí)后直接放棄,就會(huì)導(dǎo)致請(qǐng)求錯(cuò)誤,帶來業(yè)務(wù)損失
HOW:在超時(shí)后重試一下,重試如果能夠正常返回,這次請(qǐng)求就被挽救。
可以考慮切換一臺(tái)機(jī)器專門用來重試,減輕原來機(jī)器的負(fù)擔(dān)。

3.冪等

When:如果允許consumer重試,那provider就要做到冪等
WHAT:同一個(gè)請(qǐng)求被consumer多次調(diào)用,對(duì)provider產(chǎn)生的影響(寫入等)是一致的

4.熔斷

When:使用于一個(gè)不那么重要的服務(wù),不想因?yàn)樗捻憫?yīng)時(shí)間過長(zhǎng)導(dǎo)致影響consumer的核心服務(wù)的響應(yīng)時(shí)間過長(zhǎng)
HOW:如果檢查出來頻繁超時(shí),就把consumer調(diào)用provider的請(qǐng)求直接短路掉,不實(shí)際調(diào)用,而是直接返回一個(gè)值,等provider服務(wù)恢復(fù)穩(wěn)定后再恢復(fù)調(diào)用。

以下5是consumer出現(xiàn)問題,provider的應(yīng)對(duì)對(duì)策

5.限流

WHY:一個(gè)provider對(duì)多個(gè)consumer提供服務(wù),其中一個(gè)consumer流量飆升,占據(jù)了provider的大部分機(jī)器時(shí)間,導(dǎo)致其他更重要的consumer不能正常服務(wù)。
HOW:provider需要根據(jù)consumer的重要程度以及平時(shí)的QPS值,設(shè)置流量上限,超過限制等待或者直接拒絕。

5.1資源隔離

provider對(duì)consumer的流行進(jìn)行限制,防止被拖垮
consumer對(duì)調(diào)用provider的線程資源進(jìn)行隔離,確保調(diào)用某個(gè)provider服務(wù)不會(huì)耗光整個(gè)consumer資源

5.2服務(wù)降級(jí)

5.3 provider端

provider發(fā)現(xiàn)某個(gè)consumer流量激增,考慮降級(jí)服務(wù)
如:1.直接對(duì)consumer返回固定數(shù)據(jù); 2.需要實(shí)時(shí)寫入數(shù)據(jù)庫(kù)的,先寫入緩存隊(duì)列,再異步寫入數(shù)據(jù)庫(kù)

5.4 consumer端

consumer發(fā)現(xiàn)某個(gè)provider出現(xiàn)異常(如超時(shí),數(shù)據(jù)異常),可以降級(jí)provider的邏輯,如直接返回固定值


RPC學(xué)習(xí)筆記

1.RPC: Remote Procedure Call 遠(yuǎn)程過程調(diào)用

2.一個(gè)RPC架構(gòu)包含四個(gè)組件:

  1. 客戶端Client:服務(wù)的調(diào)用者
  2. 客戶端存根Client Stub:存放服務(wù)端地址信息,將客戶端的請(qǐng)求參數(shù)打包成網(wǎng)絡(luò)消息,通過網(wǎng)絡(luò)發(fā)送給服務(wù)方
  3. 服務(wù)端Server:服務(wù)的發(fā)布者
  4. 服務(wù)端存根Server Stub:接受客戶端發(fā)送過來的消息并解包,再調(diào)用本地方法

3.RPC框架需要考慮解決如下問題:

  • 服務(wù)端提供的服務(wù)如何發(fā)布,客戶端如何發(fā)現(xiàn)服務(wù)
  • 如何對(duì)請(qǐng)求對(duì)象和返回結(jié)果進(jìn)行序列化和反序列化
  • 如何更高效進(jìn)行網(wǎng)絡(luò)通信

4.RPC的最重要任務(wù)

解耦服務(wù),將客戶端和服務(wù)端解耦,提高代碼的可移植性。

5.服務(wù)端和客戶端之間怎么調(diào)用?

通過網(wǎng)絡(luò)協(xié)議傳輸,網(wǎng)絡(luò)協(xié)議都是二進(jìn)制的,因此內(nèi)存中的參數(shù)值要序列化成二進(jìn)制的形式,通過尋址和傳輸發(fā)送到另一方

6.RPC服務(wù)和HTTP服務(wù)的區(qū)別

// 有待學(xué)習(xí)


負(fù)載均衡筆記

不患寡而患不均

1.負(fù)載均衡:Load Balance(LB)

將一個(gè)服務(wù)分布到不同的服務(wù)器(節(jié)點(diǎn))或網(wǎng)絡(luò)設(shè)備上,讓所有節(jié)點(diǎn)提供最低價(jià)格,最高服務(wù)。(既不要過載,也要最大程度發(fā)揮作用)

2.四層負(fù)載均衡

在傳輸層,主要工作是轉(zhuǎn)發(fā),通過報(bào)文中的目標(biāo)地址和端口,再加上負(fù)載均衡設(shè)備設(shè)置的服務(wù)器選擇方式,決定最終選擇的內(nèi)部服務(wù)器。

3.七層負(fù)載均衡

在應(yīng)用層,主要工作是代理,通過報(bào)文中的真正有意義的應(yīng)用層內(nèi)容,再加上負(fù)載均衡設(shè)備設(shè)置的服務(wù)器選擇方式,決定最終選擇的內(nèi)部服務(wù)器。

4.負(fù)載均衡算法

1、 隨機(jī)算法 按權(quán)重設(shè)置隨機(jī)概率,調(diào)用量越大分布越均勻
2、輪詢及加權(quán)輪詢 適用于各服務(wù)器的處理能力相同時(shí),且每筆業(yè)務(wù)處理量差異不大時(shí)。
3、最小連接及加權(quán)最小連接 在多個(gè)服務(wù)器中,與處理連接數(shù)最少的服務(wù)器進(jìn)行通信。
4、哈希算法 根據(jù)客戶端IP或請(qǐng)求key計(jì)算hash值并取模,優(yōu)點(diǎn)是同一個(gè)請(qǐng)求能分布到同一個(gè)節(jié)點(diǎn)
5、IP地址散列 管理發(fā)送方IP和目的地IP地址的三列,將來自同一發(fā)送方的分組統(tǒng)一轉(zhuǎn)發(fā)到相同服務(wù)器。
6、URL散列 通過管理客戶端請(qǐng)求URL信息的散列,將發(fā)送至相同URL的請(qǐng)求轉(zhuǎn)發(fā)至同一服務(wù)器的算法。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,563評(píng)論 19 139
  • 一、微服務(wù)介紹 1. 什么是微服務(wù) 在介紹微服務(wù)時(shí),首先得先理解什么是微服務(wù),顧名思義,微服務(wù)得從兩個(gè)方面去理解,...
    阿南的生活記錄閱讀 468評(píng)論 0 3
  • 2018.06.06工作內(nèi)容:1.嘗試解決前端開發(fā)手冊(cè),開發(fā)新功能,已經(jīng)全局安裝了gulp但是不能啟動(dòng)問題;嘗試本...
    莫小西0213閱讀 875評(píng)論 0 1
  • “你們每天都在做什么,沒有一件事情按照進(jìn)度完成,每個(gè)部門都在投訴?!卑雮€(gè)小時(shí)的周會(huì)終演變成2個(gè)小時(shí)的批判大會(huì),領(lǐng)導(dǎo)...
    lily8852閱讀 670評(píng)論 0 0
  • 上周買了臺(tái)新電腦,之后的一周都不知道應(yīng)該干點(diǎn)啥了,今天下點(diǎn)這個(gè),明天下點(diǎn)那個(gè),原先計(jì)劃的事情都被耽擱了。我再一次打...
    8db0d0c82699閱讀 347評(píng)論 0 1

友情鏈接更多精彩內(nèi)容