Tl;博士:“我如何通过一堆异步,无序的微服务推送消息,并知道该消息何时通过它们?”
我正在努力为特定的微服务架构找到合适的消息传递系统/协议。这不是“哪个是最好的”问题,而是关于我对设计模式/协议的选择的问题。
那么,问题是,通过各种服务管理该消息的适当方式是什么?我不想一次做一个,订单并不重要。但是,如果是这种情况,那么系统如何知道所有服务何时发生了重击并且最终消息可以写入结束队列(以使下一批服务完成它们)。
我能想到的唯一,半优雅的解决方案是
但是,这仍然需要每个服务都知道所有其他服务,并要求每个服务留下其标记。这些都不是必需的。
我对某种“牧羊人”服务持开放态度。
我很感激我错过的任何选择,并且愿意承认他们可能是一个更好的,基本的设计。
谢谢。
管理长时间运行的流程(或涉及多个微服务的处理)有两种方法:编排和编排。有很多文章描述它们。
简而言之:在Orchestration中,您有一个跟踪过程状态的微服务,在编排中,所有微服务都知道下一个消息发送的位置和/或过程何时完成。
这个qazxsw poi解释了这两种风格的好处和权衡。
编曲article
协调优势
业务流程权衡
编舞的好处
编排权衡
我会继续使用常见的存储理念。
让每个微服务注册自己的公共存储。让每个微服务注册它已经处理了消息标识符。
您可以确定哪些服务应该处理它以及有多少n服务已经处理它。
没有服务需要彼此了解。