dubbo由于是二進(jìn)制的傳輸读虏,占用帶寬會更少
springCloud是http協(xié)議傳輸,帶寬會比較多袁滥,同時使用http協(xié)議一般會使用JSON報文盖桥,消耗會更大
dubbo的開發(fā)難度較大,原因是dubbo的jar包依賴問題很多大型工程無法解決
springcloud的接口協(xié)議約定比較自由且松散题翻,需要有強有力的行政措施來限制接口無序升級
dubbo的注冊中心可以選擇zk,redis等多種葱轩,springcloud的注冊中心只能用eureka或者自研
但如果我選,我會用springcloud藐握。
從公司整體規(guī)劃:我不會選擇很久沒人維護(hù)的dubbo靴拱,重啟之后也未必是原班人馬
從程序員招聘難度:招springcloud的程序員會更好招,因為更新更炫
從系統(tǒng)結(jié)構(gòu)簡易程序:springcloud的系統(tǒng)結(jié)構(gòu)更簡單猾普、“注冊+springmvc=springcloud”袜炕,而dubbo各種復(fù)雜的Url,protocol初家,register偎窘,invocation,dubbofilter溜在,dubboSPI陌知,dubbo序列化..........炫技的成分更多一些
從性能:dubbo的網(wǎng)絡(luò)消耗小于springcloud,但是在國內(nèi)95%的公司內(nèi)掖肋,網(wǎng)絡(luò)消耗不是什么太大問題仆葡,如果真的成了問題,通過壓縮志笼、二進(jìn)制沿盅、高速緩存、分段降級等方法纫溃,很容易解
從開發(fā)難易度:dubbo的神坑是jar包依賴腰涧,開發(fā)階段難度極大,我曾經(jīng)帶一個三十人的團(tuán)隊紊浩,因為jar包升級問題窖铡,把每個人的電腦都操作過,尤其每個人電腦的庫路徑坊谁、命令费彼、快捷鍵、鍵盤呜袁,鼠標(biāo)快慢都不一樣敌买,那會兒我默默的在心中艸了dubbo發(fā)明者全家老小一百二十遍。springcloud比較自由阶界,但帶來的問題是無法“強力約束接口規(guī)范”虹钮,建議用行政方式解決,且我們團(tuán)隊的強力行政約束做的還是比較好的膘融,在接口管控層面比較強效芙粱,一個沒有行政組織能力的IT團(tuán)隊真的是個廢渣,用什么框架都不好使氧映。
從后續(xù)改進(jìn):dubbo的改進(jìn)是通過dubbofilter春畔,很多東西沒有,需要自己繼承,如監(jiān)控律姨,如日志振峻,如限流,如追蹤择份。springcloud自己帶了很多監(jiān)控扣孟、限流措施,但是功能可能和歐美習(xí)慣相同荣赶,國內(nèi)需要進(jìn)行適當(dāng)改造凤价,但更簡單,就是ServletFilter而已拔创,但是總歸比dubbo多一些東西是好的
從配套措施:springcloud一直宣稱自己是“一套全方面的解決方案”利诺。。剩燥。慢逾。。躏吊。我起初信了氛改,后來發(fā)現(xiàn)上當(dāng)了,實話說:有比伏,但是不是很健全胜卤,100分打50的樣子,很多你還需要改造赁项。而DUBBO相反葛躏,一直宣稱自己是“一套全方面的服務(wù)化方案”。悠菜。舰攒。。悔醋。摩窃。純服務(wù)化頂個鳥用,任何系統(tǒng)都是相輔相成配套的芬骄,一個完整的系統(tǒng)猾愿,要有前臺、中臺账阻、后臺蒂秘、前臺包括前端和交互,中臺包括交易淘太、任務(wù)姻僧、數(shù)據(jù)规丽,后臺包括財務(wù)、賬戶撇贺、管理...........單純的服務(wù)化解決不了“任何問題”赌莺,唯有體系才能解決。在這個層面显熏,springcloud是個往“體系”方向發(fā)展的方案雄嚣,而dubbo僅是個工具而已,兩者相比喘蟆,就好比始祖鳥與草履蟲的區(qū)別。
從技術(shù)實力層面:對比雙方的源碼鼓鲁,不得不說dubbo作者的技術(shù)能力要高于springCloud蕴轨,而springBoot的作者技術(shù)能力要高于dubbo。即:springboot>dubbo>springcloud骇吭。我喜歡springboot這種大道至簡的風(fēng)格橙弱,keep it simple and stupid。而dubbo好嘛......你先看看dubboSPI燥狰,再看看Protocol$Adpative里面那一群繞來繞去的瞎幾把繞的玩意兒棘脐,你會迅速判斷出:這群屌絲在炫技。盡管dubbo從上之下分為十層四五十個組件龙致,第一感官上是哇塞好全面好偉大的樣子蛀缝,但深入之后你會覺得,這技術(shù)是很炫目代,設(shè)計的確實很全面屈梁,但是用不到,例如:請各位大神給我解釋一下榛了,在zookeeper地址中在讶,使用逗號分隔和分號分隔地址的區(qū)別。霜大。构哺。。战坤。用途不大曙强,但是代碼里為了這個就走向了“完全不同”的一條分支。用俗語評價湖笨,就是“臃腫且無用代碼過多旗扑,在文檔里還非得為了這個說出123456來”。說完dubbo再說springCloud........它沒有技術(shù)含量慈省,完全沒有臀防,就是一堆簡單組件拼裝在一起眠菇,如configserver、eurekaserver袱衷、robin捎废、feignClient、htstrix等致燥,每個都特別簡單登疗,沒什么技術(shù)含量,但我喜歡這種的嫌蚤,就喜歡這種大道至簡的簡單辐益。
最后說springBoot,我要用“純粹”兩個字來評價這個框架脱吱,真的很純粹智政,并且從其代碼架構(gòu)的總體思路一致性,目標(biāo)的純粹性箱蝠,具體模塊的干凈利落续捂,確實是個好框架,值得大家一讀宦搬。
從系統(tǒng)應(yīng)用層面:在技術(shù)實力滿分一百能打85分的鄙人的眼中牙瓢,dubbo和springcloud,不就是兩個框架么间校?我們是要拯救世界的人矾克,這倆塊鵝卵石一塊圓的一塊方的,能墊腳就行撇簿,沒有區(qū)別聂渊。
簡而言之,Dubbo確實類似于Spring Cloud的一個子集四瘫,Dubbo功能和文檔完善汉嗽,在國內(nèi)有很多的成熟用戶,然而鑒于Dubbo的社區(qū)現(xiàn)狀(曾經(jīng)長期停止維護(hù)找蜜,2017年7月31日團(tuán)隊又宣布重點維護(hù))饼暑,使用起來還是有一定的門檻。
Dubbo具有調(diào)度洗做、發(fā)現(xiàn)弓叛、監(jiān)控、治理等功能诚纸,支持相當(dāng)豐富的服務(wù)治理能力撰筷。Dubbo架構(gòu)下,注冊中心對等集群畦徘,并會緩存服務(wù)列表已被數(shù)據(jù)庫失效時繼續(xù)提供發(fā)現(xiàn)功能毕籽,本身的服務(wù)發(fā)現(xiàn)結(jié)構(gòu)有很強的可用性與健壯性抬闯,足夠支持高訪問量的網(wǎng)站。
雖然Dubbo 支持短連接大數(shù)據(jù)量的服務(wù)提供模式关筒,但絕大多數(shù)情況下都是使用長連接小數(shù)據(jù)量的模式提供服務(wù)使用的溶握。所以,對于類似于電商等同步調(diào)用場景多并且能支撐搭建Dubbo 這套比較復(fù)雜環(huán)境的成本的產(chǎn)品而言蒸播,Dubbo 確實是一個可以考慮的選擇睡榆。但如果產(chǎn)品業(yè)務(wù)中由于后臺業(yè)務(wù)邏輯復(fù)雜、時間長而導(dǎo)致異步邏輯比較多的話袍榆,可能Dubbo 并不合適胀屿。同時,對于人手不足的初創(chuàng)產(chǎn)品而言蜡塌,這么重的架構(gòu)維護(hù)起來也不是很方便碉纳。
Spring Cloud由眾多子項目組成,如Spring Cloud Config馏艾、Spring Cloud Netflix、Spring Cloud Consul 等奴愉,提供了搭建分布式系統(tǒng)及微服務(wù)常用的工具琅摩,如配置管理、服務(wù)發(fā)現(xiàn)锭硼、斷路器房资、智能路由、微代理檀头、控制總線轰异、一次性token、全局鎖暑始、選主搭独、分布式會話和集群狀態(tài)等,滿足了構(gòu)建微服務(wù)所需的所有解決方案廊镜。比如使用Spring Cloud Config 可以實現(xiàn)統(tǒng)一配置中心牙肝,對配置進(jìn)行統(tǒng)一管理;使用Spring Cloud Netflix 可以實現(xiàn)Netflix 組件的功能 - 服務(wù)發(fā)現(xiàn)(Eureka)嗤朴、智能路由(Zuul)配椭、客戶端負(fù)載均衡(Ribbon)。
但它并沒有重復(fù)造輪子雹姊,而是選用目前各家公司開發(fā)的比較成熟的股缸、經(jīng)得住實踐考驗的服務(wù)框架(我們需要特別感謝Netflix ,這家很早就成功實踐微服務(wù)的公司吱雏,幾年前把自家?guī)缀跽麄€微服務(wù)框架棧貢獻(xiàn)給了社區(qū)敦姻,Spring Cloud主要是對Netflix開源組件的進(jìn)一步封裝)瘾境,通過Spring Boot 進(jìn)行封裝集成并簡化其使用方式√媾基于Spring Boot寄雀,意味著其使用方式如Spring Boot 簡單易用;能夠與Spring Framework陨献、Spring Boot盒犹、Spring Data 等其他Spring 項目完美融合,意味著能從Spring獲得巨大的便利眨业,意味著能減少已有項目的遷移成本急膀。
其實,從社區(qū)活躍度和功能完整度龄捡,再對照業(yè)務(wù)需求和團(tuán)隊狀況卓嫂,基本可以確定如何選型。這里分享網(wǎng)易考拉海購實踐以及團(tuán)隊選型的心聲:
當(dāng)前開源上可選用的微服務(wù)框架主要有Dubbo聘殖、Spring Cloud等晨雳,鑒于Dubbo完備的功能和文檔且在國內(nèi)被眾多大型互聯(lián)網(wǎng)公司選用,考拉自然也選擇了Dubbo作為服務(wù)化的基礎(chǔ)框架奸腺。其實相比于Dubbo餐禁,Spring Cloud可以說是一個更完備的微服務(wù)解決方案,它從功能性上是Dubbo的一個超集突照,個人認(rèn)為從選型上對于一些中小型企業(yè)Spring Cloud可能是一個更好的選擇帮非。提起Spring Cloud,一些開發(fā)的第一印象是http+JSON的rest通信讹蘑,性能上難堪重用末盔,其實這也是一種誤讀。
微服務(wù)選型要評估以下幾點:內(nèi)部是否存在異構(gòu)系統(tǒng)集成的問題座慰;備選框架功能特性是否滿足需求陨舱;http協(xié)議的通信對于應(yīng)用的負(fù)載量會否真正成為瓶頸點(Spring Cloud也并不是和http+JSON強制綁定的,如有必要Thrift角骤、protobuf等高效的RPC隅忿、序列化協(xié)議同樣可以作為替代方案);社區(qū)活躍度邦尊、團(tuán)隊技術(shù)儲備等背桐。作為已經(jīng)沒有團(tuán)隊持續(xù)維護(hù)的開源項目,選擇Dubbo框架內(nèi)部就必須要組建一個維護(hù)團(tuán)隊蝉揍,先不論你要準(zhǔn)備要集成多少功能做多少改造链峭,作為一個支撐所有工程正常運轉(zhuǎn)的基礎(chǔ)組件,問題的及時響應(yīng)與解答又沾、重大缺陷的及時修復(fù)能力就已足夠重要弊仪。
詳見網(wǎng)易考拉海購Dubbok框架優(yōu)化詳解
鑒于服務(wù)發(fā)現(xiàn)對服務(wù)化架構(gòu)的重要性熙卡,再補充一點:Dubbo 實踐通常以ZooKeeper 為注冊中心(Dubbo 原生支持的Redis 方案需要服務(wù)器時間同步,且性能消耗過大)励饵。針對分布式領(lǐng)域著名的CAP理論(C——數(shù)據(jù)一致性驳癌,A——服務(wù)可用性,P——服務(wù)對網(wǎng)絡(luò)分區(qū)故障的容錯性)役听,Zookeeper 保證的是CP 颓鲜,但對于服務(wù)發(fā)現(xiàn)而言,可用性比數(shù)據(jù)一致性更加重要 典予,而 Eureka 設(shè)計則遵循AP原則 甜滨。
作者:純潔的微笑
鏈接:https://www.zhihu.com/question/45413135/answer/128315403
來源:知乎
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)瘤袖,非商業(yè)轉(zhuǎn)載請注明出處衣摩。
為什么選擇使用Spring Cloud而放棄了Dubbo
可能大家會問,為什么選擇了使用Dubbo之后捂敌,而又選擇全面使用Spring Cloud呢艾扮?其中有幾個原因:
1)從兩個公司的背景來談:Dubbo,是阿里巴巴服務(wù)化治理的核心框架占婉,并被廣泛應(yīng)用于中國各互聯(lián)網(wǎng)公司栏渺;Spring Cloud是大名鼎鼎的Spring家族的產(chǎn)品。阿里巴巴是一個商業(yè)公司锐涯,雖然也開源了很多的頂級的項目,但從整體戰(zhàn)略上來講填物,仍然是服務(wù)于自身的業(yè)務(wù)為主纹腌。Spring專注于企業(yè)級開源框架的研發(fā),不論是在中國還是在世界上使用都非常廣泛滞磺,開發(fā)出通用升薯、開源、穩(wěn)健的開源框架就是他們的主業(yè)击困。
2)從社區(qū)活躍度這個角度來對比涎劈,Dubbo雖然也是一個非常優(yōu)秀的服務(wù)治理框架,并且在服務(wù)治理阅茶、灰度發(fā)布蛛枚、流量分發(fā)這方面做的比Spring Cloud還好,除過當(dāng)當(dāng)網(wǎng)在基礎(chǔ)上增加了rest支持外脸哀,已有兩年多的時間幾乎都沒有任何更新了蹦浦。在使用過程中出現(xiàn)問題,提交到github的Issue也少有回復(fù)撞蜂。
相反Spring Cloud自從發(fā)展到現(xiàn)在盲镶,仍然在不斷的高速發(fā)展侥袜,從github上提交代碼的頻度和發(fā)布版本的時間間隔就可以看出,現(xiàn)在Spring Cloud即將發(fā)布2.0版本溉贿,到了后期會更加完善和穩(wěn)定枫吧。
- 從整個大的平臺架構(gòu)來講,dubbo框架只是專注于服務(wù)之間的治理宇色,如果我們需要使用配置中心九杂、分布式跟蹤這些內(nèi)容都需要自己去集成,這樣無形中使用dubbo的難度就會增加代兵。Spring Cloud幾乎考慮了服務(wù)治理的方方面面尼酿,更有Spring Boot這個大將的支持,開發(fā)起來非常的便利和簡單植影。
4)從技術(shù)發(fā)展的角度來講裳擎,Dubbo剛出來的那會技術(shù)理念還是非常先進(jìn),解決了各大互聯(lián)網(wǎng)公司服務(wù)治理的問題思币,中國的各中小公司也從中受益不少鹿响。經(jīng)過了這么多年的發(fā)展,互聯(lián)網(wǎng)行業(yè)也是涌現(xiàn)了更多先進(jìn)的技術(shù)和理念谷饿,Dubbo一直停滯不前惶我,自然有些掉隊,有時候我個人也會感到有點可惜博投,如果Dubbo一直沿著當(dāng)初的那個路線發(fā)展绸贡,并且延伸到周邊,今天可能又是另一番景象了毅哗。
Spring 推出Spring Boot/Cloud也是因為自身的很多原因听怕。Spring最初推崇的輕量級框架,隨著不斷的發(fā)展也越來越龐大虑绵,隨著集成項目越來越多尿瞭,配置文件也越來越混亂,慢慢的背離最初的理念翅睛。隨著這么多年的發(fā)展声搁,微服務(wù)、分布式鏈路跟蹤等更多新的技術(shù)理念的出現(xiàn)捕发,Spring急需一款框架來改善以前的開發(fā)模式疏旨,因此才會出現(xiàn)Spring Boot/Cloud項目,我們現(xiàn)在訪問Spring官網(wǎng)爬骤,會發(fā)現(xiàn)Spring Boot和Spring Cloud已經(jīng)放到首頁最重點突出的三個項目中的前兩個充石,可見Spring對這兩個框架的重視程度。
總結(jié)一下,dubbo曾經(jīng)確實很牛逼骤铃,但是Spring Cloud是站在近些年技術(shù)發(fā)展之上進(jìn)行開發(fā)拉岁,因此更具技術(shù)代表性。
spring cloud整機惰爬,dubbo需要自己組裝喊暖;整機的性能有保證,組裝的機子更自由撕瞧。
作者:Crazy曉楓
來源:CSDN
原文:https://blog.csdn.net/u010664947/article/details/80007767
版權(quán)聲明:本文為博主原創(chuàng)文章陵叽,轉(zhuǎn)載請附上博文鏈接!