Dubbo 學習記錄Two

 服務的提供者

服務的消費者


我們在啓動項目的時候可以在spring中配置當前消費者引用的地址可不可用

值爲false的時候,是不會檢查服務的提供者是否啓動


此標籤的默認值爲true,但是當我們通過api編程延遲調用服務的時候就需要關閉,否則服務臨時不可用是會報null設置爲false,

就表示總會引用,當服務開啓後,會自動連上。

dubbo集羣

爲什麼需要dubbo的集羣呢?

因爲如果只有一臺機器提供服務,萬一這臺機器宕機了,那麼你的dubbo服務就GG了,你因爲沒有提供者了,所以你的工程也會gg,所以我們需要搭建一個集羣的dubbo服務,多臺機器都發布同一個dubbo服務。


以上圖爲例,cluster得到容錯機制爲默認,,重試次數爲2次,不包括第一次連接,超時等待時間爲4秒,負載均衡的機制也是隨機的。這樣就可以實現一個dubbo服務的簡單集羣


集羣容錯

什麼是集羣容錯?

表示在一個服務下去暴露多個provider(提供者)當有任何一個提供者宕機時候,不影響服務的

正常使用 .依賴於duubo的自動註冊和自動發現功能

duubo集羣的時候調用順序




 均衡負載(Dubbo)

Random LoadBalance  隨機的

隨機:按權重來設置隨機概率有利於動態調整


上面表示如果有3000個請求來到就一人一半,如果發現某臺機器(服務的提供者)處理請求的效率慢,就可以把那臺機器的權重減半。以達到服務的最好優化。

RoundRobin LoadBalance 輪詢 和上面說的差不多,以減低權重比例來達到最佳效果。

Least Active loadBalance 活躍的

  • 最少活躍調用數,相同活躍數的隨機,活躍數指調用前後計數差。
  • 使慢的提供者收到更少請求,因爲越慢的提供者的調用前後計數差會越大。

Consistent Hash  loadBalance 一致性的

  • 一致性Hash,相同參數的請求總是發到同一提供者。
  • 當某一臺提供者掛時,原本發往該提供者的請求,基於虛擬節點,平攤到其它提供者,不會引起劇烈變動。
  • 缺省只對第一個參數Hash,如果要修改,請配置<dubbo:parameter key="hash.arguments" value="0,1" />
  • 缺省用160份虛擬節點,如果要修改,請配置<dubbo:parameter key="hash.nodes" value="320" />
負載均衡策略根據實際情況配置。

 多註冊中心

一個消費者可以連接兩個不同的註冊中心,並且不同的註冊中心,可以提供同一接口的不同實現。當然也可以實現兩套不同的接口



 服務的升級和降級(留檔,看不懂)

 Dubbo單獨異步調用  

一.異步調用和同步調用的區別

     我們知道,常見的方法調用都是同步調用,這種調用方式是一種阻塞式的調用方式,即客戶端(主調用方)代碼一直阻塞等待直到被服務端(被調用方)返回 爲止。這種調用方式相對比較直觀,也是大部分編程語言直接支持的一種調用方式。但是,如果我們面對是基於粗粒度的服務組件,面對的是一些需要比較長時間才 能有響應的應用場景那麼我們就需要一種非阻塞式調用方式,即異步調用方式。

SCA編程模式( 面向服務組件體系結構)提供了三種方式的異步調用,它們分別是:

1. 單向調用方式。

2. 延遲響應方式。

3. 請求回調方式。

 單向調用

       單向調用方式是最爲簡單的異步調用方式,在這種調用方式中,客戶端發出請求之後就不再關心服務端的情況,包括是否執行成功,返回值是什麼等等。我們可以用下面的圖 4示來描述這種單向調用方式:


圖 4: 單向調用 
圖 4: 單向調用

      單向調用方式是一種不管調用結果的方式,但是在很多情況下我們是需要知道調用結果的。我們需要知道調用是否成功,需要知道調用的結果,就算調用失敗我們也希望知道錯誤代碼等信息。在這種情況下,延遲響應和請求回調就是兩種能夠讓我們知道調用結果的方式。

延遲響應方式

       延遲響應方式是指客戶端在發出調用請求之後繼續執行,但是經過一段時間之後,客戶端再調用相應的方法去檢索返回結果,並通過參數指定如何根據 調用的 結果而執行進一步動作。由於是異步調用方式,因此,在第一次發出調用請求的時候,服務端需要返回一個稱爲票據(Ticket)的對象。這個對象會作爲第二 次發出檢索結果請求時的一個參數。顯然,這個Ticket對象的作用與WEB編程的SessionID非常類似。我們可以用圖 5 來表示延遲相應調用方式:


圖 5:延遲響應調用方式

二.dubbo的異步調用


注:如果兩個任務都比較耗時,同時這兩個代碼又沒有關聯,這可以採用異步調用,讓這兩個任務同時執行


 例子:

        一個線程要調用兩個方法,一個方法要執行3S,另一個要執行8S,如果是同步調用個的話,至少要11S,但是如果異步調用的話只要8秒



上面的配置就可以實現getPerson方法的異步調用


Dubbo緩存

dubbo的緩存爲聲明式的緩存,可在服務者的配置文件


id爲接口的bean名字,cache爲true就表示緩存已經開啓

dubbo緩存策略共有三種,我只瞭解前兩種 配置方法cache=“lru” 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章