SpringCloud是什麼?
Spring官網:https://spring.io/
SpringCloud, 基于SpringBoot提供了一套微服務解決方案,包括服務注冊于發現,配置中心,全鍊路監控,服務網關,負載均衡,熔斷器等元件,除了基于NetFlix的開源元件做高度抽象封裝之外,還有一些選型中立的開源元件。
SpringCloud利用SpringBoot的開發便利性,巧妙的簡化了分布式系統基礎設施的開發,為開發人員提供了快速建構分布式系統的一些工具,包括配置管理,服務發現,熔斷器,路由,微代理,事件總線,全局鎖,決策競選,分布式會話等
SpringBoot并不是重複造輪子,它隻是将各公司開發比較成熟的服務架構結合起來,以SpringBoot的風格進行封裝,屏蔽了複雜的配置和實作原理,最終給開發者留出一套簡單易懂,易部署和易維護的分布式系統開發工具包
SpringCloud和SpringBoot的關系
- SpringBoot專注于快速、友善的開發單個個體微服務
- SpringCloud是關注全局的微服務協調整理治理架構,它将SpringBoot開發的一個個單體微服務,整合并管理起來,為各個微服務之間提供:配置管理、服務發現、斷路器、路由、為代理、事件總棧、全局鎖、決策競選、分布式會話等等內建服務;
- SpringBoot可以離開SpringCloud獨立使用,開發項目,但SpringCloud離不開SpringBoot,屬于依賴關系;
Dubbo 和 SpringCloud技術選型
目前成熟網際網路架構圖
Dubbo | SpringCloud | |
---|---|---|
服務注冊中心 | Zookeeper | Spring Cloud Netfilx Eureka |
服務調用方式 | RPC | REST API |
服務監控 | Dubbo-monitor | Spring Boot Admin |
斷路器 | 不完善 | Spring Cloud Netfilx Hystrix |
服務網關 | 無 | Spring Cloud Netfilx Zuul |
分布式配置 | 無 | Spring Cloud Config |
服務跟蹤 | 無 | Spring Cloud Sleuth |
消息總棧 | 無 | Spring Cloud Bus |
資料流 | 無 | Spring Cloud Stream |
批量任務 | 無 | Spring Cloud Task |
最大差別:Spring Cloud 抛棄了Dubbo的RPC通信,采用的是基于HTTP的REST方式
嚴格來說,這兩種方式各有優劣。雖然從一定程度上來說,後者犧牲了服務調用的性能,但也避免了上面提到的原生RPC帶來的問題。而且REST相比RPC更為靈活,服務提供方和調用方的依賴隻依靠一紙契約,不存在代碼級别的強依賴,這個優點在當下強調快速演化的微服務環境下,顯得更加合适。
總結:
二者解決的問題域不一樣:Dubbo的定位是一款RPC架構,而SpringCloud的目标是微服務架構下的一站式解決方案。
SpringCloud能做什麼?
- Distributed/versioned configuration 分布式/版本控制配置
- Service registration and discovery 服務注冊與發現
- Routing 路由
- Service-to-service calls 服務到服務的調用
- Load balancing 負載均衡配置
- Circuit Breakers 斷路器
- Distributed messaging 分布式消息管理
下載下傳
官網:http://projects.spring.io/spring-cloud/
SpringCloud沒有采用數字編号的方式命名版本号,而是采用了倫敦地鐵站的名稱,同時根據字母表的順序來對應版本時間順序,比如最早的Realse版本:Angel,第二個Realse版本:Brixton,然後是Camden、Dalston、Edgware,目前最新的是Hoxton SR4 CURRENT GA通用穩定版