Dubbo亮点总结
Dubbo是阿里巴巴的一個開源RPC項目,可在http://dubbo.io進行訪問
類似的產品有Hessian、spring?httpinvoke 等。 ?
Dubbo的亮點總結例如以下:
1、服務注冊中心
? ? ? 相比Hessian類RPC框架,Dubbo有自己的服務中心。 寫好的服務能夠注冊到服務中心。 client從服務中心尋找服務。然后再到對應的服務提供者機器獲取服務
? ? ? 通過服務中心能夠實現集群、負載均衡、高可用(容錯) 等重要功能
? ? ? 服務中心一般使用zookeeper實現。 也有redis和其它一些方式 。 以使用zookeeper作為服務中心為例。 服務提供者啟動后會在zookeeper的 /dubbo節點下創建提供的服務節點。包括服務提供者ip、port等信息。 服務提供者關閉時會從zookeeper中移除相應的服務。
? ? ?服務使用者會從注冊中心zookeeper中尋找服務,同一個服務可能會有多個提供者, Dubbo會幫我們找到合適的服務提供者
2、集群容錯
? ? ? 當服務調用失敗時(比方響應超時),依據我們的業務不同,能夠使用不同的策略來應對這樣的失敗。?
? ? ? 比方我們調用的服務是一個查詢服務,不會改動數據庫,那么能夠給該服務設置容錯方式為failover 。 當調用失敗時。自己主動切換到其它服務提供者去調用,當失敗次數超過指定重試次數,那么就拋出錯誤。
? ? ?假設服務是更新數據的服務,那就不能使用失敗重試的方式了。 由于這樣可能產生數據反復改動的問題,比方調用提供者A的插入用戶方法,可是該方法業務邏輯復雜,運行過程非常慢,導致響應超時, 那么此時假設再去調用另外一個服務提供者的插入用戶方法。將會又反復插入同一個用戶。
? 對于這樣的類型的服務,能夠使用容錯方式為failfast。假設第一次調用失敗,馬上報錯。不須要重試。
? ? 另外還有以下幾種容錯類型
? ? failsafe 出現錯誤。直接忽略。不重試也不報錯
? ? failback 失敗后不報錯。會將該失敗請求,定時重發。適合消息通知類型的服務
? ?forking ? ?并行調用多個server,僅僅要在某一臺提供者上面成功。那么方法返回。 適合實時性要求較高的查詢服務, 可是要犧牲性能。由于每臺server會做同一個操作
? ?broadcast 廣播調用全部服務提供者,逐個調用,隨意一臺報錯則報錯。
?適合與更新每臺提供者上面的緩存 ?這泓類型的服務
3、直連提供者
? ?在開發階段為了方便測試。通常系統client能指定調用某個服務提供者,那么能夠在引用服務時加一個url參數去指定服務提供者
| <dubbo:reference id="xxxService"interface="com.alibaba.xxx.XxxService"url="dubbo://localhost:20890"/> |
4、負載均衡
? ? 當同一個服務有多個提供者在提供服務時。 client怎樣正確的選擇提供者實現負載均衡dubbo也給我們提供了幾種方案
? ? random ?隨機選提供者,并能夠給提供者設置權重
? ? roundrobin ?輪詢選擇提供者
? ? leastactive ?最少活躍調用數,同樣活躍數的隨機。活躍數指調用前后計數差。使慢的提供者收到更少請求,由于越慢的提供者的調用前后計數差會越大。
? ?consistenthash 一致性hash,同樣參數的請求發到同一臺機器上
5、服務版本號,服務分組
? ?通過服務版本號能夠控制服務的不兼容升級, 當同一個服務有多種實現時。能夠使用服務分組進行區分
6、多協議
? ?dubbo提供了多種協議給用戶選擇, 如dubbo、hessian、rmi 。
并可為每一個服務指定不同的傳輸協議,粒度能夠細化到方法。?不同服務在性能上適用不同協議進行傳輸,比方大數據用短連接協議,小數據大并發用長連接協議。
總結
- 上一篇: 梦到姥姥姥爷死了是什么征兆
- 下一篇: 梦到建房子打地基是什么意思