SpringCloud(1) ——回顧微服務和微服務架構

_thhhhh發表於2020-10-11

1.什麼是微服務

  • 微服務(Microservice Architecture) 是近幾年流行的一種架構思想,關於它的概念很難一言以蔽之
  • 究竟什麼是微服務呢?我們在此引用ThoughtWorks 公司的首席科學家 Martin Fowler 於2014年提出的一段話
    • 就目前而言,對於微服務,業界並沒有一個統一的,標準的定義
    • 但通常而言,微服務架構是一種架構模式,或者說是一種架構風格它提倡將單一的應用程式劃分成一組小的服務,每個服務執行在其獨立的自己的程式內,服務之間互相協調,互相配置,為使用者提供最終價值,服務之間採用輕量級的通訊機制(HTTP)互相溝通,每個服務都圍繞著具體的業務進行構建,並且能狗被獨立的部署到生產環境中,另外,應儘量避免統一的,集中式的服務管理機制,對具體的一個服務而言,應該根據業務上下文,選擇合適的語言,工具(Maven)對其進行構建,可以有一個非常輕量級的集中式管理來協調這些服務,可以使用不同的語言來編寫服務,也可以使用不同的資料儲存

在這裡插入圖片描述

  • 原文
  • 漢化
  • 再來從技術維度角度理解下:
    • 微服務化的核心就是將傳統的一站式應用,根據業務拆分成一個一個的服務,徹底地去耦合,每一個微服務提供單個業務功能的服務,一個服務做一件事情,從技術角度看就是一種小而獨立的處理過程,類似程式的概念,能夠自行單獨啟動或銷燬,擁有自己獨立的資料庫

2.微服務與微服務架構

1.微服務

  • 強調的是服務的大小,它關注的是某一個點,是具體解決某一個問題/提供落地對應服務的一個服務應用,狹義的看可以看作是IDEA中的一個個微服務工程,或者Moudel
    IDEA 工具裡面使用Maven開發的一個個獨立的小Moudel,它具體是使用SpringBoot開發的一個小模組,
    專業的事情交給專業的模組來做,一個模組就做著一件事情
    
    強調的是一個個的個體,每個個體完成一個具體的任務或者功能
    

2.微服務架構

  • 一種新的架構形式,Martin Fowler 於2014年提出
  • 微服務架構是一種架構模式,它體長將單一應用程式劃分成一組小的服務,服務之間相互協調,互相配合,為使用者提供最終價值。每個服務執行在其獨立的程式中,服務與服務之間採用輕量級的通訊機制(如HTTP)互相協作,每個服務都圍繞著具體的業務進行構建,並且能夠被獨立的部署到生產環境中,另外,應儘量避免統一的,集中式的服務管理機制,對具體的一個服務而言,應根據業務上下文,選擇合適的語言、工具(如Maven)對其進行構建

3.微服務優缺點

1.優點

  • 每個服務足夠內聚,足夠小,程式碼容易理解,這樣能聚焦一個指定的業務功能或業務需求【符合OOP7大原則中的單一職責原則】
  • 開發簡單,開發效率高,一個服務可能就是專一的只幹一件事
  • 微服務能夠被小團隊單獨開發,這個團隊只需2-5個開發人員組成
  • 微服務是鬆耦合的,是有功能意義的服務,無論是在開發階段或部署階段都是獨立的【每個微服務單獨部署和執行】
  • 微服務能使用不同的語言開發
  • 易於和第三方整合,微服務允許容易且靈活的方式整合自動部署,通過持續整合工具,如jenkins,Hudson,bamboo
  • 微服務易於被一個開發人員理解,修改和維護,這樣小團隊能夠更關注自己的工作成果,無需通過合作才能體現價值
  • 微服務允許利用和融合最新技術
  • 微服務只是業務邏輯的程式碼,不會和HTML,CSS,或其他的介面混合
  • 每個微服務都有自己的儲存能力,可以有自己的資料庫,也可以有統一的資料庫

2.缺點

  • 開發人員要處理分散式系統的複雜性
  • 多服務運維難度,隨著服務的增加,運維的壓力也在增大
  • 系統部署依賴問題
  • 服務間通訊成本問題
  • 資料一致性問題
  • 系統整合測試問題
  • 效能和監控問題

4.微服務技術棧有那些?

在這裡插入圖片描述

5.為什麼選擇SpringCloud作為微服務架構?

  • 選型依據

    • 整體解決方案和框架成熟度
    • 社群熱度
    • 可維護性
    • 學習曲線
  • 當前各大IT公司用的微服務架構有那些?

    • 阿里:dubbo+HFS
    • 京東:JFS
    • 新浪:Motan
    • 噹噹網:DubboX
  • 各微服務框架對比
    在這裡插入圖片描述

相關文章