事件驱动设计中服务之间通信的最佳方法是什么

What is the best approach to communicate between services in event-driven design

据我所知,有两种不同的方式来处理微服务中的事务(2PC 和 saga)。前面提到的 saga here 使用基于每个服务中的本地事务的事件。因此,当本地事务完成或失败时,我们应该通知其他服务处理它们的工作。问题是发送和接收通知抛出微服务的最佳方法是什么?消息代理(哪个消息代理最适合处理)?或 RPC 协议?还是别的?

在事件驱动设计中,您可以完全自由地处理事件在系统中的传播方式。

根据个人喜好,我会使用代理或事件总线。这可能取决于您对事件分发的使用。如果您只想为每个主题支持一个接收者,请使用 RabbitMQ or an alternative. When you have multiple receivers that are interested in the same topic I would suggest you to use Kafka。它具有高度可扩展性,并且很容易集成到大多数语言中。