amazon-web-services - 如何处理乱序的微服务消息?
问题描述
我们采用了 AWS 支持的微服务架构,其中不同类型的有效负载使用 UUID 进入系统,并通过数据库中的mysql.lambda_async输入。
问题是,我们已经注意到消息可能会出现乱序。想象一下具有以下类型消息的场景:
- DEASSIGN_ROLE
- ASSIGN_ROLE
当实际意图是快速切换时:
- ASSIGN_ROLE
- DEASSIGN_ROLE
现在我们有一个具有错误(提升)权限的用户。
我做了一些粗略的研究,例如在 CQRS 读取端处理乱序事件等答案建议使用序列号。
引入序列号将非常困难,因为我们有许多不同类型的消息。一个序列号需要一个同步计数器,我们费了很大劲才实现简单的异步。请记住,我们生成消息的系统最终是一个 SQL 触发器。
我缺少更简单的解决方案吗?
解决方案
我想说有一个无法解决的问题:
- 你想完全异步
- 你的结果需要顺序性
我们遇到了和你一样的问题,最后我们按消息类型设置序列。
尽可能尝试异步和并行(根据消息类型/主题)
推荐阅读
- r - 在一个 x 轴上绘制多列,一列作为线 + 点,其他列作为 R 中的点图
- ios - iOS:如何在导航栏中与 NavigationBar Title 平行放置一个按钮?
- python - 如何在python中执行与自定义属性的交集
- c# - 如何区分 - 作为正则表达式中的符号或运算符?
- sitecore9 - Experience Analytics 因与 Sitecore.Analytics.OmniChannel 相关的错误而停止工作
- postgresql - 在 postgres 中创建存储过程时出错
- postgresql - 在','分隔符逗号或特殊字符之后获取字符串
- angular - 具有类型接口的 Angular 属性在声明时引发错误
- php - 如果其中一个是履行服务地点,则一件商品不能在多个地点处于活动状态
- javascript - 箭头函数反应组件不同于“等效”对应物