微服務 01初識

2022-07-05 19:48:10 字數 2166 閱讀 4638

傳統的soa架構已經是面向服務的應用架構了,整個架構中其實已經包含了各式各樣不同的服務,服務之間通過相互依賴最終對外提供一系列功能;esb企業級訊息匯流排通常被引入進傳統soa架構,從而實現規整、可治理的星型結構。

與此同時微服務架構其實是也是soa思想,但是更進一步的是它更強調的是子系統的元件化和單一功能化。站在部署角度來看,相比傳統soa架構中的單體應用,微服務架構下的應用不僅在功能架構上做了模組化拆分,而且在最終的部署架構上也有獨立的部署單元與之相對應。由此帶來了微服務架構的以下特點:

總的來說微服務架構就像更細緻的模組化的生產模式,每個服務都是乙個特定功能的標準化零件,最終整個系統是由這些個標準化的零件組合而成。但是如果從技術的演進來說,微服務架構更像是模組化開發+分布式計算的綜合應用。

正如微服務架構的特點一樣,微服務拆分之後有著自己的優點,但不能忘記微服務最終是要合在一期工作的,這時也就引入了不少問題:

分布式計算固有的複雜性,比如分布式環境中的複雜的網路和訊息傳遞問題。

分布式環境下需要採用分布式事務機制來解決資料一致性問題;

測試、運維複雜性,一方面數量巨大、碎片化的微服務系統的持續部署會給運維帶來巨大的壓力;另一方面複雜的呼叫鏈路會給監控、排錯帶來巨大的困擾。

s/n對比點

微服務架構

單體架構結論1

上手難度

api 介面呼叫

資料庫共享或本地程式呼叫

單體架構勝

2.1開發效率(簡單專案)

早期設計和溝通的工作量加大,隨著專案規模和時間的推移,效率變化不大

早期工作量小,隨著專案規模和時間的推移,效率大幅度下降

單體架構勝

2.2開發效率(複雜專案)

早期設計和溝通的工作量加大,隨著專案規模和時間的推移,效率變化不大

早期工作量小,隨著專案規模和時間的推移,效率大幅度下降

微服務架構勝

3系統設計(高內聚低耦合)

每個業務單獨包裝成乙個微服務,資料和**都從物理上隔離開來,實現高內聚低耦合相對容易

以包的形式對**進行模組劃分,控制得當即可實現高內聚。但最終都是在資料層面將整個系統耦合在一起

微服務架構勝

4系統設計(擴充套件性)

獨立開發新模組,通過 api 與現有模組互動

在現有系統上修改,與現存業務邏輯高度耦合

微服務架構勝

5需求變更響應速度

各個微服務元件獨立變更,容易實施敏捷開發方法

需要了解整個系統才可以正確修改,容易導致不相關模組的意外失敗

微服務架構勝

6系統公升級效率

各個微服務元件獨立公升級,上手和開發效率高,影響面小

需要了解整個系統才可以正確修改,容易導致不相關模組的意外失敗

微服務架構勝

7運維效率

大系統被拆分為多個小系統,部署和運維難度加大,但可以利用 devops 等方式將運維工作自動化

簡單直接

單體架構勝

8知識積累

微服務元件可以在新專案中直接復用,包括前端頁面

一般以共享庫的形式復用後台**

微服務架構勝

9.1硬體需求(簡單專案)

乙個系統需部署多個微服務,需要啟動多個執行容器

整個系統只需要乙個執行容器

單體架構勝

9.2硬體需求(高要求專案)

按需為不同業務模組伸縮資源節點

為整個系統分配資源,導致冗餘

微服務架構勝

10.1

專案成本(簡單系統)

專案早期和後期,成本變化曲線平緩

專案早期成本低,後期成本大

單體架構勝

10.2

專案成本(複雜系統)

專案早期和後期,成本變化曲線平緩

專案早期成本低,後期成本大

微服務架構勝

11非功能需求

為單獨的微服務按需調優,甚至更換實現方式和程式語言

為整個系統調優,牽一髮而動全身

微服務架構勝

12職責、成就感

擁有明確的職責劃分,主人翁意識和成就感加強,容易形成自組織型團隊

職責不明確,容易產生扯皮行為

微服務架構勝

13風險

大系統被拆分為小系統,風險可被控制在小系統內,但也引入了各小系統之間的互動風險

系統是乙個整體,一榮俱榮,一損俱損

re:重識微服務架構

一篇文章快速理解微服務架構

初識微服務架構

什麼是軟體架構?哪些因素?業務需求 技術棧成本 組織架構 可擴充套件性 可維護性 什麼是單體架構 單體架構優勢 單體架構面臨的挑戰 綜上所述 單體架構已經out了 什麼是微服務 多微才算微?微服務的特徵 單一職責 輕量級通訊 隔離性有自己的資料 業務的資料獨立性,降低資料複雜度 技術多樣性 微服務誕...

微服務專題學習01

springboot結合前端有很多種方法,比如在static裡面直接加入css或js,又或者引入webjars,以jar包的形式加入專案 webjars形式 pom 檔案 引用bootstrap org.webjars groupid bootstrap artifactid 3.3.7 1 ver...

(01)微服務以及springCloud漫談

一 微服務與微服務架構 簡單概括一下微服務與微服務架構。微服務強調的是服務的大小,它關注的是某乙個點,是具體解決某乙個問題 提供落地對應服務的乙個服務應用,狹意的看,可以看作eclipse裡面的乙個個微服務工程 或者module。微服務架構是 種架構模式,它提倡將單 應 程式劃分成 組 的服務,服務...