跳至主要内容

🌧️ 如何執行微服務

微服務延伸的問題

維運的新挑戰

維運人員須要維護的 Process 會大量增加,

維運人員需要具備更多技能來應對這樣的挑戰,

並且讓維運過程轉為自動化

介面的一致性

雖然把服務都獨立化了,但商業邏輯之間的依賴還是不變的,

因此在介面上確保他是一致的,並且需要嚴格遵守開閉原則

分散式的複雜性

拆分後的服務都是在各自的 Process 中運作,

他們之間只能靠通訊來進行溝通,因此整個環境中有許多需要考量的因素,

如: 網路延遲、分散式事務、非同步的訊息等

服務模組化

模組化的好處

模組化這件事情可以將程式變成一個獨立的元件來運作,

就如同汽車的輪胎、懸吊等,只要符合規格都可以任意改裝,

如果想要行駛過程中想要增加過彎的穩定性,就只需要將懸吊進行更換,

而不需要將整台車輛進行汰換

Smart endpoints and dumb pipes

在單體服務中,只需要直接呼叫函式就可直接使用服務,

但在微服務中需要改由 RCP 來呼叫服務,導致每個服務之間會有繁瑣的通訊,

因此需要將通訊協議的粒度提高

常見的通訊

  1. HTTP 的 RESTful API 或其他輕量級的通訊協議 : 進行訊息傳遞與服務調用
  2. 訊息佇列 : 如 ActiveMQ、RabbitMQ 等等可靠的非同步中間層

在需要極致性能下,有些團隊會選擇用二進位的訊息發送協議,

例如: protobuf