Spring Cloud實戰01--初識SpringCloud

1.系統架構演變

1.1.集中式架構(單體架構)

單體架構也稱之爲單體系統或者是單體應用。就是一種把系統中所有的功能、模塊耦合 在一個應用中的架構方式。
在這裏插入圖片描述
優點:

  • 項目易於管理
  • 部署簡單

缺點:

  • 測試成本高
  • 可伸縮性差
  • 可靠性差
  • 迭代困難
  • 跨語言程度差
  • 團隊協作難

1.2.垂直拆分

當訪問量逐漸增大,單一應用無法滿足需求,此時爲了應對更高的併發和業務需求,我們根據業務功能對系統進行拆分:
在這裏插入圖片描述優點:

  • 系統拆分實現了流量分擔,解決了併發問題
  • 可以針對不同模塊進行優化
  • 方便水平擴展,負載均衡,容錯率提高

缺點:

  • 系統間相互獨立,會有很多重複開發工作,影響開發效率

1.3.分佈式服務

當垂直應用越來越多,應用之間交互不可避免,將核心業務抽取出來,作爲獨立的服務,逐漸形成穩定的服務中心,使前端應用能更快速的響應多變的市場需求。此時,用於提高業務複用及整合的分佈式調用是關鍵。

在這裏插入圖片描述

優點:

  • 將基礎服務進行了抽取,系統間相互調用,提高了代碼複用和開發效率

缺點:

  • 系統間耦合度變高,調用關係錯綜複雜,難以維護

1.4.流動計算架構(SOA)

SOA :面向服務的架構

當服務越來越多,容量的評估,小服務資源的浪費等問題逐漸顯現,此時需增加一個調度中心基於訪問壓力實時管理集羣容量,提高集羣利用率。此時,用於提高機器利用率的資源調度和治理中心(SOA)是關鍵

在這裏插入圖片描述以前出現了什麼問題?

  • 服務越來越多,需要管理每個服務的地址
  • 調用關係錯綜複雜,難以理清依賴關係
  • 服務過多,服務狀態難以管理,無法根據服務情況動態管理

服務治理要做什麼?

  • 服務註冊中心,實現服務自動註冊和發現,無需人爲記錄服務地址
  • 服務自動訂閱,服務列表自動推送,服務調用透明化,無需關心依賴關係
  • 動態監控服務狀態監控報告,人爲控制服務狀態

缺點:

  • 服務間會有依賴關係,一旦某個環節出錯會影響較大
  • 服務關係複雜,運維、測試部署困難,不符合DevOps思想

1.5.微服務

業界大牛馬丁.福勒(Martin Fowler) 這樣描述微服務:
論文網址: https://martinfowler.com/articles/microservices.html

  • 微服務

強調的是服務的大小,它關注的是某一個點,是具體解決某一個問題/提供落地對應服務的一個服務應用,
狹意的看,可以看作Eclipse裏面的一個個微服務工程/或者Module

  • 微服務架構
    在這裏插入圖片描述

微服務架構是⼀種架構模式,它提倡將單⼀應⽤程序劃分成⼀組⼩的服務,服務之間互相協調、互相配合,爲⽤戶提供最終價值。每個服務運⾏在其獨⽴的進程中,服務與服務間採⽤輕量級的通信機制互相協作(通常是基於HTTP協議的RESTful API)。每個服務都圍繞着具體業務進⾏構建,並且能夠被獨⽴的部署到⽣產環境、類⽣產環境等。另外,應當儘量避免統⼀的、集中式的服務管理機制,對具體的⼀個服務⽽⾔,應根據業務上下⽂,選擇合適的語⾔、⼯具對其進⾏構建。

微服務化的核心就是將傳統的一站式應用,根據業務拆分成一個一個的服務,徹底地去耦合,每一個微服務提供單個業務功能的服務,一個服務做一件事,從技術角度看就是一種小而獨立的處理過程,類似進程概念,能夠自行單獨啓動或銷燬,擁有自己獨立的數據庫。

微服務的特點:

  • 單一職責:微服務中每一個服務都對應唯一的業務能力,做到單一職責
  • 微:微服務的服務拆分粒度很小,例如一個用戶管理就可以作爲一個服務。每個服務雖小,但“五臟俱全”。
  • 面向服務:面向服務是說每個服務都要對外暴露Rest風格服務接口API。並不關心服務的技術實現,做到與平臺和語言無關,也不限定用什麼技術實現,只要提供Rest的接口即可。
  • 自治:自治是說服務間互相獨立,互不干擾
  • 團隊獨立:每個服務都是一個獨立的開發團隊,人數不能過多。
  • 技術獨立:因爲是面向服務,提供Rest接口,使用什麼技術沒有別人干涉
  • 前後端分離:採用前後端分離開發,提供統一Rest接口,後端不用再爲PC、移動段開發不同接口
  • 數據庫分離:每個服務都使用自己的數據源
  • 部署獨立,服務間雖然有調用,但要做到服務重啓不影響其它服務。有利於持續集成和持續交付。每個服務都是獨立的組件,可複用,可替換,降低耦合,易維護

微服務的優點、缺點

優點

  • 測試容易
  • 可伸縮性強
  • 可靠性強
  • 跨語言程度會更加靈活
  • 團隊協作容易
  • 系統迭代容易
    缺點
  • 運維成本過高,部署數量較多
  • 接口兼容多版本
  • 分佈式系統的複雜性
  • 分佈式事務

2.初識SpringCloud

SpringCloud,基於SpringBoot提供了一套微服務解決方案,包括服務註冊與發現,配置中心,全鏈路監控,服務網關,負載均衡,熔斷器等組件,除了基於NetFlix的開源組件做高度抽象封裝之外,還有一些選型中立的開源組件。

SpringCloud利用SpringBoot的開發便利性巧妙地簡化了分佈式系統基礎設施的開發,SpringCloud爲開發人員提供了快速構建分佈式系統的一些工具,包括配置管理、服務發現、斷路器、路由、微代理、事件總線、全局鎖、決策競選、分佈式會話等等,它們都可以用SpringBoot的開發風格做到一鍵啓動和部署。

SpringBoot並沒有重複製造輪子,它只是將目前各家公司開發的比較成熟、經得起實際考驗的服務框架組合起來,通過SpringBoot風格進行再封裝屏蔽掉了複雜的配置和實現原理,最終給開發者留出了一套簡單易懂、易部署和易維護的分佈式系統開發工具包

SpringCloud和SpringBoot是什麼關係

SpringBoot專注於快速方便的開發單個個體微服務。

SpringCloud是關注全局的微服務協調整理治理框架,它將SpringBoot開發的一個個單體微服務整合並管理起來,
爲各個微服務之間提供,配置管理、服務發現、斷路器、路由、微代理、事件總線、全局鎖、決策競選、分佈式會話等等集成服務

SpringBoot可以離開SpringCloud獨立使用開發項目,但是SpringCloud離不開SpringBoot,屬於依賴的關係.

SpringBoot專注於快速、方便的開發單個微服務個體,SpringCloud關注全局的服務治理框架。

總結

通過上面我們大致瞭解了微服務演變與微服務及其Spring Cloud. 下一篇文章將進入微服務實戰。

說明 :本文內容來自網絡及其學習整理筆記。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章