SpringCloud基本介紹 SpringCloud官方文檔 1.提出問題 先思考一個問題,沒有微服務技術,是不是程式員就不能開發大型項目? 是可以的,對大型項目進行模塊劃分,對各個模塊進行實現。但模塊之間更多地是以API調用完成,耦合度較高,不利於拓展和維護(在沒有微服務技術時,很多大型項目就已 ...
SpringCloud基本介紹
1.提出問題
-
先思考一個問題,沒有微服務技術,是不是程式員就不能開發大型項目?
是可以的,對大型項目進行模塊劃分,對各個模塊進行實現。但模塊之間更多地是以API調用完成,耦合度較高,不利於拓展和維護(在沒有微服務技術時,很多大型項目就已經使用了微服務的概念)
-
標準化的微服務解決方案(SpringCloud 和 SpringCloud Alibaba)出現的原因和價值是什麼?
(1)微服務可以根據業務不同,將一個大項目分解成不同的服務(比如搜索服務/網關服務/配置服務/存儲服務/發現服務等等)
(2)各個服務通過分散式方式進行工作,從而可以高效,快速,穩定地完成複雜的功能
(3)可以理解為:原來大項目的某些模塊->抽出形成微服務->配合分散式工作方式->從而高效,快速穩定地完成複雜功能
2.系統架構的演變過程
- 單機架構
- 動靜分離架構:靜態緩存+文件存儲
- 分散式架構:業務拆分+負載均衡
- 微服務架構:使用SpringCloud
-
”微服務“一詞源於 Martin Fowler 的名為 Microservices 的博文。簡單地說,微服務是系統架構上的一種設計風格,它的主旨是將一個原本獨立的系統拆分成多個小型服務,這些小型服務都在各自獨立的進程中運行,服務之間通過基於HTTP的Restful API進行通信協作。
-
被拆分的每一個小型服務,都圍繞著系統中的某一項,或一些耦合度較高的業務功能進行構建,並且每個服務都維護著自身的數據存儲、業務開發、自動化測試案例以及獨立部署機制。由於有輕量級的通信協作基礎,所以這些微服務可以使用不同的語言來編寫。
3.SpringCloud全面說明
- SpringCloud 來源於 Spring,是更高層次的、架構視角的綜合性大型項目,目標旨在構建一套標準化的微服務解決方案,讓架構師在使用微服務理念構建系統時,面對各個環節都可以找到相應的組件來處理
- SpringCloud 是 Spring 社區為微服務架構提供的一個 “全家桶” 套餐。套餐中各個組件之間的配合,可以減少組件選型和整合上花費的精力,可以快速構建起基礎的微服務架構系統,是微服務架構的最佳落地方案
- SpringCloud 天然支持 SpringBoot(有版本對應要求),使用門檻較低
- SpringCloud 解決了與分散式系統相關的複雜性——網路問題,延遲開銷,帶寬問題,安全問題
- 有處理服務發現的能力——服務發現允許集群中的進程和服務找到彼此併進行通信
- 可以處理冗餘問題——冗餘問題經常發生在分散式系統中
- 能夠解決負載平衡——改進跨多個計算資源(例如電腦集群、網路連接、中央處理單元)的工作負載分佈
4.SpringCloud核心組件圖
-
SpringCloud 核心組件一覽圖,文檔 : https://spring.io/projects/spring-cloud
-
Spring Cloud Alibaba 文檔地址: https://github.com/alibaba/spring-cloud-alibaba
-
Spring Cloud Netflix 地址: https://github.com/Netflix
5.SpringCloud分散式示意圖
分散式工作的簡單示意圖:
- SpringCloud 是微服務概念的落地實現
- SpringCloud 體現了微服務的彈性設計
- 微服務的工作方式一般是基於分散式的
- SpringCloud 仍然是 Spring 家族一員,可以解決微服務的分散式工作方式帶來的各種問題
- SpringCloud 可以幫助解決服務發現、負載平衡、斷路、分散式跟蹤和監視的問題,甚至可以充當 API 網關
- SpringCloud和SpringBoot版本的對應關係