不論是微服務架構,或是分散式系統,服務之間的可靠通訊永遠是最重要的架構議題。如果通訊的方式是同步 (synchronized) 的,通常都用 HTTP + REST,如果通訊方式要求要非同步模式 (async) 的話,通常都會使用訊息貯列 (message queue),同時附帶極高的可靠度 (即使後端掛掉都不用擔心的高可靠度),以及能夠有效的均衡後端的附載。 不過,如果我期望能同時有高可靠度,均衡的附載能力,同時還要有如同 RPC (Remote Procedure Call) 的同步模式,該如何才能辦到? 這個 Session 我就會告訴大家,如何透過 Message Queue 達成可靠的跨服務通訊 RPC。 由於這個議題高度涉及實作細節,因此這個 Session 我選定的實作環境為 .NET Standard 2.0, Message Queue 我採用 RabbitMQ, 整個 Session 會分成幾個部分進行: 1. Message Queue 的架構與應用方式介紹 2. Message Queue + RPC 的架構設計 3. 實作需要注意的環節,包含多執行緒、優雅的中止 Worker (Graceful Shutdown)、以及如何有效率的使用 RabbitMQ (connection, channel, consumer 之間的關係) 這些都是我實際運用的經驗分享,如果你期待能成為經驗豐富的架構師,那你絕對不能錯過這個議程! 難度: 300