如何在所有参与者之间分配订单?

How to distributed order between all participants?

有一个系统有三个业务参与者:

  1. 表演者
  2. 客户(移动设备、网络界面)
  3. 订单

当客户创建订单时,它应该分配给所有现有的表演者,然后系统必须决定哪个表演者将获得订单。同时也有一些人接了也拿不到这个订单。

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

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

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

通常,区分两种类型的消息传递模型 - point-to-point model (queue semantic) and publisher-subscriber model(主题语义)。从您的问题看来,您似乎需要实施点对点模型。因此,基本上,一些 customer 服务会将 order 发布到队列,并且单个 performer 将接收并处理它。这样 performers 之间的调度 orders 由消息系统自动处理。

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

例如,with Kafka you can achieve point-to-point 拥有 orders Kafka 主题,并将所有 performers 放在单个消费者组中。这样当order来的时候,Kafka会在同一个消费者组performers之间进行负载均衡,所以只有一个performer接收并处理。

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

消息系统不适合超出简单流式传输或通知场景的服务编排。