微服務架構
拓墣結構
分散式
- 從實體機器 -> 虛擬機和容器
- 以類似 process 的方式拆分出將服務解耦
- 服務的顆粒度很重要, 不同的服務間的呼叫是影響性能的大關鍵之一。
有界內容
- 微服務會傾向在同一個服務都有自己完整的一切,例如子元件和資料庫
- 相同的類別不做共用 (ex. class 的產生),而傾向於複製
顆粒度
- 連貫的交易行為
- 盡量避免跨顆粒交易的行為
- 若是某些微服務間的通信負擔太重,盡量包成一個服務
資料隔離
- 適當的切分出微服務可以讓每個服務都使用自己最適合的資料庫。
API 層
- 不讓他來作為中介或是編排的工具
- 邏輯都應該要發生在各個服務裡面。
Devops 相關的重用
- 例如監控,Logging
服務發現
- Register, 服務啟動時的註冊機制
- Query, 查詢已註冊服務資訊的機制
- Healthy Check, 確認服務健康狀態的機制
Example: DHCP + DNS
- DHCP 發 IP
- DNS 註冊 HOST/IP
- 查詢 DNS
- 確認 HOST 是否存在
The Client‑Side Discovery Pattern
The Server-Side Discovery Pattern
前端
通信
協議感知
- 統一的 REST 模式,或用某種 message 的 queue
異質
- 每個服務可以用最符合自身的技術來開發
互通性
- 透過網路來互相呼叫
編排及協作
編排
協作
複雜的狀況下使用編排
複雜的狀況下使用協作
交易與傳奇模式
盡量不要在微服務中用交易的方式來處理