目錄
?編輯一、認識微服務
1、單體架構
2、集群和分布式架構
3、微服務架構
二、Spring Cloud
1、什么是 Spring Cloud
2、Spring Cloud 版本
3、Spring Cloud 的實現方案
Spring Cloud Netflix
?編輯Spring Cloud Alibaba
一、認識微服務
1、單體架構
單體架構開發和部署都比較簡單,一個項目包含了所有的功能,省去了多個項目之間的交互和調用消耗,直接部署在一個服務器即可。
2、集群和分布式架構
單體架構可能會出現的問題:
1、后端服務器的壓力越來越大,負載越來越高,甚至出現無法訪問的情況
2、業務場景逐漸復雜,為了滿足用戶的需求,單體應用會越來越大,業務代碼之間的耦合度也越來越高,任何一個問題都需要整個項目重新構建、發布
3、一個微小的問題可能會導致整個應用掛掉
如何解決單體架構的問題:
我們可以從橫向和縱向兩個角度來解決問題
橫向:假如目前只有一臺機器,用戶卻越來越多了,此時我們可以通過添加服務器來進行解決
縱向:業務需求越來越大了,代碼之間耦合度越來越搞,此時我們可以把一整塊業務劃分成不通風的模塊
假設我們最開始有一臺機器,這一臺機器可以承擔 1000 個用戶,后來發展成了 10000 個用戶
橫向:擴容機器,將一臺機器擴容成 10 臺機器,每個機器負責 10 個用戶【集群】
縱向:按照功能進行劃分,將一個大的項目拆分成多個小項目之后,項目與項目之間通過接口進行交互?【分布式】
集群:是將?個系統完整的部署到多個服務器上, 每個服務器都能提供系統的所有服務, 多個
服務器通過負載均衡調度完成任務. 每個服務器稱為集群的節點(node)
分布式:是將?個系統拆分為多個子系統,多個子系統部署在多個服務器上,多個服務器上的子系統協同合作完成?個特定任務.
例如:有一個餐館,剛開業的時候只有一個廚師,該廚師只負責做飯相關的工作
當餐館生意變好之后,一名廚師便忙不過來了
橫向:招聘一個廚師,這兩個廚師都可以獨立做飯
縱向:將廚師的工作分為多個細小的工作,如:切菜,洗菜,炒菜。再招聘助理,將細小的工作分配給助理完成。
集群和分布式之間的區別與聯系:
1. 從概念上. 集群是多個計算機做同樣的事, 分布式是多個計算機做不同的事(集群中的計算機可以相互替代,而分布式中的計算機不能相互替代)
2. 從功能上. 集群的每一個節點功能是相同的, 并且可以替代的. 分布式也是多個節點組成的系統, 但是每個節點完成的業務是不同的, ?個節點出現問題, 這個業務就不可訪問了.
3. 從關系上. 分布式和集群在實踐中, 很多時候是互相配合使用的. 比如分布式的某一個節點, 可能由一個集群來代替. 分布式架構大多是建立在集群上的. 所以實際的分布式架構設計中并不會把分布式和集群單獨區分, 而是統稱: 分布式架構.
4、分布式的節點可能是集群
3、微服務架構
按照業務對項目進行拆分之后,會有一些重復的功能開發。
在分布式結構下,當部署的服務越來越多,重復的代碼就會越來越多,服務之間的調用關系越來越復雜。
微服務就是將一些通用的,會被多個上層服務調用的共享業務,提取成獨立的基礎服務,組成一個個微小的服務
微服務是沒有明確的邊界的
但是我們通常認為:一個服務只對應一個單一的功能,只做一件事情,且這個服務可以單獨部署的服務是微服務?
微服務之間使用 REST 和 RPC 協議進行通信
微服務架構其實就是分布式架構的擴展,微服務架構下拆分粒度更小,服務更獨立。
分布式架構側重于壓力的分散, 強調的是服務的分散化. 微服務側重于能力的分散, 更強調服務的專業化和精細分工.
從實踐的角度來看, 微服務架構通常是分布式服務架構, 反之則未必成立.
例如,在工作中會將崗位進行劃分:前端,后端,運維等
分布式:劃分了就可以了
微服務:不僅僅劃分,還拆分的很細,比如后端開發還可以細分為:系統開發,數據開發等等
所以,微服務通常意味著需要解決分布式架構的各種難題
架構的發展:
那么實際開發中,應該采用哪種架構模式呢
所有的架構都是為了更好的服務產品,所以只需要選擇最合適的即可
微服務的優勢:
易開發和維護. 每個微服務負責的業務比較清晰, 體量小, 開發和維護成本降低.
容錯性高. ?個服務發生故障, 可以使故障隔離在單個服務中, 不影響整體服務故障.
擴展性好. 每個服務都是獨立運行的, 我們可以結合項目實際情況進行擴展, 按需伸縮.
技術選型靈活. 每個微服務都是單獨的團隊來運維, 可以根據業務特點和團隊特點, 選擇適合的技術
棧.
相應的,微服務也會面臨一些挑戰:
二、Spring Cloud
1、什么是 Spring Cloud
Spring Cloud 的官網: spring.io
Spring Cloud 包含了很多的工具,這些工具能夠讓我們在分布式系統中進行比較快速的開發,Spring Cloud 提供的這些工具,也可以幫助我們解決在分布式微服務中的一系列問題。
簡單來說, Spring Cloud 就是分布式微服務架構的?站式解決方案, 是微服務架構落地的多種技術的集合.?
2、Spring Cloud 版本
我們可以在官網上查看 SpringBoot 版本對應的 SpringCloud 版本
假設我們有一個項目,Spring Boot 的版本是 2.7.x,那么我們 Spring Cloud 版本應該使用 2021.0.x
3、Spring Cloud 的實現方案
Spring Cloud Netflix
Spring Cloud Netflix 是 Netflix OSS(Netflix Open Source Software)在 Spring Cloud 規范下的實現.
包含的組件及其主要功能?致如下:?

Spring Cloud Alibaba
Spring Cloud Alibaba 是阿?巴巴集團下的開源組件和云產品在Spring Cloud規范下的實現
如果說Spring Cloud Netflix 是 Spring Cloud 的第一代實現, 那么Spring Cloud Alibaba 也可以看做是Spring Cloud 的第?代實現, 主要由 Nacos、Sentinel、Seata 等組件組成.
黃色:進入維護狀態的主鍵