Kafka删除历史消息的策略
1 删除策略
Kafka日志管理器允许定制删除策略。目前的策略是删除修改时间在N天之前的日志(按时间删除),也可以使用另外一个策略:保留最后的N GB数据的策略(按大小删除)。为了避免在删除时阻塞读操作,采用了copy-on-write形式的实现,删除操作进行时,读取操作的二分查找功能实际是在一个静态的快照副本上进行的,这类似于Java的CopyOnWriteArrayList。
Kafka消费日志删除思想:Kafka把topic中一个parition大文件分成多个小文件段,通过多个小文件段,就容易定期清除或删除已经消费完文件,减少磁盘占用
1 2 3 4 5 6 7 |
log.cleaner.enable=false 默认使用 |
2 压缩策略
将数据压缩,只保留每个key最后一个版本的数据。首先在broker的配置中设置log.cleaner.enable=true启用cleaner,这个默认是关闭的。在Topic的配置中设置log.cleanup.policy=compact启用压缩策略。
压缩策略的细节如下:
如上图,在整个数据流中,每个Key都有可能出现多次,压缩时将根据Key将消息聚合,只保留最后一次出现时的数据。这样,无论什么时候消费消息,都能拿到每个Key的最新版本的数据。
压缩后的offset可能是不连续的,比如上图中没有5和7,因为这些offset的消息被merge了,当从这些offset消费消息时,将会拿到比这个offset大的offset对应的消息,比如,当试图获取offset为5的消息时,实际上会拿到offset为6的消息,并从这个位置开始消费。
这种策略只适合特俗场景,比如消息的key是用户ID,消息体是用户的资料,通过这种压缩策略,整个消息集里就保存了所有用户最新的资料。
压缩策略支持删除,当某个Key的最新版本的消息没有内容时,这个Key将被删除,这也符合以上逻辑。
转自:https://www.cnblogs.com/moonandstar08/p/6146995.html
Kafka中用于保存消费者消费位移的主题“__consumer_offsets”使用的就是Log Compaction策略。
转自:https://blog.csdn.net/u013256816/article/details/80487758?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-10&spm=1001.2101.3001.4242
cleanup.policy: delete
segment.bytes: 每个segment的大小,达到这个大小会产生新的segment, 默认是1G
segment.ms: 配置每隔n ms产生一个新的segment,默认是168h,也就是7天
retention.bytes: 总的segment的大小限制,达到这个限制后会删除旧的segment,默认值为-1,就是不会删除
retention.ms: segment的最后写入record的时间-当前时间 > retention.ms 的segment会被删除,默认是168h, 7天
转自:https://blog.csdn.net/u013200380/article/details/106453013?utm_medium=distribute.pc_relevant.none-task-blog-OPENSEARCH-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-2.control
Kafka删除历史消息的策略相关推荐
- kafka的topic和分区策略——log entry和消息id索引文件
Topic在逻辑上可以被认为是一个在的queue,每条消费都必须指定它的topic,可以简单理解为必须指明把这条消息放进哪个queue里. 为了使得Kafka的吞吐率可以水平扩展,物理上把topic分 ...
- kafka相关术语及消息分配策略
相关术语 从集群模型上说: broker: kafka集群中的每一个存储节点,用来持久化存储消息队列的. 可以自定义存储时间.可以保证消息的安全性(重用性:消费者可以重新消费信息 Broker没有副本 ...
- kafka 同步提交 异步_腾讯游戏工程师分享:简单理解 Kafka 的消息可靠性策略
作者:hymanzhang,腾讯 IEG 运营开发工程师 背景 部门的开发同学最近在开发一个活动的过程中,需要关注大量的应用后台逻辑,捕捉各种事件的触发.在设计时打算采用 kafka 消息队列进行业务 ...
- 简单理解 Kafka 的消息可靠性策略
作者:hymanzhang,腾讯 IEG 运营开发工程师 背景 部门的开发同学最近在开发一个活动的过程中,需要关注大量的应用后台逻辑,捕捉各种事件的触发.在设计时打算采用 kafka 消息队列进行业务 ...
- kafka生产者消息分区策略
前言 众所周知,kafka的topic具有分区的概念,生产者写入数据到kafka之后,涉及到数据到底写到哪个分区? 常用的分区写入策略 生产者写入消息到topic,Kafka将依据不同的策略将数据分配 ...
- 详解,最新整理,RabbitMQ,RocketMQ,Kafka 事务性,消息丢失,消息顺序性和消息重复发送的处理策略
消息队列常见问题处理 分布式事务 什么是分布式事务 我们的服务器从单机发展到拥有多台机器的分布式系统,各个系统之前需要借助于网络进行通信,原有单机中相对可靠的方法调用以及进程间通信方式已经没有办法使用 ...
- RabbitMQ,RocketMQ,Kafka 事务性,消息丢失,消息顺序性和消息重复发送的处理策略
消息队列常见问题处理 分布式事务 什么是分布式事务 我们的服务器从单机发展到拥有多台机器的分布式系统,各个系统之前需要借助于网络进行通信,原有单机中相对可靠的方法调用以及进程间通信方式已经没有办法使用 ...
- 修改删除微信公众平台的历史消息
[注意]本经验只适合发送过的图文消息. 1.先进入微信平台https://mp.weixin.qq.com/,对你的微信进行登录. 2.在左边菜单栏里选择[管理]--[素材管理]. 3.每条已经编辑发 ...
- Apache Samza流处理框架介绍——kafka+LevelDB的Key/Value数据库来存储历史消息+?
转自:http://www.infoq.com/cn/news/2015/02/apache-samza-top-project Apache Samza是一个开源.分布式的流处理框架,它使用开源分布 ...
- Kafka 原理以及分区分配策略剖析
欢迎关注方志朋的博客,回复"666"获面试宝典 一.简介 Apache Kafka 是一个分布式的流处理平台(分布式的基于发布/订阅模式的消息队列[Message Qu ...
最新文章
- 【C语言】简单C编程题-同位相同的N项之和/标准输入花括号成对判断/行号行输出...
- 死脑筋要活用(我只放贴图)01
- linux 系统负载
- 职场警示录:怎样和“小人”和睦相处
- ODS(Operational Data Store)定义
- java 三大集合_java中的三大集合入门笔记(简单实用)
- 第六十期:玩了分布式这么久,你不会连Kafka都不清楚吧
- RabbitMQ的消息确认机制
- LeetCode MySQL 1890. 2020年最后一次登录(year)
- ginapi服务器性能,如何使用 Gin 和 Gorm 搭建一个简单的 API 服务 (一)
- Mac如何修改文件默认打开方式?
- 频率泄露以及加窗原理
- Opencascade TopoDS_Shape Orientation
- 老生常谈:frame和Bounds的区别
- ensp 移动主机搜索不到AP信道_案例WiFi信道上的一个坑
- java课程设计(学生信息管理系统设计)+数据库
- cmos管宽长比,OC, OD门和线与逻辑,传输门,竞争冒险,三态门
- go-micro使用Grpc
- Kymeta加入美国陆军装甲旅战斗队试点项目
- 打开和关闭HDMI输出方法
热门文章
- Unity2019安卓平台新手安装设置建议
- HAOI2017 八纵八横——线段树分治+线性基
- mysql并发ppt_高并发下MySQL数据库的优化.ppt
- 最简单的基于FFmpeg的视频编码器-更新版(YUV编码为HEVC(H.265))
- wps合并重复项并求和_Excel中重复项求和的方法
- 一次编写命令时遇到的问题,Ambiguous method call.both
- wtg linux双系统,说走就走的WTG系统 国民好物aigo固态硬盘让你随时随地双系统
- 东芝笔记本电脑重装系统
- 机器人三星云顶之弈_机器码|云顶之弈10.16三星机器人加强介绍-云顶之弈10.16三星机器人加强了吗_234游戏网...
- 关于MSP430f149Ti官方例子-UART01