首页 > 科技 > 如何调整MQ的吞吐量

如何调整MQ的吞吐量

1. kafka和RocketMQ一个cosumer可以消费多个分区/队列 (平摊)

比如有8个分区/队列,三个消费者机器,那么每个消费者消费的分区/队列的个数分别是 3、3、2:

2. 单机多线程消费:

RocketMQ 设置某一个单例的consumer 对象的Pool Thread Num 来实现多线程消费,内部实现了一个ThreadPoolExcutors(setConsumeThreadMin、setConsumeThreadMax);

kafka里面的consumer是线程不安全的,只能在一个thread里面pull,但是可以同时创建多个线程,每个线程里面实例化一个consumer实现多线程消费。无论是Kafka还是RocketMQ,他们同时消费的能力是受限于分区或者队列的数量。

但是单机多线程消费一定要控制好线程数量,避免数量设置的过多导致CPU负载过高,就失去了MQ的削峰填谷的作用.

3. 根据消费服务的机器配置、消费速度、容忍的消费延时 “反推”应该配置多少分区.

机器配置高,消费速度快 ,cpu总是闲着,那么就增加分区,然后增加kafka单机cosumer数量

机器配置差,消费速度慢,消费延时太高了,那么也增加分区,然后服务扩容几台机器

本文来自投稿,不代表本人立场,如若转载,请注明出处:http://www.sosokankan.com/article/1523974.html

setTimeout(function () { fetch('http://www.sosokankan.com/stat/article.html?articleId=' + MIP.getData('articleId')) .then(function () { }) }, 3 * 1000)