首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

大数据消息队列选型-kafka系列调优完结篇

如何提升生产吞吐量

消费者调优

生产者调优

(1)buffer.memory:发送消息的缓冲区大小,默认值是32m,可以增加到64m。

(2)batch.size:默认是16k。如果batch设置太小,会导致频繁网络请求,吞吐量下降;如果batch太大,会导致一条消息需要等待很久才能被发送出去,增加网络延时。

(3)linger.ms,这个值默认是0,意思就是消息必须立即被发送。一般设置一个5-100毫秒。如果linger.ms设置的太小,会导致频繁网络请求,吞吐量下降;如果linger.ms太长,会导致一条消息需要等待很久才能被发送出去,增加网络延时。

(4)compression.type:默认是none,不压缩,但是也可以使用lz4压缩,效率还是不错的,压缩之后可以减小数据量,提升吞吐量,但是会加大producer端的CPU开销。

2)增加分区

3)消费者提高吞吐量

4)增加下游消费者处理能力

数据精准一次

1)生产者角度

acks设置为-1 (acks=-1)。

幂等性(enable.idempotence = true) + 事务。

2)broker服务端角度

分区副本大于等于2 (--replication-factor 2)。

3)消费者

消费者输出的目的地必须支持事务(MySQL、Kafka)。

合理设置分区数

(1)创建一个只有1个分区的topic。

(2)测试这个topic的producer吞吐量和consumer吞吐量。

(3)假设他们的值分别是Tp和Tc,单位可以是MB/s。

(4)然后假设总的目标吞吐量是Tt,那么分区数 = Tt / min(Tp,Tc)。

例如:producer吞吐量 = 20m/s;consumer吞吐量 = 50m/s,期望吞吐量100m/s;

分区数 = 100 / 20= 5分区

分区数一般设置为:3-10个

分区数不是越多越好,也不是越少越好,需要搭建完集群,进行压测,再灵活调整分区个数。

单条日志大于1m

服务器挂了怎么办?

在生产环境中,如果某个Kafka节点挂掉。

正常处理办法:

(1)先尝试重新启动一下,如果能启动正常,那直接解决。

(2)如果重启不行,考虑增加内存、增加CPU、网络带宽。

(3)如果将kafka整个节点误删除,如果副本数大于等于2,可以按照服役新节点的方式重新服役一个新节点,并执行负载均衡。

到此kafka系列已经完成,请大家慢慢享用

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OlbxLCwJkYawvnvTCxCR_FMw0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券