我有一個應用程序,其中多個用戶可以發送REST操作來修改共享對象的狀態。 修改對象時,會發生多個操作(數據庫,審計,日誌記錄...)。卡夫卡驗證有狀態處理消息
並非所有操作都是有效的,例如,您不能在刪除對象後修改它。
使用卡夫卡我在想下面的架構:
- 休息操作排隊卡夫卡話題。
- 對同一對象的操作將進入同一分區。因此,所有的對象的操作將在序列和由消費者
- 消費者聽分區處理,使用內存數據庫
- 確認操作如果操作是有效的,那麼被髮送到一個「有效操作主題」 otherways被髮送到‘無效操作主題’
- 其他消費者(DB,日誌,審計)正在收聽的‘有效操作主題’
我不是很肯定點3號。 我不喜歡保持所有對象狀態的想法。 (我有數十億的對象,即使一個對象可以是10MB的大小,我需要存儲以驗證其狀態只有幾K字節...)
但是,這是一種常見模式嗎?否則,你如何驗證某些操作的有效性?
另外你會用什麼作爲內存數據庫?它必須是高度可用的,容錯和支持事務(讀寫)。
我正在考慮使用此:https://samza.apache.org/learn/documentation/0.7.0/container/state-management.html ... –