如何处理乱序的微服务消息?

时间:2019-08-27 01:59:59

标签: amazon-web-services architecture microservices

我们采用了一种由AWS提供支持的微服务架构,其中不同种类的有效负载通过数据库中的 mysql.lambda_async 以UUID和 type 进入系统。

问题是,我们注意到消息可能会乱序。想象一下带有以下消息类型的场景:

  1. DEASSIGN_ROLE
  2. ASSIGN_ROLE

当实际意图是快速切换时:

  1. ASSIGN_ROLE
  2. DEASSIGN_ROLE

现在我们有一个具有错误(提升)权限的用户。

我已经进行了一些粗略的研究,例如Handling out of order events in CQRS read side之类的答案建议使用序列号。

引入序列号将非常困难,因为我们有许多不同类型的消息。序列号将需要一个同步计数器,在此我们要竭尽全力做到简单异步。请记住,我们生成消息的系统最终是一个SQL触发器。

我缺少更简单的解决方案吗?

1 个答案:

答案 0 :(得分:0)

我会说有一个无法解决的问题:

  • 您希望完全异步
  • 您需要结果保持顺序

我们遇到了与您同样的问题,最后我们根据消息类型设置了序列。

尝试尽可能异步和并行(根据消息类型/主题)