Skip to main content

微服務架構

拓墣結構

01

分散式

  1. 從實體機器 -> 虛擬機和容器
  2. 以類似 process 的方式拆分出將服務解耦
  3. 服務的顆粒度很重要, 不同的服務間的呼叫是影響性能的大關鍵之一。

有界內容

  1. 微服務會傾向在同一個服務都有自己完整的一切,例如子元件和資料庫
  2. 相同的類別不做共用 (ex. class 的產生),而傾向於複製

顆粒度

  1. 連貫的交易行為
  2. 盡量避免跨顆粒交易的行為
  3. 若是某些微服務間的通信負擔太重,盡量包成一個服務

資料隔離

01
  • 適當的切分出微服務可以讓每個服務都使用自己最適合的資料庫。

API 層

  1. 不讓他來作為中介或是編排的工具
  2. 邏輯都應該要發生在各個服務裡面。

Devops 相關的重用

  • 例如監控,Logging
01010101

服務發現

  1. Register, 服務啟動時的註冊機制
  2. Query, 查詢已註冊服務資訊的機制
  3. Healthy Check, 確認服務健康狀態的機制

Example: DHCP + DNS

  • DHCP 發 IP
  • DNS 註冊 HOST/IP
  • 查詢 DNS
  • 確認 HOST 是否存在
01

The Client‑Side Discovery Pattern

01

The Server-Side Discovery Pattern

01

前端

0101

通信

  1. 協議感知

    • 統一的 REST 模式,或用某種 message 的 queue
  2. 異質

    • 每個服務可以用最符合自身的技術來開發
  3. 互通性

    • 透過網路來互相呼叫

編排及協作

  1. 編排

    01
  2. 協作

    01
  3. 複雜的狀況下使用編排

    01
  4. 複雜的狀況下使用協作

01

交易與傳奇模式

盡量不要在微服務中用交易的方式來處理

Two Phase Commit

01

Saga Pattern

010101

架構特性的等級

01