Kafka生产者对于消息顺序性的最佳实践
2023-04-18 12:33:41 时间
Kafka可以保证消息在一个Partition分区内的顺序性。如果生产者按照顺序发送消息,Kafka将按照这个顺序将消息写入分区,消费者也会按照同样的顺序来读取消息(通过自增偏移量)。
- 如何保证消息按顺序发送到Kafka-broker?
- kafka生产者有很多可配置项,这给kafka调优带来了一定的空间。其中,会影响消息顺序性投递的因素有
retries
: 消息投递失败重试次数max.in.flight.requests.per.connection
: 生产者在收到kafka响应之前可以投递多少个消息
# 消息的顺序在什么情况下会产生问题
- 当
retries > 0
重试次数大于0且max.in.flight.requests.per.connection > 1
会发生:前面一批次消息写入失败,后面一批次的消息写入成功,重试之后,前面一批次的消息写入成功,那么消息的顺序就产生了问题。
# 如何保证消息顺序性
- 可以把
retries
设置为0 ,不重试,那么消息肯定是有序的,只不过存在消息投递失败丢失的情况。 - 将
max.in.flight.requests.per.connection
设置为1,在接收到Kafka响应之前,只允许一个批次的消息处于投递中的状态,这当然会严重影响Kafka的吞吐量。
- 最佳实践:通常情况下,保证消息不丢失还是更为重要的考量,牺牲吞吐量还是次要的。
- 推荐配置:
retries>0; max.in.flight.requests.per.connection=1
相关文章
- python format如何实现格式化输出列表?
- python plotly库如何使用?
- 如何使用Python timeit模块?
- python concat函数有何用法?
- 如何实现SQL语句的优化?
- 脑子这个好东西,我们模仿得怎么样了?类脑计算报告
- pandas中Series常见属性有哪些?
- pandas中index索引功能是什么
- pandas的连接函数concat()函数如何使用
- 在位6年,谷歌GO语言负责人突然宣布离职!曾带领MongoDB、Docker走向辉煌
- T资讯 | 华为HarmonyOS 3.0正式官宣、抖音下线“圈子”功能、首款国产科学计算软件研发成功:源代码自主编写
- Python find()函数是什么
- 开源!港中文、MIT、复旦提出首个RNA基石模型
- Python write()和writelines():向文件中写入数据
- 英伟达正将其在AI领域的成功经验复制到量子计算
- Python seek()和tell()函数详解
- 互联网公司都怎么实现分页的,拿 MySQL 使劲Limit?
- mysql 与Oracle 常见的启动报错
- 2021年以后人工智能的几点思考?
- 清华、剑桥、UIC联合推出首个中文事实核查数据集:基于证据、涵盖医疗社会等多个领域