我正在開發一個帶有微服務架構的網站,並且每個服務都擁有一個數據庫。數據庫存儲微服務所需的數據。如何將數據庫與微服務(和新服務)同步?
Post
,Video
服務需要的用戶信息,所以無論是服務的訂閱的NEW_USER_EVENT
。
NEW_USER_EVENT
將在有新用戶註冊時觸發。
一旦服務收到NEW_USER_EVENT
,他們把傳入的用戶信息,每一個自己的數據庫。所以他們可以在不詢問User
服務的情況下做事。
到目前爲止好。但問題來了:
- 如果我要創建一項新服務該怎麼辦?我如何獲得註冊用戶信息並將其放入新服務中?
也許我可以從現有的服務中獲取信息。但是這些事件是由消息隊列推動的(NSQ
)。
如果我要從其中一個微服務中複製數據,我如何確定哪個服務具有最新的用戶信息? (因爲有些服務還沒有收到最新的事件)
閱讀更多:
The Hardest Part About Microservices: Your Data
Intro to Microservices, Part 4: Dependencies and Data Sharing
爲什麼「帖子」和「視頻」以及其他服務需要了解用戶創建?如果請求到達與那些服務從未聽說過的用戶有關,則他們不需要驗證用戶是否存在......他們可以簡單地假定用戶必須確實存在,否則他們將不會收到與用戶。 –
@Michael這些服務收到了'username',他們會將它轉換爲'user_id',而不要求'User'服務進行鬆耦合。當新用戶註冊後,服務會在每個數據庫中存儲'username-userId'地圖,以便他們可以在自己的服務中進行轉換。 –
我知道這個問題可以通過使用JWT來解決,但是我仍然有類似的東西,而不僅僅是關於用戶需要轉換的東西。 –