Amazon web services 如何处理无序的微服务消息?

Amazon web services 如何处理无序的微服务消息?,amazon-web-services,architecture,microservices,Amazon Web Services,Architecture,Microservices,我们采用了AWS支持的微服务体系结构,其中不同种类的有效负载通过数据库中的mysql.lambda_async以UUID和类型进入系统 问题是,我们已经注意到消息可能会出现混乱。设想具有以下消息类型的场景: 解除指派角色 分配角色 当实际意图是快速切换时: 分配角色 解除指派角色 现在我们有一个拥有错误(提升)权限的用户 我做了一些粗略的研究,例如,答案建议使用序列号 引入序列号将非常困难,因为我们有许多不同类型的消息。一个序列号需要一个同步计数器,在这里,我们已经尽了很大的努力来实现简单的异步

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

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

  • 解除指派角色
  • 分配角色
  • 当实际意图是快速切换时:

  • 分配角色
  • 解除指派角色
  • 现在我们有一个拥有错误(提升)权限的用户

    我做了一些粗略的研究,例如,答案建议使用序列号

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


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

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

    • 您希望完全异步
    • 你的结果需要顺序性
    我们遇到了与您相同的问题,并通过按消息类型设置序列来结束


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

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

    • 您希望完全异步
    • 你的结果需要顺序性
    我们遇到了与您相同的问题,并通过按消息类型设置序列来结束


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

    您考虑过SQS FIFO队列吗?保证以先进先出的顺序一次性交付给消费者(Lambda?)。我没有考虑过,但是mysql.lambda_async进入lambda,然后将其放入(FIFO)队列。我仍然担心可能会出现无序情况。发布消息时,mysql.Lambda_async触发的Lambda应该等到确认消息1已传递到队列后,再继续将消息2发布到队列。“不支持将FIFO SQS队列作为事件源”。。。哦,天哪。你考虑过SQS FIFO队列吗?保证以先进先出的顺序一次性交付给消费者(Lambda?)。我没有考虑过,但是mysql.lambda_async进入lambda,然后将其放入(FIFO)队列。我仍然担心可能会出现无序情况。发布消息时,mysql.Lambda_async触发的Lambda应该等到确认消息1已传递到队列后,再继续将消息2发布到队列。“不支持将FIFO SQS队列作为事件源”。。。哦,天哪。