Kafka消费者/镜像制造者在不同DC的奇怪行为

时间:2014-05-11 14:18:04

标签: java multithreading sockets apache-kafka

我一直在DCs 建立 2个Kafka集群(0.8.1.1),一个在亚洲,另一个在欧洲。所有这些都在EC2 m1.xlarge 机器上运行。

我的目标是从亚洲群集<欧洲群集 “高速且稳定”的速度 复制主题数据。

我最终得到了3个解决方案,以实现以下目标:

设N =亚洲集群中某个主题的分区数。

1)使用Kafka提供的 Mirrormaker -num.streams = N

它以<30>以上的速度运行超慢,而我们预计大约1 Gbps ,因为当生产者向Kafka经纪人提供数据时,我们已经注意到亚洲集群的这一速度。

2)我尝试使用欧洲的高级API创建我自己的消费者版本,直接从亚洲群集中消费数据,并以 30到40 Mbps左右的相同速率结束

我以这种方式设计了消费者。

  • 1 消费者群体( 1 kafka.javaapi.consumer.ConsumerConnector)
  • N 线程来处理来自 1 消费者群体的 N

3)我尝试使用高级API创建另一个版本的消费者,结果大约 400 Mbps!,这远远高于2提到的方式

这是我的新设计

  • N 具有相同组ID的消费者群体( N kafka.javaapi.consumer.ConsumerConnector)
  • N 处理 N 消费者群组
  • 的主题
  • 1 消费者群体处理 1

此外, N(分区)的数量越多,我从解决方案获得的速度越快3),而解决方案1)和2)仍保持 30Mbps的速度与N的值无关。

目前,为了达到解决方案3的速度达到400 Mbps,我必须将N设置为 N = 60 时非常大,亚洲群集中某个主题中的每条消息都平均大小为50KB

所以我真正的问题是,我没有看到解决方案3)与其他方面之间的技术差异,但是使用解决方案3消耗数据的速度如何变得与其他方面有很大差异?

0 个答案:

没有答案