首页 > 解决方案 > 如何处理乱序的微服务消息?

问题描述

我们采用了 AWS 支持的微服务架构,其中不同类型的有效负载使用 UUID 进入系统,并通过数据库中的mysql.lambda_async输入

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

  1. DEASSIGN_ROLE
  2. ASSIGN_ROLE

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

  1. ASSIGN_ROLE
  2. DEASSIGN_ROLE

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

我做了一些粗略的研究,例如在 CQRS 读取端处理乱序事件等答案建议使用序列号。

引入序列号将非常困难,因为我们有许多不同类型的消息。一个序列号需要一个同步计数器,我们费了很大劲才实现简单的异步。请记住,我们生成消息的系统最终是一个 SQL 触发器。

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

标签: amazon-web-servicesarchitecturemicroservices

解决方案


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

  • 你想完全异步
  • 你的结果需要顺序性

我们遇到了和你一样的问题,最后我们按消息类型设置序列。

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


推荐阅读