作為乙個分布式服務治理框架,dubbo做的非常好,在業界使用很廣,所以最近研究了下這個框架。任何框架要研究其原理最好的辦法之一就是沿著其執行流程進行追蹤,這樣就能從上到下,從粗到細對乙個系統進行了解。今天,我們要說明的問題就是dubbo如何啟動的。
dubbo是基於spring進行開發的,而且擴充套件了spring的xml schema和註解標籤,其實這裡也就是整個dubbo的切入點。dubbo除去依賴其他的第三方框架外,整個框架只有乙個jar包,可謂是精緻。在這個jar包的net-inf目錄下有兩個檔案:spring.handlers和spring.schemas。其中spring.schemas中定義的就是擴充套件的spring配置標籤,而且spring.handlers中定義的就是這些schema的處理類,就是這個類將dubbo元件「插入」到spring這個平台裡的。(關於如何自定義spring配置的schema,網上資料很多,這裡只簡單概括)spring在啟動的時候會掃瞄met-inf下所有的spring.handlers等檔案,找到其中的標籤處理類,並執行其init方法。
這裡要插個知識點「spring的啟動過程」。spring啟動過程,從巨集觀角度來講分為兩個階段。第乙個階段完成spring配置檔案的解析,或者spring註解的解析最終將這些配置或者註解解析成beandefinition物件,然後進入下乙個階段,比如我們經常在spring配置檔案中使用的佔位符替換工作就是在這個階段完成的。在第二個階段中,spring用之前解析好的beandefinition物件來完成bean的初始化和組裝工作,比如我們使用spring事務時的事務proxy就是這個階段完成注入到service物件中的。
這就是dubbo的巨集觀啟動流程,這個對於理解dubbo框架的原理能起到促進作用,網上也沒有明確的文章進行說明,這裡做個補充。希望能幫大家解決一些問題。
dubbo是如何「插入」到spring框架中的
作為乙個分布式服務治理框架,dubbo做的非常好,在業界使用很廣,所以最近研究了下這個框架。任何框架要研究其原理最好的辦法之一就是沿著其執行流程進行追蹤,這樣就能從上到下,從粗到細對乙個系統進行了解。今天,我們要說明的問題就是dubbo如何啟動的。dubbo是基於spring進行開發的,而且擴充套件...
Dubbo是如何整合Zookeeper
zookeeper作為生產環境比較穩定可靠的目錄服務元件,在各種分布式環境中提供了廣泛的應用,譬如在metaq dubbo redis分布式集群中,作為服務註冊中心使用,本篇主要講述一下dubbo是如何整合zk的,不涉及zk實現原理。1 抽象,類圖如下 這裡的抽象過程實際上可以在以後的開發中參考借鑑...
Dubbo服務如何註冊到多個註冊中心
name mock groupa rpc dubbo registryid cn ot protocol zookeeper address dubbo registryid cn opt protocol zookeeper address default false dubbo service ...