天天看點

微服務設計1.微服務2.如何模組化服務3.內建   3.7 REST4.分解單塊系統5.規模化微服務

1.微服務

1.1 什麼是微服務

1.1.1 很小,專注于做好一件事  

        單一職責原則的理念。

1.1.2 自治性

        一個微服務就是一個獨立的實體,它可以獨立地部署在PAAS上,也可以作為一個作業系統程序存在。服務暴露出API,服務間通過API通信。

1.2 主要好處

1.2.1 技術異構性 

        可以用不同的技術棧來實作不同服務。

1.2.2 彈性

        降低整個服務不可用的問題。

1.2.3 擴充

        當存在性能問題時,可以隻對需要擴充的服務進行擴充,把部分不需要擴充的服務運作在更小的、性能稍差的硬體上。

1.2.4 簡化部署

        更改程式時,隻需重新部署一個小服務,便于復原和不影響整體功能。

1.2.5 與組織結構相比對

        小團隊模式更高效。

1.2.6 可組合型

        在微服務架構中,系統會開放很多接口供外部使用。當情況發生改變時,可以使用不同的方式建構應用,而整體化應用程式隻能提供一個非常粗粒度的接口供外部使用。

1.2.7 對可替代性的優化

        重構、删除服務時友善。

1.3 面向服務的架構

        SOA(面向服務的結構)是一種設計方法,其中包含多個服務,而服務之間通過配合最終會提供一系列功能。一個服務通常以獨立的形式存在于作業系統程序中。服務之間通過網絡調用,而非程序内調用的方式進行通信。

2.如何模組化服務

2.1 什麼樣的服務是好服務

2.1 松耦合

        能夠獨立修改及部署單個服務而不需要修改系統的其他部分。

2.2 高内聚

        把相關的行為放在一個服務裡

2.2 逐漸劃分

        先考慮比較大的、粗粒度的,然後當發現合适的縫隙後,再進一步劃分。

3.內建   

3.1 尋找理想的內建技術

  • 避免破壞性修改
  • 保證API的技術無關性
  • 使你的服務易于消費方使用
  • 隐藏内部實作細節

3.2 為使用者建立接口

3.3 共享資料庫

        使用資料庫內建會使高内聚和低耦合失效,外部系統能檢視内部實作細節并綁定。

3.4 同步與異步

        同步——請求/響應

        異步——基于事件

3.5 編排與協同

        編排——依賴于某個中心大腦,“上帝”,很容易知道異常

        協同——異步訂閱,消除耦合,但需要監控系統

        請求/響應方式可以考慮RPC(Remote Procedure Call,遠端過程調用)、REST(REpresentational State Transfer,表述性狀态轉移)。

3.6 RPC       

  • 技術的耦合
  • 隐藏遠端調用的複雜性,會花大量時間對負荷進行封裝和解封裝
  • 網絡不可靠
  • 脆弱性,一處更改伺服器和用戶端都要改

3.7 REST

        資源、消費者

3.8 版本管理

        版本共存,v1、v2,允許平滑過渡。

4.分解單塊系統

4.1 資料庫

4.1.1 打破外鍵關系

        調用API來通路資料,而不是直接通路資料庫。

4.1.2 共享靜态資料

        放入配置檔案或代碼,比如國家代碼。

4.1.3 共享資料

        通過API來查資料

4.1.4 共享表

        拆分表

5.規模化微服務

5.1 故障無處不在

        網絡、硬體不可靠

5.2 功能降級

        某個服務不可用時,不要影響整個系統。

繼續閱讀