我有N个主题作为输入,每个主题都按递增日期顺序添加消息。主题在消息计数,日期范围,分区策略方面可能有很大差异。但我知道每个主题的所有分区都将按日期顺序排列。
我想将所有N个主题优先级队列样式合并到一个新的单个主题T.T还具有它想要的任何分区计数和策略,因为唯一的要求是T的每个单独分区仍然是自己的日期顺序。然后我将T提供给分区感知的消费者,这些消费者将消费它们并在截止日期之间闲置,因为我希望每个消息都在其交付日期之后或之后发送。整个管道可以永久流动。
我希望调整问题确切地分配了所有N个输入主题和单个T输出主题之间的分区,并且特别受欢迎的建议是受欢迎的,但是现在我主要对整体的可行性感兴趣这完全只使用Kafka主题,而不是RDB或键值存储。因此,非最佳主题分区之间的一些额外的I / O移动消息是可以的。
这是否适用于0.9用户,我可以控制知道哪些分区分配给每个用户,因此我可以让自动重新平衡发生,同时无休止地查看/合并到T / commit-offset最旧的消息在每个实际分区?我必须有分区意识才有可能实现这一点。
由于需要共享合并状态(添加到T的最后一个日期),最好是在单个进程,并行进程或多个服务器中坚持使用多个分区感知的使用者,因为这些状态需要?我赞成将状态保存在共享内存中,而不是在ZK或其他任何网络中联网。重新启动时,如果在一台计算机上运行,我可以一次运行并维护它。
我是否忽略了任何Kafka功能,这些功能可以使我描述的内容更容易或更有效,就像某些原子消息在主题之间移动一样?我知道我反对它的设计,这种情况类似于TS。