当前位置:  开发笔记 > 数据库 > 正文

微服务:原子事件

如何解决《微服务:原子事件》经验,为你挑选了0个好方法。

我现在正在学习微服务数据复制,而我遇到的一件事就是提出了确保事件原子性的正确架构.我理解它的方式,基本流程是:

    提交对数据库的更改.

    发布详细说明全局消息总线上的更改的事件.

但是,如果在步骤1和2之间发生断电,该怎么办?在一个天真的系统中,这意味着更改仍然存在,但详细说明它们的事件将永远不会发布.我考虑过以下想法来创造更好的保证,但我不太清楚每种方法的优点和缺点:

答:在我的微服务实例中使用嵌入式数据库(如SQLite)来跟踪从提交到主数据库到事件发布的完整事务.

B:在我的主数据库中创建一个事件表,使用数据库事务插入事件并同时提交相关更改.然后,该服务将事件推送到总线,然后再次提交到主数据库以将事件标记为已发布.

C:如上所述,在我的主数据库中创建一个Events表,使用数据库事务插入Event并同时提交相关更改.然后,通过(通过服务中的REST /消息或通过数据库挂钩手动)通知已附加新事件的专用EventPusher服务.EventPusher服务将查询Events表并将事件推送到总线,将每个事件标记为已发布确认.如果在没有任何通知的情况下经过一定的时间,EventPusher将进行手动查询.

以上每个选择的优缺点是什么?我还有其他优势吗?

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有