Dubbo亮點總結

2021-07-03 13:03:21 字數 1811 閱讀 9784

dubbo是阿里巴巴的乙個開源rpc專案,可在進行訪問

類似的產品有hessian、spring httpinvoke 等。  

dubbo的亮點總結如下:

1、服務註冊中心

相比hessian類rpc框架,dubbo有自己的服務中心, 寫好的服務可以註冊到服務中心, 客戶端從服務中心尋找服務,然後再到相應的服務提供者機器獲取服務

通過服務中心可以實現集群、負載均衡、高可用(容錯) 等重要功能

服務中心一般使用zookeeper實現, 也有redis和其他一些方式 。 以使用zookeeper作為服務中心為例, 服務提供者啟動後會在zookeeper的 /dubbo節點下建立提供的服務節點,包含服務提供者ip、port等資訊。 服務提供者關閉時會從zookeeper中移除對應的服務。

服務使用者會從註冊中心zookeeper中尋找服務,同乙個服務可能會有多個提供者, dubbo會幫我們找到合適的服務提供者

2、集群容錯

當服務呼叫失敗時(比如響應超時),根據我們的業務不同,可以使用不同的策略來應對這種失敗。 

比如我們呼叫的服務是乙個查詢服務,不會修改資料庫,那麼可以給該服務設定容錯方式為failover , 當呼叫失敗時,自動切換到其他服務提供者去呼叫,當失敗次數超過指定重試次數,那麼就丟擲錯誤。

如果服務是更新資料的服務,那就不能使用失敗重試的方式了, 因為這樣可能產生資料重複修改的問題,比如呼叫提供者a的插入使用者方法,但是該方法業務邏輯複雜,執行過程很慢,導致響應超時, 那麼此時如果再去呼叫另外乙個服務提供者的插入使用者方法,將會又重複插入同乙個使用者。   對於這種型別的服務,可以使用容錯方式為failfast,如果第一次呼叫失敗,立即報錯,不需要重試。

另外還有下面幾種容錯型別

failsafe 出現錯誤,直接忽略,不重試也不報錯

failback 失敗後不報錯,會將該失敗請求,定時重發,適合訊息通知型別的服務

forking    並行呼叫多個伺服器,只要在某一台提供者上面成功,那麼方法返回, 適合實時性要求較高的查詢服務, 但是要犧牲效能。因為每台伺服器會做同乙個操作

broadcast 廣播呼叫所有服務提供者,逐個呼叫,任意一台報錯則報錯。  適合與更新每台提供者上面的快取  這泓型別的服務

3、直連提供者

在開發階段為了方便測試,通常系統客戶端能指定呼叫某個服務提供者,那麼可以在引用服務時加乙個url引數去指定服務提供者

4、負載均衡

當同乙個服務有多個提供者在提供服務時, 客戶端如何正確的選擇提供者實現負載均衡dubbo也給我們提供了幾種方案

random  隨機選提供者,並可以給提供者設定權重

roundrobin  輪詢選擇提供者

leastactive  最少活躍呼叫數,相同活躍數的隨機,活躍數指呼叫前後計數差。

使慢的提供者收到更少請求,因為越慢的提供者的呼叫前後計數差會越大。

consistenthash 一致性hash,相同引數的請求發到同一臺機器上

5、服務版本,服務分組

通過服務版本可以控**務的不相容公升級, 當同乙個服務有多種實現時,可以使用服務分組進行區分

6、多協議

dubbo提供了多種協議給使用者選擇, 如dubbo、hessian、rmi 。 並可為每個服務指定不同的傳輸協議,粒度可以細化到方法, 不同服務在效能上適用不同協議進行傳輸,比如大資料用短連線協議,小資料大併發用長連線協議。

dubbo總結 dubbo的使用

dubbo是乙個微服務框架,dubbo也是有乙個服務註冊中心 zookeeper 服務提供者以及服務消費者。服務提供者需要乙個暴露介面的工程,用來服務消費的呼叫。服務提供者的介面實現類繼承暴露介面工程的介面。dubbo呼叫流程 1.服務容器負責啟動,載入,執行服務提供者 2.服務提供者在啟動時,向註...

dubbo使用總結

rest 客戶端呼叫亂碼 將服務端的 produces 中加入charset utf 8 dubbo暴露的rest服務時,如果使用客戶端引用介面jar方式呼叫,必須在介面上面新增rest annotation,否則會報錯 urls to invokers error invokerurls.size...

dubbo個人總結

dubbo,分布式服務框架,rpc服務框架。註冊中心zk,redis.使用大多為zk 註冊流程 最後一圖服務提供者啟動時向 dubbo com.foo.barservice providers目錄下寫入url 服務消費者啟動時訂閱 dubbo com.foo.barservice providers...