当我们与许多微服务一起处理请求时,这就是管理分布式事务性的情况。
假设我们有四个微服务,每个微服务由四个州代表,我们可以为每个州拥有一整套微服务,因此我们在微服务层具有高可用性。每个微服务都不会有自己的数据库,我希望每个微服务都遵循CQRS模式攻击相同的数据集群。
在那些微服务之上的层中,我有一个充当协调器的层,该层管理每个请求的事务状态,每个请求显然将具有唯一的标识符。
现在,当周期开始时,我希望协调器仅调用一个A家族微服务,而那个A家族可能拥有我们认为必要的尽可能多的A家族docker容器,但是我只希望一个被选择来处理请求。我希望能够异步调用微服务,我不想使用诸如同步REST之类的东西,所以我知道我必须使用订阅者发布系统,例如kafka。举个例子,我在不限制任何技术的情况下尽可能广泛地谈论。我知道每个交易状态都将与一个主题相关联,假设对于状态A,它将被称为topicA,并且如果我们有多个微服务参加交易状态A,那么最终,我们将拥有与状态一样多的主题和一个家庭的微服务,即topicA-1,topicA-2,...,topicA-n,topicB-a,topicB-2,...,topicB-n,... topicD-1,topicD- 2,... topicD-n。因此,我了解到最后,我需要在协调器和发布者订阅者层之间进行负载平衡,以选择要将消息发送到的主题。每个微服务也将有另一个通道将消息发送到协调器层,只有这一次才需要使一个消费者与协调器层中的所有微服务共享,以侦听响应并更新每个分布式事务的状态
在订户发布者级别上是否有负载均衡器?是否有产品或推荐的方法来做,还是我必须从头开始做?当我有一个管理事务状态的协调器类时,这是管理分布式事务性的推荐方法吗?遵循我建议的方法可以找到什么问题?
理想地,可以为每个主题创建分区,以便一个主题管理与每个微服务相对应的事务状态。到目前为止,主题中的每个分区都将对应一个微服务,到目前为止,您如何动态地进行操作?因为潜在地讲,有时会检测到只需要一种类型的n个微服务,而在其他时候,它们可能会更多,更少,并且这将需要在负载均衡器中动态管理每个主题中的那些子分区,以便它可以创建它们,删除它们,将该分区分配给微服务,告诉控制器类它可以使用该分区与该微服务异步通信,管理该微服务的运行状况并采取相应的行动?
市场上有这样的东西吗?如果可能的话,我不想重新发明轮子。
感谢您阅读本文并请原谅。