日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

3.dubbo 负载均衡策略和集群容错策略都有哪些?动态代理策略呢?

發布時間:2024/9/5 编程问答 32 如意码农
生活随笔 收集整理的這篇文章主要介紹了 3.dubbo 负载均衡策略和集群容错策略都有哪些?动态代理策略呢? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者:中華石杉

面試題

dubbo 負載均衡策略和集群容錯策略都有哪些?動態代理策略呢?

面試官心理分析

繼續深問吧,這些都是用 dubbo 必須知道的一些東西,你得知道基本原理,知道序列化是什么協議,還得知道具體用 dubbo 的時候,如何負載均衡,如何高可用,如何動態代理。

說白了,就是看你對 dubbo 熟悉不熟悉:

  • dubbo 工作原理:服務注冊、注冊中心、消費者、代理通信、負載均衡;
  • 網絡通信、序列化:dubbo 協議、長連接、NIO、hessian 序列化協議;
  • 負載均衡策略、集群容錯策略、動態代理策略:dubbo 跑起來的時候一些功能是如何運轉的?怎么做負載均衡?怎么做集群容錯?怎么生成動態代理?
  • dubbo SPI 機制:你了解不了解 dubbo 的 SPI 機制?如何基于 SPI 機制對 dubbo 進行擴展?

面試題剖析

dubbo 負載均衡策略

random loadbalance

默認情況下,dubbo 是 random load balance ,即隨機調用實現負載均衡,可以對 provider 不同實例設置不同的權重,會按照權重來負載均衡,權重越大分配流量越高,一般就用這個默認的就可以了。

roundrobin loadbalance

這個的話默認就是均勻地將流量打到各個機器上去,但是如果各個機器的性能不一樣,容易導致性能差的機器負載過高。所以此時需要調整權重,讓性能差的機器承載權重小一些,流量少一些。

舉個栗子。

跟運維同學申請機器,有的時候,我們運氣好,正好公司資源比較充足,剛剛有一批熱氣騰騰、剛剛做好的虛擬機新鮮出爐,配置都比較高:8 核 + 16G 機器,申請到 2 臺。過了一段時間,我們感覺 2 臺機器有點不太夠,我就去找運維同學說,“哥兒們,你能不能再給我一臺機器”,但是這時只剩下一臺 4 核 + 8G 的機器。我要還是得要。

這個時候,可以給兩臺 8 核 16G 的機器設置權重 4,給剩余 1 臺 4 核 8G 的機器設置權重 2。

leastactive loadbalance

這個就是自動感知一下,如果某個機器性能越差,那么接收的請求越少,越不活躍,此時就會給不活躍的性能差的機器更少的請求。

consistanthash loadbalance

一致性 Hash 算法,相同參數的請求一定分發到一個 provider 上去,provider 掛掉的時候,會基于虛擬節點均勻分配剩余的流量,抖動不會太大。如果你需要的不是隨機負載均衡,是要一類請求都到一個節點,那就走這個一致性 Hash 策略。

dubbo 集群容錯策略

failover cluster 模式

失敗自動切換,自動重試其他機器,默認就是這個,常見于讀操作。(失敗重試其它機器)

可以通過以下幾種方式配置重試次數:

<dubbo:service retries="2" />

或者

<dubbo:reference retries="2" />

或者

<dubbo:reference>
<dubbo:method name="findFoo" retries="2" />
</dubbo:reference>

failfast cluster 模式

一次調用失敗就立即失敗,常見于非冪等性的寫操作,比如新增一條記錄(調用失敗就立即失敗)

failsafe cluster 模式

出現異常時忽略掉,常用于不重要的接口調用,比如記錄日志。

配置示例如下:

<dubbo:service cluster="failsafe" />

或者

<dubbo:reference cluster="failsafe" />

failback cluster 模式

失敗了后臺自動記錄請求,然后定時重發,比較適合于寫消息隊列這種。

forking cluster 模式

并行調用多個 provider,只要一個成功就立即返回。常用于實時性要求比較高的讀操作,但是會浪費更多的服務資源,可通過 forks="2" 來設置最大并行數。

broadcacst cluster

逐個調用所有的 provider。任何一個 provider 出錯則報錯(從2.1.0 版本開始支持)。通常用于通知所有提供者更新緩存或日志等本地資源信息。

dubbo動態代理策略

默認使用 javassist 動態字節碼生成,創建代理類。但是可以通過 spi 擴展機制配置自己的動態代理策略。

總結

以上是生活随笔為你收集整理的3.dubbo 负载均衡策略和集群容错策略都有哪些?动态代理策略呢?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。