分布式系统的面试题5
?
1、面試題
?
dubbo負載均衡策略和集群容錯策略都有哪些?動態(tài)代理策略呢?
?
2、面試官心里分析
?
繼續(xù)深問吧,這些都是用dubbo必須知道的一些東西,你得知道基本原理,知道序列化是什么協議,還得知道具體用dubbo的時候,如何負載均衡,如何高可用,如何動態(tài)代理。
?
說白了,就是看你對dubbo熟悉不熟悉:
?
(1)dubbo工作原理:服務注冊,注冊中心,消費者,代理通信,負載均衡
(2)網絡通信、序列化:dubbo協議,長連接,NIO,hessian序列化協議
(3)負載均衡策略,集群容錯策略,動態(tài)代理策略:dubbo跑起來的時候一些功能是如何運轉的,怎么做負載均衡?怎么做集群容錯?怎么生成動態(tài)代理?
(4)dubbo SPI機制:你了解不了解dubbo的SPI機制?如何基于SPI機制對dubbo進行擴展?
?
3、面試題剖析
?
(1)dubbo負載均衡策略
?
1)random loadbalance
?
默認情況下,dubbo是random load balance隨機調用實現負載均衡,可以對provider不同實例設置不同的權重,會按照權重來負載均衡,權重越大分配流量越高,一般就用這個默認的就可以了。
?
2)roundrobin loadbalance
?
還有roundrobin loadbalance,這個的話默認就是均勻地將流量打到各個機器上去,但是如果各個機器的性能不一樣,容易導致性能差的機器負載過高。所以此時需要調整權重,讓性能差的機器承載權重小一些,流量少一些。
?
跟運維同學申請機器,有的時候,我們運氣,正好公司資源比較充足,剛剛有一批熱氣騰騰,剛剛做好的一批虛擬機新鮮出爐,配置都比較高。8核+16g,機器,2臺。過了一段時間,我感覺2臺機器有點不太夠,我去找運維同學,哥兒們,你能不能再給我1臺機器,4核+8G的機器。我還是得要。
?
3)leastactive loadbalance
?
這個就是自動感知一下,如果某個機器性能越差,那么接收的請求越少,越不活躍,此時就會給不活躍的性能差的機器更少的請求
?
4)consistanthash loadbalance
?
一致性Hash算法,相同參數的請求一定分發(fā)到一個provider上去,provider掛掉的時候,會基于虛擬節(jié)點均勻分配剩余的流量,抖動不會太大。如果你需要的不是隨機負載均衡,是要一類請求都到一個節(jié)點,那就走這個一致性hash策略。
?
(2)dubbo集群容錯策略
?
1)failover cluster模式
?
失敗自動切換,自動重試其他機器,默認就是這個,常見于讀操作
?
2)failfast cluster模式
一次調用失敗就立即失敗,常見于寫操作
?
3)failsafe cluster模式
?
出現異常時忽略掉,常用于不重要的接口調用,比如記錄日志
?
4)failbackc cluster模式
?
失敗了后臺自動記錄請求,然后定時重發(fā),比較適合于寫消息隊列這種
?
5)forking cluster
?
并行調用多個provider,只要一個成功就立即返回
?
6)broadcacst cluster
?
逐個調用所有的provider
?
(3)dubbo動態(tài)代理策略
?
默認使用javassist動態(tài)字節(jié)碼生成,創(chuàng)建代理類
?
但是可以通過spi擴展機制配置自己的動態(tài)代理策略
?
dubbo負載均衡:
?
轉載于:https://www.cnblogs.com/daiwei1981/p/9413008.html
總結
以上是生活随笔為你收集整理的分布式系统的面试题5的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 移动端 | table 布局
- 下一篇: ansible的系统模块8