如何解决按需水平扩展事件驱动架构
- 很多人建议使用
Kakfa
作为 EDA 的消息队列源 但是Kafka
只允许一个消费者组中的每个消费者 划分。重新分区,尤其是在重负载情况下 可能既昂贵又耗时。 - 在一个消费者群体中有许多消费者,他们接受工作和 快速承认会提供一些水平缩放,但现在 需要考虑消息顺序以及加载完成。
- 使用
RabbitMQ
可以动态创建和删除队列 这将需要一个额外的协调器来帮助管理和 分配负载。
任何帮助将不胜感激。谢谢
解决方法
回答有点晚,但在这里,
您认为缩放应该发生在消息总线层的推理并不完全正确。如果我们采用端到端方案,增加的负载意味着增加对前端(API 层)的传入请求。请参阅以下链接中的 reference 事件驱动架构。
假设存在某种形式的自动扩展(Kubernetes 复制因子、Amazon 自动扩展),前端将扩展以处理额外负载。在初始预处理之后,服务会将事件发布到事件驱动架构中的消息队列。
特别是在 Kafka 中,主题分区是一个扩展单元,因为一个生产者可以写入一个分区。通常您会根据单个分区的吞吐量预先定义分区数。
正如参考文献 article 提到的,如果单个分区吞吐量是 p 并且您需要 t 作为吞吐量,那么您需要 t/p > 分区。
如果 t 是正常预期负载的吞吐量,您可以通过创建尽可能多的分区来提前为 2x、3x、10x 吞吐量创建供应。
通常单个分区的吞吐量超过 10 Mb/s。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。