【发布时间】:2018-08-14 09:15:18
【问题描述】:
假设我有一个队列正在监听包含实时消息的 Kafka。
我还有一个“工作者”,它从队列中获取消息并在Elasticsearch 上执行更新。当我通过添加更多“worker”实例来扩展我的项目时,我如何保持消息的顺序?
我怎样才能避免一个“工作”实例从队列中获取后面的消息,但更早完成对Elasticsearch 的更新?
【问题讨论】:
-
利用 Kafka 分区并确保相关消息进入同一个分区,因为只有一个工作人员可以处理一个分区。
-
但是我所有的消息都进入了队列。 “工人”听队列,而不是卡夫卡。队列就像是 kafka 和 Elasticsearch 之间的中间缓冲区
-
已经有了Kafka,为什么还要排队?
-
我的错。在 Kafka 和“我的队列”之间,我有一个,可以说是“过滤器”。 “过滤器”的目的是在进行实际计算之前消除不需要的消息。
标签: python multithreading elasticsearch design-patterns apache-kafka