dubbo是spring cloud的兩大微服務架構(gòu)之一媒熊,按照微服務部署吞获,其結(jié)構(gòu)如下:
對比于Netflix渔嚷,sentinel處理了熔斷柳爽,增加了seata處理事務媳握。
Spring Cloud Netflex vs Spring Cloud Dubbo
組成部分 | Spring Cloud Netflex | Spring Cloud Dubbo |
---|---|---|
組成風格 | 和Spring boot腳手架風格一致,由多個組件完成各自獨立的功能磷脯,由注解或配置組裝成新組件 | dubbo一個組件實現(xiàn)了絕大部分功能 |
rpc | 直接由http作為rpc調(diào)用蛾找,使用tomcat完成通信,數(shù)據(jù)采用http協(xié)議赵誓、spring mvc完成了方法查找打毛,jacson進行序列化和反序列化柿赊, | dubbo提供了豐富的rpc調(diào)用,包括調(diào)用協(xié)議幻枉、序列化反序列化協(xié)議碰声,由netty作為通信層 |
注冊中心 | 支持多種注冊中心 | 支持多注冊中心,如同時配置nacos和zookeeper |
配置中心 | 支持多種配置中心熬甫,如spring cloud config | 支持多種配置中心胰挑,與nacos、zookeeper等配套比較好 |
網(wǎng)關(guān) | 使用常用網(wǎng)關(guān)接入椿肩,默認Spring Cloud Config | 使用常用網(wǎng)關(guān)接入 |
MQ | 支持多種MQ | 一般使用阿里RocketMQ |
數(shù)據(jù)庫 | 支持多種數(shù)據(jù)庫 | 知此恨多種數(shù)據(jù)庫 |
接口調(diào)用 | 使用openfeign組件瞻颂,支持http調(diào)用 | 支持多種協(xié)調(diào)調(diào)用,dubbo默認支持 |
負載均衡 | 使用rabbon組件支持負載均衡 | dubbo默認支持 |
限流降級 | 使用hystrix組件支持熔斷限流降級 | 使用sentinal支持熔斷 |
dubbo的擴展點
dubbo的整體架構(gòu)圖設(shè)計如下:
重點要看明白的是所有綠色的地方都是接口定義郑象,都是用擴展點實現(xiàn)的贡这。
在dubbo的META-INF/dubbo.internal下定義了dubbo所有的擴展點:
這些擴展點就是綠色接口的實現(xiàn)。此時思考一個問題厂榛,有這么多擴展點盖矫,是什么時候加載的呢?
通過url實現(xiàn)击奶,dubbo有很多自定以的url辈双,通過url中的關(guān)鍵字控制使用那種擴展點。
dubbo的優(yōu)勢
看了如上擴展點圖列正歼,就很容易明白dubbo的強大之處辐马。
- rpc通信,spring cloud netflex默認支持的是http作為rpc局义。而dubbo可以從擴展點看到喜爷,從傳輸協(xié)議、序列化等支持的種類非常多萄唇,可以適用于多種場景檩帐。
- dubbo支持多注冊中心,注意不是多種注冊中心另萤,即同時可以使用多個注冊中心湃密。
在擴展點框架下,dubbo的優(yōu)勢確實非常明顯四敞。
小結(jié)
對于Spring Cloud Netflix和Spring Cloud Dubbo泛源,你喜歡哪個呢?這恐怕要仁者見仁忿危,智者見智达箍。
從設(shè)計風格上來講:
- Spring boot是腳手架,是一種組合風格铺厨,Spring Cloud Netflex的設(shè)計哲學更加是一種組合風格缎玫,整體設(shè)計功能模塊分解清晰硬纤,設(shè)計讓人感覺優(yōu)美。
- 而Dubbo呢赃磨,通過一套擴展點框架筝家,基本可以完成所有功能,這種設(shè)計讓人感覺功能強大邻辉。特別是底層的通信設(shè)計
對于我來講溪王,我比較認同Spring boot的設(shè)計風格。那么對于你呢恩沛,蘿卜青菜在扰,你最愛哪個缕减?如果是你設(shè)計雷客,你傾向于那種設(shè)計?我在想桥狡,如果一開始就是netflex的設(shè)計師來設(shè)計dubbo搅裙,會設(shè)計成什么樣?