- 主题:怎样提高阿帕奇卡夫卡消费者的消费速度?
Spring KafkaTemplate,它是一个单线程的,速度很慢。
消息接收速度、消息处理速度:
如果一个消息的接收速度很快,
但是这个消息的处理速度很慢,
那么整体还是很慢。
(早知如此,当初为什么还要用Kafka?用个activemq/rabbitmq效果不是一样的么?
接收快,接收之后处理慢,还不如接收也慢一点)
Kafka一个分区对应一个线程
如果topic是20个分区 消费者是16个线程 那么会有4个分区的消息不会被消费
Kafka的消息是无序的;如果要有序,只能有一个分区。
如果一个topic有10个分区,
那么“多线程处理一个topic的消息”和“多线程处理某个分区的消息”是一个意思吗?
后者是不是要在线程里面再起线程?
--
修改:PlutoKey FROM 117.155.136.*
FROM 117.155.136.*
如果topic是20个分区 消费者是16个线程 那么会有4个分区的消息不会被消费
~~~
这个是错的吧,反过来是对的
同一个消费组下,16个分区,20个线程消费,有4个线程消费不到消息
消费消息和处理消息是两回事,Kafka是保证你消费消息快(吞吐高)
--
FROM 123.125.250.*
具体业务处理的硬开销从来不是中间件需要考虑的问题
kafka消费者用pull模式已经最大限度避免了业务开销拖累整个mq工作了
【 在 PlutoKey (铠甲勇士) 的大作中提到: 】
: Spring KafkaTemplate,它是一个单线程的,速度很慢。
: 消息接收速度、消息处理速度:
: 如果一个消息的接收速度很快,
: ...................
--
FROM 218.81.10.*
你也知道是不是Kafka慢,是你的消费逻辑慢,那办法只有2个:
1. 优化消费逻辑性能。
2. 增加消费的并行度,也就是线程数。
Kafka消费并行度的上限就是partition数量。
另外,你换其它的MQ也是一样的,没有一种MQ能解决你消费慢的问题。
--
FROM 123.113.110.252
20个分区,16个消费,默认是round-robin啊。
【 在 PlutoKey (铠甲勇士) 的大作中提到: 】
: Spring KafkaTemplate,它是一个单线程的,速度很慢。
: 消息接收速度、消息处理速度:
: 如果一个消息的接收速度很快,
: ...................
--
FROM 223.104.95.*
简单来说2种情况:
1. 消息处理时不要求时序,这个横向扩展消费者算力即可,当然后续下游也要考虑进去,比如算个东西存db,db也需要扩展
2. 消息处理要求时序,无脑分片不行了,就看看能不能按场景分片,比如不要求全局有序,可以按userid有序、或者其他分桶方式有序,基于这个准则分通道处理,一般来说需要全局有序的场景不太多,设计的时候就应该尽量避免
--
FROM 111.206.214.*