我有 N 个主题作为输入,每个主题都按交付日期升序添加消息。主题在消息计数、日期范围、分区策略方面可能存在很大差异。但我知道每个主题的所有分区都将独立地按日期顺序排列。
我想将所有 N 个主题优先级队列样式合并到一个新的单个主题 T 中。T 也有它想要的任何分区计数和策略,因为唯一的要求是 T 的每个单独分区仍然按其自己的日期顺序排列。然后,我将 T 提供给具有分区意识的消费者,这些消费者将消耗它们并在到期日期之间闲置,因为我希望每条消息在其传递日期或紧随其传递日期之后传递。整个管道可以永远流动。
我预计所有 N 个输入主题和单个 T 输出主题之间的分区的精确分布方式会出现调整问题,并且欢迎具体影响的建议,但现在我主要对仅使用此操作的整体可行性感兴趣Kafka 主题,而不是 RDB 或键值存储。因此,在非最佳主题分区之间移动消息的一些额外 I/O 是可以的。
这对于 0.9 消费者是否可行,我可以控制知道哪些分区分配给每个消费者,这样我就可以让自动重新平衡发生,同时无休止地查看/合并到 T/提交偏移每个实际分区上最旧的消息?我必须具有分区意识才能有机会完成这项工作。
由于需要共享合并状态(添加到 T 的最后日期),在给定该状态需要的情况下,在单个进程、并行进程或多台服务器中坚持使用多个分区感知消费者是否更好?我赞成将状态保留在共享内存中,而不是在 ZK 或其他网络中联网。重新启动后,如果在单台机器上运行,我可以获得一次并维护它。
我是否忽略了 Kafka 的任何功能,这些功能可以使我所描述的内容变得更容易或更有效,例如在主题之间移动一些原子消息?我知道我违背了它的设计原则,而且这个场景与 TS 类似。
我需要在 Kafka 10 中命名我的消费者,就像我在 Kafka 8 中所做的一样,因为我有脚本可以嗅出并进一步使用这些信息。
显然,consumer.id 的默认命名已更改(并且现在还单独显示了 client.id)。我没有看到文档中提到或比较了这一点。
在 Kafka 10 术语中,我需要做什么才能让它生成与Kafka 8 中相同的 '<group> <host> ...' 消费者和/或客户端 ID 格式(而不是 'consumer-#- <guid>' 格式如下所示)?
卡夫卡 8:
/usr/local/kafka-0.8/bin/kafka-run-class.sh kafka.tools.ConsumerOffsetChecker --zkconnect localhost:2181 --group optimizer-group --topic optimizer-default-topic
Group Topic Pid Offset logSize Lag Owner
optimizer-group optimizer-default-topic 0 17059718 17059725 7 my-group_myhost.com-1497048808577-1575fa11-0
...
Run Code Online (Sandbox Code Playgroud)
卡夫卡10:
/usr/local/kafka/bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group optimizer-group --describe
TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID
eddude-error-topic 0 0 0 0 consumer-2-e839517b-a150-498d-9054-31ec7a655936 /10.xxx.xx.xxx consumer-2
...
Run Code Online (Sandbox Code Playgroud) 我想使用Kafka 10.2附带的嵌入式Zookeeper 3.4.9,而不是单独安装Zookeeper.每个Kafka经纪人在localhost上总是有一个1:1的Zookeeper.
因此,如果我在主机A,b,C,D和E上有5个代理,每个代理都运行一个Kafka和Zookeeper实例,那么只运行Kafka提供的Zookeeper就足够了吗?
嵌入式3.4.9 Zookeper与独立版本相比有什么缺点或配置限制?
在阅读了有关WinRT以及Build Decks之后,有人能够了解导致他们不允许我们通过我们自己的IFoo <T>的具体原因,但是他们是为自己认可的通用接口类型做的吗?
WinRT必须有一个机制来描述,解析和传递泛型参数,或者有一些花哨的东西围绕它自己使用.
我无法想象以非泛型方式"扁平化"我的一些C#类实用程序库,我主要想从C++中使用而不是JS.
我想要一流的Intellisense和API支持,就像你自己的MS类型一样.
那么......为什么我们也不能使用这种机制呢?这可能是放宽并允许以后或这是一个永久限制?或者这是由于语言投影层本身自定义处理特定的泛型类型而没有任何泛型类型共有的WinRT集中式元处理?
谢谢.