簡介
Dubbo是一個(gè)RPC框架Dubbo使用的協(xié)議:
dubbo://
rmi://
http://
redis://
webservice://
hessian://
thrift://
默認(rèn)協(xié)議是dubbo
dubbo協(xié)議的使用場景:
- 數(shù)據(jù)量小高并發(fā)
- 消費(fèi)者遠(yuǎn)多于服務(wù)提供者
dubbo協(xié)議采用的是異步單一長連接。
為什么單一:可以確保一個(gè)消費(fèi)者和提供者只有一個(gè)連接,避免了單一消費(fèi)者多連接增加有功者壓力的風(fēng)險(xiǎn)。
為什么長連接:TCP連接需要三次握手四次握手,減少了這部分建立斷開的消耗。
為什么異步:大多數(shù)情況下,消費(fèi)者數(shù)量都是多于提供者的,異步傳輸可以有效減少提供者的壓力。
-
Dubbo負(fù)載均衡策略:
randon loadbalance
默認(rèn)隨機(jī)調(diào)用??梢栽O(shè)置權(quán)重roundrobin loadbalance
輪詢,均勻的將請求打到每個(gè)提供者leastactive loadbalance
自動(dòng)感知,根據(jù)提供者的活躍度,如果某個(gè)機(jī)器的性能非常優(yōu)秀,接受的請求多,則越活躍,則后續(xù)接受到的請求則越多。consistanthash loadbalance
一致性hash算法,相同參數(shù)的請求一定分發(fā)到一個(gè)provider上。如果provider掛掉了,會(huì)基于虛擬節(jié)點(diǎn)均勻的分配剩余的流量,不會(huì)出現(xiàn)大抖動(dòng)的情況。
Dubbo集群容錯(cuò)策略
failover cluster
失敗自動(dòng)切換, 自動(dòng)重試其它機(jī)器。缺省方案failfast cluster
一次調(diào)用失敗就立即失敗,常用于寫操作。failsafe cluster
出現(xiàn)異常時(shí)忽略,常用于不重要的接口調(diào)用,比如記錄日志。failback cluster
失敗了后臺自動(dòng)記錄請求, 然后定時(shí)重發(fā), 適合寫消息隊(duì)列。forking cluster
并行調(diào)用多個(gè)provider, 只要一個(gè)成功就立即返回。broadcast cluster
逐個(gè)調(diào)用所有的provider
下一次寫dubbo的結(jié)構(gòu)層的作用。