【SpringCloud】(2)---SpringCloud入門篇
阿新 • • 發佈:2018-07-24
開發 span zipkin 集成 調用服務 data 但是 優點 難度
SpringCloud理解篇
一、微服務概述
1、什麽是微服務
目前的微服務並沒有一個統一的標準,一般是以業務來劃分將傳統的一站式應用,拆分成一個個的服務,徹底去耦合,一個微服務就是單功能業務,只做一件事。
與微服務相對的叫巨石 。
2、微服務與微服務架構
- 微服務是一種架構模式或者一種架構風格,提倡將單一應用程序劃分成一組小的服務==獨立部署==,服務之間相互配合、相互協調,每個服務運行於自己的==進程==中。
- 服務與服務間采用輕量級通訊,如HTTP的RESTful API等
- 避免統一的、集中式的服務管理機制
3、微服務的優缺點
優點
- 每個服務足夠內聚,足夠小,比較容易聚焦
- 開發簡單且效率高,一個服務只做一件事情
- 開發團隊小,一般2-5人足以(當然按實際為準)
- 微服務是松耦合的,無論開發還是部署都可以獨立完成
- 微服務能用不同的語言開發
- 易於和第三方集成,微服務允許容易且靈活的自動集成部署(持續集成工具有Jenkins,Hudson,bamboo等)
- 微服務易於被開發人員理解,修改和維護,這樣可以使小團隊更加關註自己的工作成果,而無需一定要通過合作才能體現價值
- 微服務允許你融合最新的技術
- ==微服務只是業務邏輯的代碼,不會和HTML,CSS或其他界面組件融合==。
- ==每個微服務都可以有自己的存儲能力,數據庫可自有也可以統一,十分靈活==。
缺點
- 開發人員要處理分布式系統的復雜性
- 多服務運維難度,隨著服務的增加,運維的壓力也會增大
- 依賴系統部署
- 服務間通訊的成本
- 數據的一致性
- 系統集成測試
- 性能監控的難度
4、微服務的技術棧
微服務條目 | 落地技術 |
---|---|
服務開發 | SpringBoot,Spring,SpringMVC |
服務配置與管理 | Netflix公司的Archaius、阿裏的Diamond等 |
服務註冊與發現 | Eureka、Consul、Zookeeper等 |
服務調用 | Rest、RPC、gRPC |
服務熔斷器 | Hystrix、Envoy等 |
負載均衡 | Ribbon、Nginx等 |
服務接口調用(客戶端調用服務的簡化工具) | Feign等 |
消息隊列 | Kafka、RabbitMQ、ActiveMQ等 |
服務配置中心管理 | SpringCloudConfig、Chef等 |
服務路由(API網關) | Zuul等 |
服務監控 | Zabbix、Nagios、Metrics、Specatator等 |
全鏈路追蹤 | Zipkin、Brave、Dapper等 |
服務部署 | Docker、OpenStack、Kubernetes等 |
數據流操作開發包 | SpringCloud Stream(封裝與Redis,Rabbit,Kafka等發送接收消息) |
事件消息總線 | SpringCloud Bus |
二、SpringCloud入門概述
Spring的三大模塊:SpringBoot(構建),Spring Cloud(協調),Spring Cloud Data Flow(連接)
1、SpringCloud是什麽
- 分布式系統的簡化版(官方介紹)
- SpringCloud基於SpringBoot提供了一整套微服務的解決方案,包括服務註冊與發現,配置中心,全鏈路監控,服務網關,負載均衡,熔斷器等組件,除了基於Netflix的開源組件做高度抽象封裝之外,還有一些選型中立的開源組件
- SpringCloud利用SpringBoot的開發便利性巧妙地簡化了分布式系統的基礎設施開發,SpringCloud為開發人員提供了快速構建分布式系統的一些工具,包括配置管理、服務發現、斷路器、路由、微代理、事件總線,全局所、決策精選、分布式會話等等,他們都可以用SpringBoot的開發風格做到一鍵啟動和部署。
- ==一句話概括:SpringCloud是分布式微服務架構下的一站式解決方案,是各個微服務架構落地技術的幾何體,俗稱微服務全家桶==
2、SpringCloud和SpringBoot的關系
SpringBoot:專註於快速方便的開發單個個體微服務(關註微觀)
SpringCloud:關註全局的微服務協調治理框架,將SpringBoot開發的一個個單體微服務組合並管理起來(關註宏觀)
註意:SpringBoot可以離開SpringCloud獨立使用,但是SpringCloud不可以離開SpringBoot,屬於依賴關系
3、Dubbo和SpringCloud比較
Dubbo | Spring | |
---|---|---|
服務註冊中心 | Zookeeper | Spring Cloud Netfilx Eureka |
服務調用方式 | RPC | REST API |
服務監控 | Dubbo-monitor | Spring Boot Admin |
斷路器 | 不完善 | Spring Cloud Netflix Hystrix |
服務網關 | 無 | Spring Cloud Netflix Zuul |
分布式配置 | 無 | Spring Cloud Config |
服務跟蹤 | 無 | Spring Cloud Sleuth |
消息總線 | 無 | Spring Cloud Bus |
數據流 | 無 | Spring Cloud Stream |
批量任務 | 無 | Spring Cloud Task |
最大區別
(1)Spring Cloud拋棄了RPC通訊,采用基於HTTP的REST方式。Spring Cloud犧牲了服務調用的性能,但是同時也避免了原生RPC帶來的問題。REST比RPC更為靈活,不存在代碼級別的強依賴,在強調快速演化
的微服務環境下,顯然更合適。
(2)Dubbo像組裝機,Spring Cloud像一體機
(3)社區的支持與力度:Dubbo曾經停運了5年,雖然重啟了,但是對於技術發展的新需求,還是需要開發者自行去拓展,對於中小型公司,顯然顯得比較費時費力,也不一定有強大的實力去修改源碼
總結
解決的問題域不一樣:Dubbo的定位是一款RPC框架,Spring Cloud的目標是微服務架構下的一站式解決方案
想太多,做太少,中間的落差就是煩惱。想沒有煩惱,要麽別想,要麽多做。中校【8】
【SpringCloud】(2)---SpringCloud入門篇