目錄
1、簡介
2、技術棧
3、單體架構
4、分布式架構
5、微服務
6、總結
🍃作者介紹:雙非本科大三網絡工程專業在讀,阿里云專家博主,專注于Java領域學習,擅長web應用開發、數據結構和算法,初步涉獵Python人工智能開發和前端開發。
🦅主頁:@逐夢蒼穹🥡所屬專欄:微服務
📕您的一鍵三連,是我創作的最大動力🌹
1、簡介
微服務是一種軟件架構風格,它將一個應用程序拆分成一組小型、獨立的服務,每個服務都運行在自己的進程中,并使用輕量級的通信機制(通常是HTTP API)進行相互通信。這些小型服務被設計成可以獨立部署、擴展和維護,從而提高系統的靈活性和可維護性。
以下是微服務架構的一些關鍵特點和優勢:
- 模塊化: 微服務將應用程序拆分成多個小型服務,每個服務負責特定的業務功能。這種模塊化的設計使得開發、測試和維護變得更加簡單。
- 獨立部署: 由于每個微服務都是獨立的,團隊可以獨立地開發、測試和部署每個服務,而不會影響整個應用程序。
- 彈性和可伸縮性: 微服務可以根據需求進行獨立的擴展和縮減。這使得系統更容易應對變化的工作負載。
- 技術多樣性: 不同的微服務可以使用不同的技術棧,這使得團隊可以選擇最適合其需求的技術和工具。
- 獨立數據存儲: 每個微服務通常有自己的數據庫,這減少了數據耦合,提高了系統的可維護性。
- 容錯性和韌性: 單個微服務的故障不會影響整個應用程序,系統可以更容易地從故障中恢復。
- 團隊自治: 不同的團隊可以負責不同的微服務,這促進了團隊的自治和獨立性。
盡管微服務架構提供了許多優勢,但也需要考慮一些挑戰,如服務發現、分布式事務、服務間通信等。引入微服務需要仔細權衡利弊,并確保團隊具備適當的技能和工具來成功實施和管理微服務架構。
2、技術棧
技術棧組件 | 描述 |
Spring Boot | 用于快速創建獨立的、生產級別的基于Spring的應用程序 |
Spring MVC | 一個構建Web應用程序的框架 |
Netflix Archaius | 用于服務配置與管理的組件 |
阿里 Diamond | |
Eureka | 用于服務注冊與發現的組件 |
Consul | |
Zookeeper | |
REST | 用于服務調用的方式 |
RPC | |
gRPC | |
Hystrix | 用于實現服務熔斷器的組件 |
Envoy | |
Ribbon | 用于負載均衡的組件 |
Nginx | |
OpenFeign | 用于服務接口調用的組件 |
Kafka | 用于消息隊列的組件 |
RabbitMQ | |
ActiveMQ | |
Spring Cloud Config | 用于服務配置中心管理的組件 |
Docker | 用于自動化應用程序的部署為輕量級容器 |
Kubernetes | 用于自動部署、擴展和管理容器化應用程序 |
圖解如下:
3、單體架構
單體架構:將業務的所有功能集中在一個項目中開發,打成一個包部署。
單體架構的優缺點如下:
優點:架構簡單、部署成本低
缺點:耦合度高(維護困難、升級困難)
4、分布式架構
分布式架構:根據業務功能對系統做拆分,每個業務功能模塊作為獨立項目開發,稱為一個服務。
分布式架構的優缺點:
優點:降低服務耦合、有利于服務升級和拓展
缺點:服務調用關系錯綜復雜
分布式架構雖然降低了服務耦合,但是服務拆分時也有很多問題需要思考:
①服務拆分的粒度如何界定?
②服務之間如何調用?
③服務的調用關系如何管理?
人們需要制定一套行之有效的標準來約束分布式架構。
5、微服務
微服務的架構特征:
①單一職責:微服務拆分粒度更小,每一個服務都對應唯一的業務能力,做到單一職責
②自治:團隊獨立、技術獨立、數據獨立,獨立部署和交付
③面向服務:服務提供統一標準的接口,與語言和技術無關
④隔離性強:服務調用做好隔離、容錯、降級,避免出現級聯問題
微服務的上述特性其實是在給分布式架構制定一個標準,進一步降低服務之間的耦合度,提供服務的獨立性和靈活性。做到高內聚,低耦合。
因此,可以認為微服務是一種經過良好架構設計的分布式架構方案 。
微服務這種方案需要技術框架來落地,全球的互聯網公司都在積極嘗試自己的微服務落地技術。在國內最知名的就是SpringCloud和阿里巴巴的Dubbo。
SpringCloud是目前國內使用最廣泛的微服務框架。
官網地址:https://spring.io/projects/spring-cloud
SpringCloud集成了各種微服務功能組件,并基于SpringBoot實現了這些組件的自動裝配,從而提供了良好的開箱即用體驗。
其中常見的組件包括:
另外,SpringCloud底層是依賴于SpringBoot的,并且有版本的兼容關系,如下:
企業需求:
微服務技術對比:
6、總結
- 單體架構:簡單方便,高度耦合,擴展性差,適合小型項目。例如:學生管理系統
- 分布式架構:松耦合,擴展性好,但架構復雜,難度大。適合大型互聯網項目,例如:京東、淘寶
- 微服務:一種良好的分布式架構方案
①優點:拆分粒度更小、服務更獨立、耦合度更低
②缺點:架構非常復雜,運維、監控、部署難度提高 - SpringCloud是微服務架構的一站式解決方案,集成了各種優秀微服務功能組件