按需水平扩展事件驱动架构



当负载增加时,横向扩展事件驱动架构的最佳方法是什么?

  1. 许多人建议使用Kakfa作为EDA的消息队列源然而,Kafka只允许每个消费者组中的一个消费者分区。重新分区,特别是在高负载情况下可能既昂贵又耗时。
  2. 在一个消费者组中有许多消费者,这些消费者需要工作和迅速承认会有一些横向扩展,但现在需要考虑消息顺序以及加载完成。
  3. RabbitMQ队列可以创建和删除的飞行然而这将需要一个额外的协调器来帮助管理和分发负载。

这些都没有解决领土带来的负载平衡问题。

任何帮助都会很感激。由于

现在回答有点晚了,

您认为应该在消息总线层进行缩放的推理并不完全正确。如果我们采用端到端场景,负载的增加意味着对前端(API层)传入请求的增加。请参阅下面链接中的参考事件驱动架构。

假设存在某种形式的自动伸缩(Kubernetes复制因子,Amazon自动伸缩器),前端将向外扩展以处理额外的负载。在初始预处理之后,服务将在事件驱动架构中将事件发布到消息队列。

在Kafka中,主题分区是一个向外扩展的单位,因为一个生产者可以写一个分区。通常,您会根据单个分区的吞吐量预先定义分区的数量。

如参考文章所述,如果单个分区吞吐量为p你需要t作为吞吐量,则需要t/p分区。

如果t是正常预期负载的吞吐量,您可以通过创建尽可能多的分区来提前创建2倍,3倍,10倍的吞吐量。

单个分区的吞吐量通常超过10mb/s。

最新更新