Dubbo學習筆記

1.什麼是Dubbo

隨着互聯網的不斷髮展,Web應用的業務量不斷擴大,常規的垂直應用架構已經無法應對。分佈式架構模式已經成爲計算機架構的必然趨勢。Dubbo是Alibaba開源的分佈式服務治理框架,目前已經捐獻給Apache,並且廣泛應用於中國各互聯網公司。官網地址。

  • Dubbo在應用時,只需要簡單進行配置,即可透明化接入Spring配置方式。只需要簡單配置,沒有任何API侵入,大大簡化了配置的複雜程度。
  • 軟負載均衡以及容錯機制,可在內網替代F5等硬件負載均衡器,降低成本,減少單點。
  • 服務自動註冊與發現,不再需要寫死服務提供方地址,註冊中心基於接口名查詢服務提供者的IP地址,並且能夠平滑添加或刪除服務提供者。

Dubbo與Spring Cloud之間的區別

Dubbo底層使用的是Netty這樣的NIO框架,基於TCP/IP協議傳輸的,配合以Hession序列化完成RPC通訊。

Spring Could 是基於HTTP協議Rest接口調用遠程過程的通訊,相對來說Http請求會有更大的報文,佔的帶寬也會更多。但是REST相對於RPC更加靈活,服務提供方和調用方的依賴只依靠一紙契約,不存在代碼級別的強依賴,這再強調快速演化的微服務環境下顯得更爲合適,至於注重通信速度還是方便靈活,需要具體情況具體考慮。

Dubbo 是SOA時代的產物,它的關注點主要在於服務的調用,流量分發,流量監控和熔斷。而Spring Cloud 誕生於微服務架構時代,考慮的是微服務治理的方方面面,另外由於依託了Spring、Spring Boot的優勢上,兩個框架在開始的目標就不一致,Dubbo定位服務治理、Spring boot是打造一個生態。

2. 爲什麼要用Dubbo

  • 在大規模服務化之前,應用可能只是通過 RMI 或 Hessian 等工具,簡單的暴露和引用遠程服務,通過配置服務的URL地址進行調用,通過 F5 等硬件進行負載均衡。

  • 當服務越來越多時,服務 URL 配置管理變得非常困難,F5 硬件負載均衡器的單點壓力也越來越大。 此時需要一個服務註冊中心,動態地註冊和發現服務,使服務的位置透明。並通過在消費方獲取服務提供方地址列表,實現軟負載均衡和 Failover,降低對 F5 硬件負載均衡器的依賴,也能減少部分成本。

  • 當進一步發展,服務間依賴關係變得錯蹤複雜,甚至分不清哪個應用要在哪個應用之前啓動,架構師都不能完整的描述應用的架構關係。 這時,需要自動畫出應用間的依賴關係圖,以幫助架構師理清關係。

  • 接着,服務的調用量越來越大,服務的容量問題就暴露出來,這個服務需要多少機器支撐?什麼時候該加機器? 爲了解決這些問題,第一步,要將服務現在每天的調用量,響應時間,都統計出來,作爲容量規劃的參考指標。其次,要可以動態調整權重,在線上,將某臺機器的權重一直加大,並在加大的過程中記錄響應時間的變化,直到響應時間到達閾值,記錄此時的訪問量,再以此訪問量乘以機器數反推總容量。
    在這裏插入圖片描述

3.Dubbo的核心功能

  • Remoting:遠程通訊,提供對多種 NIO 框架抽象封裝,包括“同步轉異步”和“請求-響應”模式的信息交換方式。
  • Cluster:服務框架,提供基於接口方法的透明遠程過程調用,包括多協議支持,以及軟負載均衡,失敗容錯,地址路由,動態配置等集羣支持。
  • Registry:服務註冊中心, 基於註冊中心目錄服務,使服務消費方能動態的查找服務提供方,使地址透明,使服務提供方可以平滑增加或減少機器。

4. Dubbo的架構

在這裏插入圖片描述

節點 角色說明
Provider 暴露服務的服務提供方
Consumer 調用遠程服務的服務消費方
Registry 服務註冊與發現的註冊中心
Monitor 統計服務的調用次數和調用時間的監控中心
Container 服務運行容器

Dubbo服務器註冊與發現流程

服務提供者(Provider):暴露服務的服務提供方,服務提供者在啓動時,向註冊中心註冊自己提供的服務。
服務消費者(Consumer): 調用遠程服務的服務消費方,服務消費者在啓動時,向註冊中心訂閱自己所需的服務,服務消費者,從提供者地址列表中,基於軟負載均衡算法,選一臺提供者進行調用,如果調用失敗,再選另一臺調用。
註冊中心(Registry):註冊中心返回服務提供者地址列表給消費者,如果有變更,註冊中心將基於長連接推送變更數據給消費者
監控中心(Monitor):服務消費者和提供者,在內存中累計調用次數和調用時間,定時每分鐘發送一次統計數據到監控中心

調用關係說明

  1. 服務容器負責啓動,加載,運行服務提供者。
  2. 服務提供者在啓動時,向註冊中心註冊自己提供的服務。
  3. 服務消費者在啓動時,向註冊中心訂閱自己所需的服務。
  4. 註冊中心返回服務提供者地址列表給消費者,如果有變更,註冊中心將基於長連接推送變更數據給消費者。
  5. 服務消費者,從提供者地址列表中,基於軟負載均衡算法,選一臺提供者進行調用,如果調用失敗,再選另一臺調用。
  6. 服務消費者和提供者,在內存中累計調用次數和調用時間,定時每分鐘發送一次統計數據到監控中心。

參考博客:
https://blog.csdn.net/ThinkWon/article/details/104390006

http://dubbo.apache.org/zh-cn/docs/user/preface/background.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章