(目錄)
微服務技術棧
從單體架構過度到微服務架構,需要一系列中間技術支撐,其中重要的部分包括:
:Eureka 、Zookeeper、Nacos
注冊中心
:Zuul 、Gateway
服務網關
:RestTemplate、Feign
微服務遠端調用
Docker
容器化技術
MQ(多種實作方式)
消息隊列
Ribbon 、 Nginx
負載均衡
:ElasticSearch
分布式搜尋技術
認識微服務
随着網際網路行業的發展,對服務的要求也越來越高,服務架構也從單體架構逐漸演變為現在流行的微服務架構。這些架構之間有怎樣的差别呢?
單體架構
單體架構:将業務的所有功能集中在一個項目中開發,打成一個包部署。
單體架構的優缺點如下:
優點:
- 架構簡單
- 部署成本低
缺點:
- 耦合度高(維護困難、更新困難)
分布式架構
分布式架構:
根據業務功能對系統做拆分, 每個業務功能子產品作為獨立項目開發
,稱為一個服務。
分布式架構的優缺點:
優點:
- 降低服務耦合
- 有利于服務更新和拓展
缺點:
- 服務調用關系錯綜複雜
分布式架構雖然降低了服務耦合
,但是服務拆分時也有很多問題需要思考:
- 服務拆分的粒度如何界定?
- 服務之間如何調用?
- 服務的調用關系如何管理?
人們需要制定一套行之有效的标準來限制分布式架構。
微服務
微服務的架構特征
:
:微服務拆分粒度更小,每一個服務都對應唯一的業務能力,做到單一職責
單一職責
:團隊獨立、技術獨立、資料獨立,獨立部署和傳遞
自治
:服務提供統一标準的接口,與語言和技術無關
面向服務
:服務調用做好隔離、容錯、降級,避免出現級聯問題
隔離性強
微服務的上述特性其實是在給分布式架構制定一個标準,進一步降低服務之間的耦合度,提供服務的獨立性和靈活性。做到
高内聚,低耦合
。
是以,可以認為
是一種經過良好架構設計的
微服務
分布式架構方案
。
但方案該怎麼落地?選用什麼樣的技術棧?全球的網際網路公司都在積極嘗試自己的微服務落地方案。
其中在Java領域最引人注目的就是SpringCloud提供的方案了
SpringCloud
SpringCloud是目前國内使用最廣泛的微服務架構。官網位址:https://spring.io/projects/spring-cloud。
SpringCloud內建了各種微服務功能元件,并基于SpringBoot實作了這些元件的自動裝配,進而提供了良好的開箱即用體驗。
其中常見的元件包括:
另外,SpringCloud底層是依賴于SpringBoot的,并且有版本的相容關系
如下:
這裡使用的版本是 Hoxton.SR10,是以對應的SpringBoot版本是2.3.x版本
技術棧對比
企業需求
總結
- 單體架構:簡單友善,高度耦合,擴充性差,适合小型項目。例如:學生管理系統
- 分布式架構:松耦合,擴充性好,但架構複雜,難度大。适合大型網際網路項目,例如:京東、淘寶
- SpringCloud是微服務架構的一站式解決方案,內建了各種優秀微服務功能元件