🌧️ 如何執行微服務
微服務延伸的問題
維運的新挑戰
維運人員須要維護的 Process 會大量增加,
維運人員需要具備更多技能來應對這樣的挑戰,
並且讓維運過程轉為自動化
介面的一致性
雖然把服務都獨立化了,但商業邏輯之間的依賴還是不變的,
因此在介面上確保他是一致的,並且需要嚴格遵守開閉原則
分散式的複雜性
拆分後的服務都是在各自的 Process 中運作,
他們之間只能靠通訊來進行溝通,因此整個環境中有許多需要考量的因素,
如: 網路延遲、分散式事務、非同步的訊息等
服務模組化
模組化的好處
模組化這件事情可以將程式變成一個獨立的元件來運作,
就如同汽車的輪胎、懸吊等,只要符合規格都可以任意改裝,
如果想要行駛過程中想要增加過彎的穩定性,就只需要將懸吊進行更換,
而不需要將整台車輛進行汰換
Smart endpoints and dumb pipes
在單體服務中,只需要直接呼叫函式就可直接使用服務,
但在微服務中需要改由 RCP 來呼叫服務,導致每個服務之間會有繁瑣的通訊,
因此需要將通訊協議的粒度提高
常見的通訊
- HTTP 的 RESTful API 或其他輕量級的通訊協議 : 進行訊息傳遞與服務調用
- 訊息佇列 : 如 ActiveMQ、RabbitMQ 等等可靠的非同步中間層
在需要極致性能下,有些團隊會選擇用二進位的訊息發送協議,
例如: protobuf