有一个具有三个业务参与者的系统:
当客户创建订单时,应在所有现有执行者之间分配订单,然后系统必须决定哪个执行者将获得订单。同时,如果其他人接受了,则其他一些人也无法获得此命令。
哪种架构方法和要使用的工具,协议?
这是正确的说法,如果我拥有分布式业务模型,这意味着我必须使用Rabbit,Kafka等分布式系统?
我知道这个问题是如此广泛,但是无论如何我都会很高兴得到任何建议。
出于您的目的,您可以使用某些消息传递系统,该系统支持point-to-point model(队列语义),而不是publisher-subscriber model(主题语义)。因此,基本上,某些customer
服务会将order
发布到队列,而单个performer
将接收并处理它。
关于实现,您可以使用Kafka或RabbitMQ,也可以使用任何其他消息传递系统,因为当今大多数系统都支持点对点。
例如,使用Kafka,您可以通过使orders
Kafka为主题,并将所有performers
放在单个消费者组中来实现点对点。这样,当order
出现时,Kafka将在同一使用者组中的performers
中对它进行负载均衡,因此只有一个performer
会接收和处理它。