kafka数据写入速度优化【项目经验总结】

本文总结了一次针对Kafka数据写入速度优化的项目经验,通过调整Kafka集群参数log.flush.interval.messages和log.flush.interval.ms显著提升了吞吐量。在面临100w条每秒的高吞吐量需求时,通过增加挂载磁盘数量和优化网络通信,成功解决了客户的问题,但也带来了轻微的延迟增加。
摘要由CSDN通过智能技术生成

先说结论:调整集群参数

# 每当producer写入10000条消息时,刷数据到磁盘 log.flush.interval.messages=10000

# 每间隔1秒钟时间,刷数据到磁盘 log.flush.interval.ms=1000

好久没有更新了,

沣哥给介绍了个对象,也不知道能不能成,看的看不上咱0.0

回归主题,前几天领导给我派了个活,说客户的kafka消费速度有问题,派我出差去排查一下,我到了现场后先梳理了一下数据链路,一个服务(二进制数据流)->kafkatopic1->kafkatopic2->flink->DB

大概的数据链路是这样的。

排查思路:

1.消费数据没有积压

我先是看一下消费数据有没有积压,没有积压就意味着消费是没有问题的,毕竟绝大多数的kafka问题还是消费速度这里。

2.确认问题所在

顺序其实是有问题的,我按照常规思路去排查kafka问题,而忽略了客户本身的猜想,客户觉得kafka的集群有问题。

于是我们使用kafka自带的压测脚本进行测试,发现的确当前的吞吐量和集群配置不相符(5台机器,48c200g),每台机器的磁盘有9块,客户的要求是吞吐量达到100w条每秒,对应的消费速度就是大约要在150M/s的吞吐速度。

问题解决:

我们看了一下挂在磁盘,发现只用了4块磁盘,其他5块并没有使用,于是把其他5块磁盘也挂了上去。

master到broker网络通信延迟较低,broker之间网络通信不稳定,有时延迟较高,这个需要运维同学去排查了

Kafka数据写入MySQL是指将从Kafka消息队列中获取的数据写入MySQL数据库中。在实际应用中,这种方式常用于数据的实时处理和持久化存储。 在将数据写入MySQL之前,我们需要先搭建好Kafka集群和MySQL数据库,并确保它们的连接和配置正确。接下来,可以采取以下几个步骤将数据Kafka写入MySQL: 1. 创建一个Kafka消费者来消费Kafka消息队列的数据。 2. 接收Kafka消息,将其转换为MySQL数据库所需的格式。这个格式一般是以表格的形式组织,并遵循MySQL的数据类型。 3. 连接MySQL数据库,并创建一个MySQL客户端。 4. 在MySQL客户端中执行插入操作,将从Kafka消息队列中获取的数据插入到MySQL数据库的对应表中。 5. 确认数据插入成功后,可以关闭与MySQL数据库的连接,释放资源。 在实际操作中,需要注意以下几点: 1. 数据写入MySQL时要保证数据一致性和正确性,可以对数据进行校验和去重,避免重复写入或丢失数据。 2. 可以按批次进行数据写入,提高效率,减少数据库连接和插入操作的次数。 3. 对于大规模的数据写入,可以考虑使用MySQL的批量插入功能,例如使用多值的INSERT语句或LOAD DATA INFILE命令。 4. 需要在代码中处理可能出现的异常情况,例如连接错误、插入失败等,并进行相应的处理和日志记录。 总之,通过合理配置和编程,将Kafka数据写入MySQL可以实现实时数据处理和持久化存储的需求,适用于很多场景,如日志分析、实时计算等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值