该系统包含三个业务参与者:
当客户创建订单时,应在所有现有执行者之间分配订单,然后系统必须决定要从哪个执行者那里获得订单。同时,如果其他人接受了,其他一些人也无法获得此命令。
使用哪种架构方法和工具,协议?
是否正确的说法是,如果我具有分布式业务模型,就意味着必须使用Rabbit,Kafka等分布式系统?
我知道这个问题范围很广,但是无论如何我都会很高兴得到任何建议。
答案 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。其编程模型大大简化了此类服务编排用例的实现。
消息传递系统不适合简单的流或通知方案之外的服务编排。