一、什么是微服務架構
微服務架構是一種架構模式,它提倡講單一應用程序划分為一組小的服務,服務之間互相協調、互相配合,為用戶提供最終價值。每個服務運行在單獨的進程當中,服務與服務之間采用輕量級的通信機制互相協作(通常是基於HTTP協議的RESTful API)。每個服務都圍繞着具體業務進行構建,並且能夠被獨立的部署到生產環境、類生產環境等。另外,應當盡量避免統一的、集中式的服務管理機制,對具體的一個服務而言,應根據業務上下文,選擇合適的語言、工具對其進行構建。
二、微服務的優缺點
優點
- 每個服務足夠內聚,足夠小,代碼容易理解,這樣能聚焦一個指定的業務功能或業務需求
- 開發簡單、開發效率高,一個服務只干一件事
- 微服務能夠被小團隊單獨開發,這個小團隊是2到5人的開發人員
- 微服務是松耦合的,是有功能意義的服務,無論在開發階段還是部署階段都是獨立的
- 微服務能使用不同的語言進行開發
- 易於和第三方集成,微服務允許容易且靈活的方式集成自動部署,通過持續集成工具如Jenkins,Hudson,bamboo.
- 微服務只是業務邏輯的代碼,不會和HTML,CSS或其它界面組件混合。
- 每個微服務都有自己的存儲能力,可以有自己的數據庫,也可以有統一的數據庫
缺點
- 開發人員要處理分布式系統的復雜性
- 多服務運維難度,隨着服務的增加,運維的壓力也在增大
- 系統部署依賴
- 服務間通信成本
- 數據一致性
- 系統集成測試
- 性能監控
三、微服務的技術棧
微服務條目 落地技術
服務開發 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、Spectator等
全鏈路追蹤 Zipkin,Brave、Dapper等
服務部署 Docker、OpenStack、Kubernetes等
數據流操作開發包 SpringCloud Stream(封裝與Redis,Rabbit、Kafka等發送接收消息)
事件消息總線 Spring Cloud Bus
四、SpringCloud技術架構
五、SpringCloud和SpringBoot是什么關系?
SpringBoot專注於快速方便的開發單個個體微服務。
SpringCloud是關注全局的微服務協調治理框架,它將SpringBoot開發的一個個單體微服務整合並管理起來,為各個微服務之間提供,配置管理、服務發現、斷路器、路由、微代理、事件總線、全局鎖、決策競選、分布式會話等集成服務。
SpringBoot可以離開SpringCloud獨立使用開發項目,但是SpringCloud離不開SpringBoot,屬於依賴關系。
最大區別:SpringCloud拋棄了Dubbo的RPC通信,采用的是基於HTTP的REST方式。
嚴格來說,這兩種方式各有優劣。雖然從一定程度上來說,后者犧牲了服務調用的性能,但也避免了上面提到的原生RPC帶來的問題。而且REST相比RPC更為靈活,服務提供方和調用方的依賴只依靠一紙契約,不存在代碼級別的強依賴,這在強調快速演化的微服務環境下,顯得更加合適。
品牌機與組裝機的區別
很明顯,Spring Cloud的功能比DUBBO更加強大,涵蓋面更廣,而且作為Spring的拳頭項目,它也能夠與Spring Framework、Spring Boot、Spring Data、Spring Batch等其他Spring項目完美融合,這些對於微服務而言是至關重要的。使用Dubbo構建的微服務架構就像組裝電腦,各環節我們的選擇自由度很高,但是最終結果很有可能因為一條內存質量不行就點不亮了,總是讓人不怎么放心,但是如果你是一名高手,那這些都不是問題;而Spring Cloud就像品牌機,在Spring Source的整合下,做了大量的兼容性測試,保證了機器擁有更高的穩定性,但是如果要在使用非原裝組件外的東西,就需要對其基礎有足夠的了解。
社區支持與更新力度
最為重要的是,DUBBO停止了5年左右的更新,雖然2017.7重啟了。對於技術發展的新需求,需要由開發者自行拓展升級(比如當當網弄出了DubboX),這對於很多想要采用微服務架構的中小軟件組織,顯然是不太合適的,中小公司沒有這么強大的技術能力去修改Dubbo源碼+周邊的一整套解決方案,並不是每一個公司都有阿里的大牛+真實的線上生產環境測試過。