如何在所有参与者之间分配顺序?

时间:2019-09-26 21:12:15

标签: apache-kafka architecture rabbitmq message-queue distributed-system

该系统包含三个业务参与者:

  1. 表演者
  2. 客户(移动设备,Web界面)
  3. 订单

当客户创建订单时,应在所有现有执行者之间分配订单,然后系统必须决定要从哪个执行者那里获得订单。同时,如果其他人接受了,其他一些人也无法获得此命令。

使用哪种架构方法和工具,协议?

是否正确的说法是,如果我具有分布式业务模型,就意味着必须使用Rabbit,Kafka等分布式系统?

我知道这个问题范围很广,但是无论如何我都会很高兴得到任何建议。

2 个答案:

答案 0 :(得分:1)

通常,区分两种类型的消息传递模型-point-to-point model(队列语义)和publisher-subscriber model(主题语义)。从您的问题看来,您需要实现点对点模型。因此,基本上,某些customer服务会将order发布到队列中,而单个performer将接收并处理它。这种在orders之间分发performers的方式是由邮件系统自动处理的。

关于具体的消息传递系统-您可以使用Kafka或RabbitMQ,或任何其他消息传递代理,因为它们中的大多数现在都支持点对点。

例如,通过将orders设置为Kafka主题并将所有performers置于单个消费者组中,来with Kafka you can achieve point-to-point。这样,当order到来时,Kafka将在同一消费者组的performers中对其进行负载均衡,因此只有一个performer会接收和处理它。

答案 1 :(得分:1)

我建议您查看Cadence Workflow。其编程模型大大简化了此类服务编排用例的实现。

消息传递系统不适合简单的流或通知方案之外的服务编排。