Architecture 在这种情况下如何处理消息链接
我目前正试图找出解决以下问题的最佳方法 我们使用的是微服务体系结构,为了启用某些产品功能,它们需要以前的服务才能完成它们的工作 在下面的示例中,Architecture 在这种情况下如何处理消息链接,architecture,rabbitmq,microservices,event-driven,Architecture,Rabbitmq,Microservices,Event Driven,我目前正试图找出解决以下问题的最佳方法 我们使用的是微服务体系结构,为了启用某些产品功能,它们需要以前的服务才能完成它们的工作 在下面的示例中,Service4要求Service1和Service2完成其任务 我正在考虑使用一个知道依赖哪个服务的编排服务 并按正确的顺序发布服务消息 但我想知道是否有一种方法可以避免这种编排服务,而完全使用编舞传奇 ┌────────┐ ┌───────►│Service1├───────┐ │ └
Service4
要求Service1
和Service2
完成其任务
我正在考虑使用一个知道依赖哪个服务的编排服务
并按正确的顺序发布服务消息
但我想知道是否有一种方法可以避免这种编排服务,而完全使用编舞传奇
┌────────┐
┌───────►│Service1├───────┐
│ └────────┘ ▼
┌────┴────┐ ┌────────┐
│ Start │ │Service4│
└────┬────┘ └───▲────┘
│ ┌────────┐ │
└───────►│Service2├───────┘
└────────┘
这里我主要关心的是
Service4
必须在数据库中记录它收到的每一条消息,并跟踪任务所需的所有消息是否都已收到,并且必须在每个具有多个依赖项的服务上重新实现相同的逻辑。展开正确的注释根据格言某些服务必须承担部分国家责任,我提交以下内容:
如果某个聚合任务的服务1
和服务2
完成仅与服务4
相关-即,它不代表实际的功能流程完成-则服务4
应负责跟踪部分状态
如果这两个服务已经完成这一事实具有某种独立的相关性(即使service4
不存在),那么使用某种编排服务来聚合、实现规则和生成新事件是有意义的
如果除了Service-4
之外没有人理解上述编排服务中的规则,这是一个好迹象,它们应该存在于Service-4中。
编辑:因为您已经指出服务-4
不是唯一关心其他两个服务已经完成这一事实的服务,所以添加(可能)更合适的服务是绝对有意义的
有许多选项,但通常我希望它监视
Service-1
和Service-2
,以完成并生成一个新事件,Service-4
将消耗该事件。某些组件必须跟踪部分状态。编排服务除了保持状态外,还提供了对整个业务流的高度可视性。它还支持取消和异步更新事务状态等功能,这是使用编排非常困难的。查看temporal.io了解编排。在我们的例子中,服务4
不是唯一需要服务1
和服务2
的服务,还有其他服务也需要在继续之前完成这些任务。所以我想我从一开始就朝着正确的方向走?是的,你走对了!在我的回复中添加了更多信息以供考虑。