Dubbo源碼解析(一)---架構概述

一 前言

   之前的文章描述瞭如何簡單的搭建dubbo服務,會用只是邁入了初級階段。要想更好的理解原理,只能通過源碼。爲什麼要看源碼呢?因爲好的源碼是一些大牛級別的工程師嘔心瀝血的結晶,這裏面滲透着好多東西,比如設計模式,算法,以及我們可以更清楚的從開發者的角度去理解代碼。所以在接下來的時間裏會記錄些dubbo核心源碼的心得。

二 dubbo核心模塊

   

 

核心模塊職責介紹:


dubbo ­common 
   通用模塊,定義了幾乎所有dubbo模塊都會使用到的一些通用與業務領域無關的工具類(io處理、日誌處理、配置處理、類處理等等),線程池擴展、二進制代碼處理、class編譯處理、json處理、數據存儲接口,系統版本號等等通用的類和接口。
dubbo ­rpc ­api 
   分佈式服務框架的核心是rpc,這是最基本的功能,這個模塊定義了rpc的一些抽象的rpc接口和實現類,包括服務發佈,服務調用代理,遠程調用結果及異常,rpc調用網絡協議,rpc調用監聽器和過濾器等等。該模塊提供了默認的基於dubbo協議的實現模塊,還提供了hessian、http、rest、rmi、thrift和webservice等協議的實現,還實現了injvm的本地調用實現,靈活性強,非常通用,能夠滿足絕大多數項目的使用需求,而且還可以自行實現rpc協議。
dubbo­ registry ­api 
   註冊中心也是最重要的組成部分,它是rpc中的consumer和provider兩個重要角色的協調者。該項目定義了核心的註冊中心接口和實現。具體實現留給了其它項目。有一個默認的實現模塊,組冊中心提供了mutilcast、redis和zookeeper等多種方式的註冊中心實現,用於不同的使用場景。
dubbo­ remoting ­api 
   該模塊是dubbo中的遠程通訊模塊。rpc的實現基礎就是遠程通訊,consmer要調用provider的遠程方法必須通過網絡遠程通訊實現。該模塊定義了遠程傳輸器、終端(endpoint)、客戶端、服務端、編碼解碼器、數據交換、緩衝區、通訊異常定義等等核心的接口及類構成。他是對於遠程網絡通訊的抽象。提供了諸如netty、mina、grizzly、http、p2p和zookeeper的協議和技術框架的實現方式。
dubbo ­monitor ­api 
    該模塊是dubbo的監控模塊,通過該模塊可以監控服務調用的各種信息,例如調用耗時、調用量、調用結果等等,監控中心在調用過程中收集調用的信息,發送到監控服務,在監控服務中可以存儲這些信息,對這些數據進行統計分析,最終可以產生各種維護的調用監控信息。dubbo默認提供了一個實現,該實現非常簡單,只是作爲默認的實現範例,生產環境使用價值不高,需要自行實現自己的監控。
dubbo ­container ­api 
   dubbo服務運行容器api模塊。定義了啓動容器列表的包含應用程序入口main方法的類Main;定義了容器接口Container,該接口包含了啓動和停止方法定義;還有一些通用的分頁功能的相關類。dubbo內置了javaconfig、jetty、log4j、logback和spring幾種容器的實現。
dubbo ­config ­api 
   從圖中可以看出改模塊依賴了幾乎所有的其它模塊,他是dubbo的配置模塊,通過它的配置和組裝將dubbo組件的多個模塊整合在一起給最終的開發者提供有價值的分佈式服務框架。通過它的配置可以讓開發者選擇符合自己需求和使用場景的模塊和技術,它定義了面向dubbo使用者的各種信息配置,比如服務發佈配置、方法發佈配置、服務消費配置、應用程序配置、註冊中心配置、協議配置、監控配置等等。另外還有一個spring的配置模塊,定義了一些spring的XML Schema,能夠大大簡化使用dubbo的配置,可以大大降低spring使用場景的學習和配置成本。
dubbo ­cluster 
   該模塊是dubbo實現的集羣模塊。支持遠程服務的集羣,支持多種集羣調用策略,包括failover,failsafe,failfast,failback,forking等。並且支持目錄服務,註冊中心就是目錄服務的一種實現,支持負載均衡,該模塊還實現了路由器特性,此外還包括合併技術,當將調用請求分發給所有的服務提供者,則會返回多個結果,則將多個結果合併需要用到合併器的實現,該模塊也是非常重要的一個模塊。
dubbo ­admin 
該項目是一個web應用,可以獨立部署,它可以管理dubbo服務,通過該管理應用可以連接註冊中心,重點是讀取註冊中心中的信息,也可以通過該應用改寫註冊中心的信息,從而實現動態的管控服務。該模塊的功能也非常簡單,對於實際的生產使用場景,還需要對該應用的功能進行擴展和定製,以滿足實際的使用場景。

 

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