nosql简答什么是最终一致性_用NoSQL处理有界上下文中多个聚合的最终一致性的DDD...

本文探讨了在事件驱动的设计中,如何处理有界上下文之间的交互以及域规则的影响。强调了域规则应当允许事件的发生,而不是阻止它们,而基础设施则负责确保事件的正确应用和持久化。文章通过示例说明了事件命名的重要性,并提到了错误处理策略,如短期自动重试和错误队列,以确保系统的稳定性和一致性。
摘要由CSDN通过智能技术生成

相同或不同的有界上下文;有或没有传奇;无关紧要。

为什么事件处理失败?域规则或基础结构。

域规则:

由聚合处理的引发事件(事件处理程序使用聚合应用事件)不应按域规则失败。

如果“目标”聚合具有拒绝事件的域规则,则聚合设计是错误的。域规则可以拒绝命令/操作。域规则不能拒绝(或撤消)事件。

当“origin”聚合检查此操作的所有域规则时,应引发事件。“target”聚合应用事件,并可能引发另一个事件,该事件的某些值由“target”聚合计算(域规则,但不用于拒绝事件;域规则不可拒绝事件;但要“继续”一致性“链”,并进行良好的责任分离)。这就是为什么事件应该以过去的句子作为名称;因为已经发生了。

事件模拟:

嘿,伙计们!用户做了这个很酷的事情,一切看起来都很好。-->用户DidThisCoolThingEvent

哇哈,太棒了!我将在用户积分中加上3。-->用户RecipeHomePointsEvent

Agg3:+3指向该用户?用户刚达到100分。太多了!我要把这个用户转换成VIP用户。-->用户已转到vipevent

新的VIP用户?让我们通知其他用户,让他们产生理智的嫉妒;)

基础设施:

修复并应用事件。;)如果需要,甚至可以在持久性引擎、网络和/或机器再次启动时“手动”。

短期自动重试失败。ErrorQueues/Logs以避免在长时间的中断中丢失事件(稍后再应用它)。

事件源也有助于实现这一点,因为您总是可以在“target”aggegate中重新应用持久化事件,而无需额外努力将事件保存在某个地方(即事件日志),因为您的域持久性也是您的事件存储。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值