Dubbo零基礎學習指南

Dubbo

  1. 爲什麼出現Dubbo
    1. 隨着現在互聯網行業的發展,越來越多的框架、中間件、容器等開源技術不斷地湧現,更好地來服務於業務,解決實現業務的問題。
    2. 隨着業務的發展、用戶量的增長,系統數量增多,調用依賴關係也變得複雜,爲了確保系統高可用、高併發的要求,系統的架構也從單體時代慢慢遷移至服務SOA時代,根據不同服務對系統資源的要求不同,我們可以更合理的配置系統資源,使系統資源利用率最大化。
  2. 系統服務的演變過程
    1. 單一應用框架(ORM)
      • 將所有功能部署在一起,減少部署節點和成本。
    2. 垂直應用架構(MVC)
      • 應用拆成互不相干的幾個應用,以提升效率
    3. 分佈式應用架構
      • 核心業務抽取出來,作爲獨立的服務,逐漸形成穩定的服務中心,使前端應用能更快速的響應多變的市場需求
    4. 流動計算架構
      • 用於提高機器利用率的資源調度和治理中心(SOA) 是關鍵
  3. 電商系統的演變可以看出應用系統架構演變的過程:
  4. Dubbo是什麼
    1. 一款分佈式服務框架
    2. 高性能和透明化的RPC遠程服務調用方案
    3. SOA服務治理方案
  5. Dubbo的架構
    1. 上圖的流程:
      • 0.服務容器負責啓動,加載,運行服務提供者。
      • 1.服務提供者在啓動時,向註冊中心註冊自己提供的服務。
      • 2.服務消費者在啓動時,向註冊中心訂閱自己所需的服務。
      • 3.註冊中心返回服務提供者地址列表給消費者,如果有變更,註冊中心將基於長連接推送變更數據給消費者。
      • 4.服務消費者,從提供者地址列表中,基於軟負載均衡算法,選一臺提供者進行調用,如果調用失敗,再選另一臺調用。
      • 5.服務消費者和提供者,在內存中累計調用次數和調用時間,定時每分鐘發送一次統計數據到監控中心
  6. Dubbo註冊中心
    1. 註冊服務:
      • 對於服務提供方,它需要發佈服務,而且由於應用系統的複雜性,服務的數量、類型也不斷膨脹;
    2. 消息訂閱
      • 對於服務消費方,它最關心如何獲取到它所需要的服務,而面對複雜的應用系統,需要管理大量的服務調用。
    3. 兩個身份都有:
      • 對於服務提供方和服務消費方來說,他們還有可能兼具這兩種角色,即既需要提供服務,又需要消費服務。
  7. 註冊中心的目的:
    1. 通過將服務統一管理起來,可以有效地優化內部應用對服務發佈/使用的流程和管理。服務註冊中心可以通過特定協議來完成服務對外的統一。
  8. Dubbo提供的註冊中心有幾種類型:
    1. Multicast註冊中心
    2. Zookeeper註冊中心
    3. Redis註冊中心
    4. Simple註冊中心
  9. Dubbo優點:
    1. 透明化的遠程方法調用
      • 像調用本地方法一樣調用遠程方法;只需簡單配置,沒有任何API侵入
    2. 軟負載均衡及容錯機制
      • 可在內網替代nginx lvs等硬件負載均衡器
    3. 服務註冊中心自動註冊 & 配置管理
      • 不需要寫死服務提供者地址,註冊中心基於接口名自動查詢提供者ip
      • 使用類似zookeeper等分佈式協調服務作爲服務註冊中心,可以將絕大部分項目配置移入zookeeper集羣
    4. 服務接口監控與治理
      • Dubbo-admin與Dubbo-monitor提供了完善的服務接口管理與監控功能,針對不同應用的不同接口,可以進行 多版本,多協議,多註冊中心管理
  10. Dubooq缺點
    1. 只支持Java語言
  11. 使用Dubbo步驟
    1. 安裝Zookeeper啓動;
    2. 創建Maven項目,構建:Dubbo+Zookeeper+Spring
    3. 安裝Dubbo-admin,監控
  12. Dubbo註冊中心爲什麼採用Zookeeper?
    1. Zookeeper是一個分佈式的服務框架,是樹型的目錄服務的數據存儲,能做到集羣管理數據 ,這裏能很好的作爲Dubbo服務的註冊中心。
    2. Dubbo能與Zookeeper做到集羣部署,當提供者出現斷電等異常停機時,Zookeeper註冊中心能自動刪除提供者信息,當提供者重啓時,能自動恢復註冊數據,以及訂閱請求。
  13. 安裝Zookeeper
    1. 在Zookeeper官網中下載Zookeeper發行包並解壓:
    2. 複製Zookeeper配置文件
      • 將Zookeeper安裝目錄的conf子文件夾中的zoo_sample.cfg複製一份並重命名爲zoo.cfg
  14. 運行Zookeeper
    1. 執行Zookeeper安裝(解壓)目錄中bin子文件夾的zkServer.cmd啓動Zookeeper
  15. 利用Maven創建Dubbo項目,主要分爲以下組成部分:
    1. 項目Dubbo-consumer : 調用遠程服務;
    2. 項目Dubbo-provider : 提供遠程服務。
  16. Provider和Consumer需要提供相同的業務服務接口
  17. 爲項目編輯pom文檔
    1. 服務的提供者和消費者需要依賴的庫相同,主要有Netty依賴、Zookeeper依賴、ZookeeperClient依賴、Dubbo依賴、Spring依賴等
  18. Provider中需要提供業務接口的實現:

  19. Provider在Spring容器中聲明Dubbo的服務:
  20. Provider啓動遠程服務

  21. Consumer在Spring容器中聲明需要調用的服務:

  22. Consumer調用遠程服務:
  23. Dubbo管理控制檯功能:
    1. 路由規則,動態配置,服務降級,訪問控制,權重調整,負載均衡。
  24. Dubbo控制檯的使用
    1. 下載dubbo-admin,將dubbo-admin的war包發佈到tomcat中,再運行tomcat即可,缺省用戶名和密碼均爲root:
  25. 總結Dubbo
    1. Dubbo是一款分佈式服務框架,一個高性能和透明化的RPC遠程服務調用方案,一個SOA服務治理方案。
    2. Dubbo每天爲2千多個服務提供大於30億次訪問量支持,並被廣泛應用於阿里巴巴集團的各成員站點以及別的公司的業務中。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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