Kafka内部实现原理
Posted 加米谷学院
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kafka内部实现原理相关的知识,希望对你有一定的参考价值。
文件存储与清理
Kafka内部消息是通过Log文件存储的。每个Partition就是一个物理目录,用于存放Log文件,假设一个Topic有两个Partition,那目录名就是topic_0和topic_1。Log文件是用Log文件中第一个消息的offset命名的,比如0000000.kafka。
所有的Log文件只允许追加写入,不允许从中间插入或者对已经写入的内容作任何修改,至于原因后面会提到。
Kafka不是数据库,不可能一直存储所有的Log文件,可以通过配置清理策略进行文件清理,支持文件占用空间和生成时间进行配置。配置了清理策略后就会按照策略删除Log文件,而不是一条条删除消息。
每条消息格式
Kafka文件中每条记录的格式是8 byte offset + 4 byte 消息长度+ 消息内容。
每条消息都由多个部分组成,最开始4byte是用CRC32对消息进行校验,以防信息传输过程中,消息格式中包含时间戳信息,如果配置了按照时间删除策略,就是利用了这里的时间戳。
如果消息真实的内容只有1 byte,那么每条消息长度至少是27byte,所以大量极短的消息是不合算的
成都加米谷大数据科技有限公司是一家专注于大数据人才培养的机构。由来自阿里、华为、京东、星环等国内知名企业的多位技术大牛联合创办,技术底蕴丰厚,勤奋创新,精通主流前沿大数据及人工智能相关技术。
以国家规划大数据产业发展战略为指引,以全国大数据技术和大数据分析人才的培养为使命,以提升就业能力、强化职业技术为目标。面向社会提供大数据、人工智能等前沿技术的培训业务。
以上是关于Kafka内部实现原理的主要内容,如果未能解决你的问题,请参考以下文章
Kafka:ZK+Kafka+Spark Streaming集群环境搭建VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网。