認識微服務
單體框架
將所有的業務功能集中在一個項目中開發,打包和部署
優點:
- 架構簡單
- 部署成本低
缺點:
- 耦合度高
分布式框架
根據業務功能拆分成多個獨立的業務模塊進行開發和部署,每個獨立的業務模塊稱為服務
優點:
- 降低服務耦合
- 有利於服務升級擴展
分布式框架要考慮的問題:
- 服務之間如何實現遠程調用
- 服務集群地址如何維護
微服務
微服務得從兩個方面去理解,什么是"微"、什么是"服務",微 狹義來講就是體積小、意思是說單個服務的的獨立開發,將所有參與設計、開發、測試、運維的組成獨立的開發小組。 而所謂服務,一個或者一組相對較小且獨立的業務功能單元。
微服務架構特征:
- 單一職責:微服務拆分粒度更小,每一個服務都對應唯一的業務功能,做到單一職責,避免重復業務開發
- 面向服務:微服務對外暴露業務接口
- 自治:團隊獨立、技術獨立、數據獨立、部署獨立
- 隔離性強:服務調用做好隔離、容錯、降級、避免出現級聯問題
優點:拆分粒度更小、服務更獨立、耦合度更低
缺點:架構非常復雜,運維、監控、部署難度提高
微服務結構
SpringCloud是目前國內使用最廣泛的微服務框架。官網地址:https://spring.io/projects/spring-cloud
SpringCloud集成了各種微服務功能組件,並給予SpringBoot實現了這些組件的自動裝配,從而提供了良好的開箱即用體驗
服務注冊發現:Eureka、Nacos、Consul
統一配置管理:SpringCloudConfig、Nacos
服務遠程調用:OpenFeign、Dubbo
統一網關路由:SpringCloudGateway、Zuul
服務鏈路監控:Zipkin、Sleuth
流控、降級、保護:Hystix、Sentinel
SpringCloud與SpringBoot的版本兼容關系如下: