之間共享狀態我下面的微服務架構,我們有兩個independed服務微服務建議關注兩個服務
(UserService,OtherService)
UserService寫入到它自己的數據源(mysql和Redis的)
將更新寫入UserService的客戶端
另一方面,客戶端從OtherService獲取需要來自UserService的某個用戶狀態的數據。
其他服務的延遲和吞吐量非常重要。
幾個選項:
UserService將更新OtherService時的狀態變化(比我打破OtherService域的責任,因爲它不應該維護用戶指出
OtherService會問UserService(通過API)爲用戶狀態(添加了很多對我來說很重要的延遲,我可以緩存,但仍然......不確定這是否正確)
具有共享數據存儲,而UserService wri te和其他服務讀取..打破共享相同的數據源時也微服務原則
你們認爲什麼是正確的? 謝謝, 雷。
您可以讓UserService公開某種可觀察的接口,其中的其他服務可以註冊以通知UserService更改。它仍然是OtherService的工作,從UserService獲取相關數據。通過這種方式,兩個服務之間的耦合不會是明確的,您可以允許其他服務實現相同的模式。 – Cosu
如何暴露「某種可觀的界面」。該服務使用休息互相通話.. – rayman
UserService應該有一個訂閱端點,其他感興趣的服務將調用。他們應該提供自己的回調端點,UserService將發送更改通知。當狀態改變時,用戶服務通知訂戶該事件改變了。更普遍的解釋是使用所有服務都可以發佈事件的事件總線。有關更詳細的解釋,請參見[本文](https://www.thoughtworks.com/insights/blog/scaling-microservices-event-stream)。 – Cosu