

一、什么是Kafka?
ApacheKafka官方定义为一个事件流平台,具备以下关键能力:
1.发布与订阅事件流:支持事件的写入和读取,并可从其他系统持续导入和导出数据。
2.持久化存储事件流:可自定义存储时长,保证数据的可靠存储。
3.实时与回溯处理:支持实时处理事件流,也支持对历史事件进行回溯分析。
一个简单场景理解Kafka:
系统A将数据发送到Kafka
Kafka持久化存储该数据
系统B从Kafka中读取系统A发送的数据
在此过程中,涉及两个核心问题:
1.事件编码格式:Kafka使用纯二进制字节序列存储数据,而非JSON、ProtocolBuffer等结构化格式。
2.传输模型:Kafka同时支持以下两种消息传输模型:
点对点模型(消息队列模型):消息只能被一个消费者消费
发布/订阅模型:基于Topic的发布与订阅,允许多个生产者和多个消费者
二、为什么要使用Kafka?
Kafka的核心价值主要体现在以下场景中:
1.流量缓冲
当系统A出现流量突增时,若直接对接系统B,可能瞬间压垮下游系统。Kafka作为中间层,能平滑流量峰值,为系统B提供缓冲时间,避免系统崩溃和链路雪崩。
2.数据同步
Kafka常与Flink等流处理框架结合,用于:
离线数据链路流转
离线数据到在线服务的传输
跨系统数据同步
三、Kafka核心概念全景
以下是Kafka架构中的关键组件及其作用:
| 概念 | 说明 |
| Topic | 发布和订阅的对象,通常按业务拆分,不同业务使用不同Topic |
| Producer | 生产者,负责将消息写入Topic,并选择写入的分区 |
| Consumer | 消费者,从Topic中读取消息 |
| ConsumerGroup | 由多个Consumer组成,共同消费一组Topic,实现负载均衡 |
| Partition | 分区,类似于HBase的Region,用于支持横向扩展和并行处理 |
| Replica | 副本,包括Leader和Follower,保障高可用 |
| Broker | Kafka服务端进程,处理客户端请求,通常部署在多台机器上 |
| Rebalance | 当Consumer加入或离开时,重新分配分区的过程 |
| Offset | 消息在分区中的唯一递增标识 |
| ConsumerOffset | 消费者记录自己消费进度的位置 |
关键机制详解:
1.分区与副本
每个Topic可分为多个Partition,以支持横向扩展。
每个Partition有1个Leader和n个Follower副本。
写入和消费仅由Leader处理,Follower同步Leader数据。
2.消费者组与负载均衡
一个Partition只能被同一个ConsumerGroup中的一个Consumer消费。
支持动态扩缩容,新增或移除Consumer时会触发Rebalance。
3.存储机制
Kafka使用Log结构存储数据,每个Log由多个LogSegment组成。
消息仅支持追加写入,写满一个Segment后创建新的。
定期清理旧Segment以释放磁盘空间。
四、总结
本文简要介绍了:
Kafka作为事件流平台的核心能力
其在实际场景中的主要价值:流量缓冲与数据同步
Kafka的核心架构概念,包括Topic、Producer、Consumer、Partition、Replica、Broker等
理解这些基础概念是进一步学习Kafka高级特性、性能调优和应用实践的重要前提。接下来,我们可以深入Kafka的生产与消费机制、副本同步、消息持久化等主题,逐步构建完整的Kafka知识体系。

一家致力于优质服务的软件公司
8年互联网行业经验1000+合作客户2000+上线项目60+服务地区

关注微信公众号
