一、初識SpringCloud
微服務(wù)是一種架構(gòu)方式,最終肯定需要技術(shù)架構(gòu)去實施。
微服務(wù)的實現(xiàn)方式很多,但是最火的莫過于Spring Cloud了。為什么?
- 后臺硬:作為Spring家族的一員,有整個Spring全家桶靠山,背景十分強大。
- 技術(shù)強:Spring作為Java領(lǐng)域的前輩,可以說是功力深厚。有強力的技術(shù)團隊支撐,一般人還真比不了
- 群眾基礎(chǔ)好:可以說大多數(shù)程序員的成長都伴隨著Spring框架,試問:現(xiàn)在有幾家公司開發(fā)不用Spring?SpringCloud與Spring的各個框架無縫整合,對大家來說一切都是熟悉的配方,熟悉的味道。
- 使用方便:相信大家都體會到了SpringBoot給我們開發(fā)帶來的便利,而SpringCloud完全支持SpringBoot的開發(fā),用很少的配置就能完成微服務(wù)框架的搭建
1.1 簡介
SpringCloud是Spring旗下的項目之一,官網(wǎng)地址
Spring最擅長的就是集成,把世界上最好的框架拿過來,集成到自己的項目中。
SpringCloud也是一樣,它將現(xiàn)在非常流行的一些技術(shù)整合到一起,實現(xiàn)了諸如:配置管理,服務(wù)發(fā)現(xiàn),智能路由,負(fù)載均衡,熔斷器,控制總線,集群狀態(tài)等等功能。其主要涉及的組件包括:
netflix
Eureka:注冊中心
Zuul:服務(wù)網(wǎng)關(guān)
Ribbon:負(fù)載均衡
Feign:服務(wù)調(diào)用
Hystix:熔斷器
以上只是其中一部分,架構(gòu)圖:

1.2 版本
SpringCloud的版本命名比較特殊,因為它不是一個組件,而是許多組件的集合,它的命名是以A到Z的為首字母的一些單詞組成,為英國倫敦地鐵站名稱
1.3 SpringCloud和SpringBoot是什么關(guān)系
SpringBoot專注于快速方便的開發(fā)單個個體微服務(wù)。
SpringCloud是關(guān)注全局的微服務(wù)協(xié)調(diào)整理治理框架,它將SpringBoot開發(fā)的一個個單體微服務(wù)整合并管理起來,為各個微服務(wù)之間提供,配置管理、服務(wù)發(fā)現(xiàn)、斷路器、路由、微代理、事件總線、全局鎖、決策競選、分布式會話等等集成服務(wù)
SpringBoot可以離開SpringCloud獨立使用開發(fā)項目,但是SpringCloud離不開SpringBoot,屬于依賴的關(guān)系.
SpringBoot專注于快速、方便的開發(fā)單個微服務(wù)個體,SpringCloud關(guān)注全局的服務(wù)治理框架。
二、Dubbo是怎么到SpringCloud的?哪些優(yōu)缺點讓你去技術(shù)選型
2.1 SpringCloud VS Dubbo
最大區(qū)別:SpringCloud拋棄了Dubbo的RPC通信,采用的是基于HTTP的REST方式。
嚴(yán)格來說,這兩種方式各有優(yōu)劣。雖然從一定程度上來說,后者犧牲了服務(wù)調(diào)用的性能,但也避免了上面提到的原生RPC帶來的問題。而且REST相比RPC更為靈活,服務(wù)提供方和調(diào)用方的依賴只依靠一紙契約,不存在代碼級別的強依賴,這在強調(diào)快速演化的微服務(wù)環(huán)境下,顯得更加合適。
品牌機與組裝機的區(qū)別
很明顯,Spring Cloud的功能比DUBBO更加強大,涵蓋面更廣,而且作為Spring的拳頭項目,它也能夠與Spring Framework、Spring Boot、Spring Data、Spring Batch等其他Spring項目完美融合,這些對于微服務(wù)而言是至關(guān)重要的。使用Dubbo構(gòu)建的微服務(wù)架構(gòu)就像組裝電腦,各環(huán)節(jié)我們的選擇自由度很高,但是最終結(jié)果很有可能因為一條內(nèi)存質(zhì)量不行就點不亮了,總是讓人不怎么放心,但是如果你是一名高手,那這些都不是問題;而Spring Cloud就像品牌機,在Spring Source的整合下,做了大量的兼容性測試,保證了機器擁有更高的穩(wěn)定性,但是如果要在使用非原裝組件外的東西,就需要對其基礎(chǔ)有足夠的了解。
社區(qū)支持與更新力度
最為重要的是,DUBBO停止了5年左右的更新,雖然2017.7重啟了。對于技術(shù)發(fā)展的新需求,需要由開發(fā)者自行拓展升級(比如當(dāng)當(dāng)網(wǎng)弄出了DubboX),這對于很多想要采用微服務(wù)架構(gòu)的中小軟件組織,顯然是不太合適的,中小公司沒有這么強大的技術(shù)能力去修改Dubbo源碼+周邊的一整套解決方案,并不是每一個公司都有阿里的大牛+真實的線上生產(chǎn)環(huán)境測試過。
2.2 總結(jié) Cloud 與 Dubbo
問題:
曾風(fēng)靡國內(nèi)的開源 RPC 服務(wù)框架 Dubbo 在重啟維護(hù)后,令許多用戶為之雀躍,但同時,也迎來了一些質(zhì)疑的聲音?;ヂ?lián)網(wǎng)技術(shù)發(fā)展迅速,Dubbo 是否還能跟上時代?Dubbo 與 Spring Cloud 相比又有何優(yōu)勢和差異?是否會有相關(guān)舉措保證 Dubbo 的后續(xù)更新頻率?
人物:Dubbo重啟維護(hù)開發(fā)的劉軍,主要負(fù)責(zé)人之一
劉軍,阿里巴巴中間件高級研發(fā)工程師,主導(dǎo)了 Dubbo 重啟維護(hù)以后的幾個發(fā)版計劃,專注于高性能 RPC 框架和微服務(wù)相關(guān)領(lǐng)域。曾負(fù)責(zé)網(wǎng)易考拉 RPC 框架的研發(fā)及指導(dǎo)在內(nèi)部使用,參與了服務(wù)治理平臺、分布式跟蹤系統(tǒng)、分布式一致性框架等從無到有的設(shè)計與開發(fā)過程。
三、參考資料
- 官網(wǎng):https://spring.io/projects/spring-cloud
- 參考書: https://springcloud.cc/spring-cloud-netflix.html
- 中文社區(qū):http://springcloud.cn/
- 中文網(wǎng): https://springcloud.cc/
四、SpringCloud國內(nèi)使用情況
-
國內(nèi)公司
-
阿里云

