微服務(wù)數(shù)據(jù)管理(譯):應(yīng)用發(fā)布事件模式

場景

已經(jīng)應(yīng)用了Saga模式,為了可靠性,每當(dāng)服務(wù)狀態(tài)改變時,服務(wù)必須以原子性方式發(fā)布事件。使用一個跨數(shù)據(jù)庫和消息代理的分布式事務(wù)是不切實可行的。

問題

每當(dāng)狀態(tài)改變的時候,如何可靠地/原子地發(fā)布事件?

約束條件

2PC不是一個選項。

解決方案

應(yīng)用將事件插入到某個EVENTS表中作為本地事務(wù)的一部分。某個獨立的進(jìn)程拉取EVENTS表并且將事件發(fā)布到消息代理中。

影響

該模式有如下的優(yōu)點:

高級別的領(lǐng)域事件

無2PC

該模式有如下的弊端:

需要改變應(yīng)用,可能會導(dǎo)致容易發(fā)生錯誤

很難避免重復(fù)發(fā)布

很難按順序發(fā)布事件

僅僅對SQL和某些NoSQL數(shù)據(jù)庫有效

文章來源:Pattern: Application publishes events

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容