red*_*ant 6 apache-kafka kafka-consumer-api
我有 N 个主题作为输入,每个主题都按交付日期升序添加消息。主题在消息计数、日期范围、分区策略方面可能存在很大差异。但我知道每个主题的所有分区都将独立地按日期顺序排列。
我想将所有 N 个主题优先级队列样式合并到一个新的单个主题 T 中。T 也有它想要的任何分区计数和策略,因为唯一的要求是 T 的每个单独分区仍然按其自己的日期顺序排列。然后,我将 T 提供给具有分区意识的消费者,这些消费者将消耗它们并在到期日期之间闲置,因为我希望每条消息在其传递日期或紧随其传递日期之后传递。整个管道可以永远流动。
我预计所有 N 个输入主题和单个 T 输出主题之间的分区的精确分布方式会出现调整问题,并且欢迎具体影响的建议,但现在我主要对仅使用此操作的整体可行性感兴趣Kafka 主题,而不是 RDB 或键值存储。因此,在非最佳主题分区之间移动消息的一些额外 I/O 是可以的。
这对于 0.9 消费者是否可行,我可以控制知道哪些分区分配给每个消费者,这样我就可以让自动重新平衡发生,同时无休止地查看/合并到 T/提交偏移每个实际分区上最旧的消息?我必须具有分区意识才能有机会完成这项工作。
由于需要共享合并状态(添加到 T 的最后日期),在给定该状态需要的情况下,在单个进程、并行进程或多台服务器中坚持使用多个分区感知消费者是否更好?我赞成将状态保留在共享内存中,而不是在 ZK 或其他网络中联网。重新启动后,如果在单台机器上运行,我可以获得一次并维护它。
我是否忽略了 Kafka 的任何功能,这些功能可以使我所描述的内容变得更容易或更有效,例如在主题之间移动一些原子消息?我知道我违背了它的设计原则,而且这个场景与 TS 类似。
归档时间: |
|
查看次数: |
935 次 |
最近记录: |