天天看點

初識微服務(技術棧、單體、分布式架構)、SpringCloud

(目錄)

微服務技術棧

從單體架構過度到微服務架構,需要一系列中間技術支撐,其中重要的部分包括:

  • 注冊中心

    :Eureka 、Zookeeper、Nacos
  • 服務網關

    :Zuul 、Gateway
  • 微服務遠端調用

    :RestTemplate、Feign
  • 容器化技術

    Docker
  • 消息隊列

    MQ(多種實作方式)
  • 負載均衡

    Ribbon 、 Nginx
  • 分布式搜尋技術

    :ElasticSearch
初識微服務(技術棧、單體、分布式架構)、SpringCloud

認識微服務

随着網際網路行業的發展,對服務的要求也越來越高,服務架構也從單體架構逐漸演變為現在流行的微服務架構。這些架構之間有怎樣的差别呢?

單體架構

單體架構:将業務的所有功能集中在一個項目中開發,打成一個包部署。

初識微服務(技術棧、單體、分布式架構)、SpringCloud

單體架構的優缺點如下:

優點:

  • 架構簡單
  • 部署成本低

缺點:

  • 耦合度高(維護困難、更新困難)

分布式架構

分布式架構:

根據業務功能對系統做拆分,

每個業務功能子產品作為獨立項目開發

,稱為一個服務。
初識微服務(技術棧、單體、分布式架構)、SpringCloud

分布式架構的優缺點:

優點:

  • 降低服務耦合
  • 有利于服務更新和拓展

缺點:

  • 服務調用關系錯綜複雜

分布式架構雖然降低了服務耦合

,但是服務拆分時也有很多問題需要思考:

  1. 服務拆分的粒度如何界定?
  2. 服務之間如何調用?
  3. 服務的調用關系如何管理?

人們需要制定一套行之有效的标準來限制分布式架構。

微服務

微服務的架構特征

  • 單一職責

    :微服務拆分粒度更小,每一個服務都對應唯一的業務能力,做到單一職責
  • 自治

    :團隊獨立、技術獨立、資料獨立,獨立部署和傳遞
  • 面向服務

    :服務提供統一标準的接口,與語言和技術無關
  • 隔離性強

    :服務調用做好隔離、容錯、降級,避免出現級聯問題
初識微服務(技術棧、單體、分布式架構)、SpringCloud
微服務的上述特性其實是在給分布式架構制定一個标準,進一步降低服務之間的耦合度,提供服務的獨立性和靈活性。做到

高内聚,低耦合

是以,可以認為

微服務

是一種經過良好架構設計的

分布式架構方案

但方案該怎麼落地?選用什麼樣的技術棧?全球的網際網路公司都在積極嘗試自己的微服務落地方案。

其中在Java領域最引人注目的就是SpringCloud提供的方案了

SpringCloud

SpringCloud是目前國内使用最廣泛的微服務架構。官網位址:https://spring.io/projects/spring-cloud。

SpringCloud內建了各種微服務功能元件,并基于SpringBoot實作了這些元件的自動裝配,進而提供了良好的開箱即用體驗。

其中常見的元件包括:

初識微服務(技術棧、單體、分布式架構)、SpringCloud

另外,SpringCloud底層是依賴于SpringBoot的,并且有版本的相容關系

如下:

初識微服務(技術棧、單體、分布式架構)、SpringCloud

這裡使用的版本是 Hoxton.SR10,是以對應的SpringBoot版本是2.3.x版本

技術棧對比

初識微服務(技術棧、單體、分布式架構)、SpringCloud

企業需求

初識微服務(技術棧、單體、分布式架構)、SpringCloud

總結

  • 單體架構:簡單友善,高度耦合,擴充性差,适合小型項目。例如:學生管理系統
  • 分布式架構:松耦合,擴充性好,但架構複雜,難度大。适合大型網際網路項目,例如:京東、淘寶
  • SpringCloud是微服務架構的一站式解決方案,內建了各種優秀微服務功能元件