1-【源码剖析】kafka核心概念

从今天开始开始在csdn上记录学习的笔记,主要包括以下几个方面:

  • kafka
  • flink
  • doris

本系列笔记主要记录Kafka学习相关的内容。在进行kafka源码学习之前,先介绍一下Kafka的核心概念。

消息

消息是kafka中最基本的数据单元,由key和value组成,都是字节数组。key主要来实现路由功能,value是真正的有效负载。

topic&分区&Log

topic是用于存储消息的逻辑概念,是一个消息集合。

每个topic可以划分为多个分区,每个分区内的数据是不重叠的,每个消息在添加到分区时,都会分配一个编号offset,来保证消息在分区内的顺序。

分区在逻辑上对应着一个Log,当生产者将消息写入分区时,实际上是写入到了分区对应的Log中。Log是一个逻辑概念,可以对应磁盘上的一个文件夹,Log由多个Segment组成,每个Segment对应一个日志文件和索引文件。

保留策略&日志压缩

发送到kafka的数据会被保存下来,但不会像数据库那样永久保存,为了避免数据库被占满,kafka有相应的保留策略,周期性删除陈旧消息。kafka中有两种保留策略:基于时间和topic大小的保留策略。

kafka会对存储的消息进行压缩,以减少磁盘占用。

broker

一个单独的kafka server就是一个broker。broker的主要工作就是接收生产者发过来的消息,同时接收消费者的请求,返回存储的数据。一般一个broker占一台物理机器。

副本

kafka对消息进行了冗余备份,每个分区可以有多个副本,每个副本消息是一样的。每个分区至少有一个副本,所有副本中选取一个当做Leader,其它副本从Leader处拉取消息。

一般情况下,同一分区的多个副本会分配到不同的broker上。一个topic包括多个分区,每个分区的数据是不一样的,可以实现水平扩展,当数据量变大时可以增大分区的数量;每个分区有多个副本,多副本情况下可丢失其中某个副本。

参考书籍《Apache Kafka源码剖析》

相关推荐
极客先躯3 小时前
高级java每日一道面试题-2026年02月12日-实战篇[Docker]-什么是容器的 Seccomp 配置?如何自定义?
java·运维·分布式·docker·容器·自动化·文件
Francek Chen3 小时前
【大数据处理与分析】MapReduce:06 MapReduce编程实践
大数据·hadoop·分布式·mapreduce
小马爱打代码3 小时前
Kafka消息队列监控:Topic积压、吞吐量、Broker负载及消费者组全观测
分布式·kafka
轻口味4 小时前
轻规划鸿蒙开发实战10:分布式数据同步深度博弈,UserId 隔离与并发数据冲突消解机
分布式·华为·harmonyos·鸿蒙
Solis程序员4 小时前
Raft:分布式系统的定海神针
java·分布式·kafka·rabbitmq·agent·raft
我是一颗柠檬4 小时前
【Java项目技术亮点】Leaf号段模式双Buffer优化
java·开发语言·分布式·后端·架构
芒鸽4 小时前
HarmonyOS 分布式开发实战:设备协同、数据共享与跨设备迁移
分布式·wpf·harmonyos
省四收割者4 小时前
从硬件中断到分布式协程:全景解构高并发机制与 C / Golang 的巅峰对决
c++·分布式·嵌入式硬件·golang
知识分享小能手5 小时前
Hadoop学习教程,从入门到精通, HBase 分布式数据库 — 完整知识点与案例代码(8)
数据库·hadoop·分布式
王小王-1235 小时前
基于 Hadoop 的心脏病分析可视化与风险预测系统
大数据·hadoop·分布式·心脏病预测系统·疾病预测·冠心病风险预测