多实例下提升单分区单消费组速度

2021-07-14 19:50:43 +08:00
 Fu4ng
背景
外部团队给了一个 topic,这个 topic 只有一个分区,因为消息之间有强顺序关系。

问题
目前我们团队发现这个 topic 的消费速度有点慢,想优化下。

我自己想到了两种解决办法,感觉这两种方式都不太好。

解法 1
基于多单消费者的基础上,自己写个线程池,并发处理消息。
这个方法的缺点是只能有一个实例在消费消息(单消费者),无法扩展。

解法 2
引入 kafka, 把消息做一层转发,可以根据自己的业务逻辑做分区。
缺点是引入了一个中间件。


欢迎大佬们讨论
1297 次点击
所在节点    程序员
8 条回复
Fu4ng
2021-07-14 20:46:32 +08:00
感觉第二个办法会好点?
jimmyismagic
2021-07-14 20:49:37 +08:00
你这个题目得讲清楚,topic 是个啥,听样子也是个 kafka
消费慢,得看是读取慢,还是处理慢
Fu4ng
2021-07-14 20:56:33 +08:00
@jimmyismagic
是的 也是一个 kafka
Fu4ng
2021-07-14 20:56:47 +08:00
@jimmyismagic 是处理慢
jimmyismagic
2021-07-14 21:01:36 +08:00
@Fu4ng 扩展了就能处理快吗?得看你需要扩展几个线程,如果你要扩展到几百个分区才能处理,就扩展,否则就是 1
同时需要看一下处理是 cpu 密集型还是 io 密集型
Fu4ng
2021-07-14 21:07:05 +08:00
@jimmyismagic 十分感谢。很专业的解答
billlee
2021-07-14 21:21:50 +08:00
我选 1, 既然写入时是一个分区,那么单线程读取也肯定没有问题。读出来再分发到处理线程就可以了。

单机就搞个线程池,集群就搞个 flink.
echoZero
2021-07-15 10:20:14 +08:00
消息间的强顺序关系,不是所有消息都有强顺序吧,应该可以按照指定的方式来划分不同的分区吧。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/789549

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX