Zookeeper与Kafka学习笔记

一、Zookeeper核心要点

1. 核心特性

分布式协调服务,用于维护配置/命名/同步等元数据

采用层次化数据模型(Znode树结构),每个节点可存储<1MB数据

典型应用场景:

Hadoop NameNode高可用

HBase元数据管理

Kafka集群选举与状态管理

2. 设计限制

内存型存储,不适合大数据量场景

数据变更通过版本号(Version)控制,实现乐观锁机制

采用ZAB协议保证数据一致性

二、Kafka核心架构

1. 三大核心角色

消息系统:解耦/削峰/异步通信,支持顺序性与回溯消费

存储系统:持久化存储+多副本机制,数据保留策略可配置

流处理平台:提供窗口/连接/聚合等实时处理能力

2. 核心组件

|----------|----------------------------|
| 组件 | 功能说明 |
| Producer | 消息生产者,支持自动负载均衡/指定分区写入 |
| Broker | 服务节点,负责消息持久化存储与副本同步 |
| Consumer | 采用Pull模式消费,记录offset保证消费连续性 |

3. 核心机制

主题与分区:

Topic逻辑分类,Partition物理分片(提升并发能力)

单Partition内消息有序,不同Partition间无序

多副本机制:

Leader处理读写,Follower同步数据

ISR(In-Sync Replicas)机制保障高可用

三、Zookeeper与Kafka协同

集群管理:记录Broker注册信息与存活状态

元数据存储:

存储Topic配置、Partition分配方案

维护Consumer Group的offset信息(旧版本)

选举机制:

Controller选举(集群主节点)

Partition Leader选举

四、消息存储与消费

1. 存储设计

分区对应物理日志文件(Segment分段存储)

索引文件采用稀疏存储,节省空间

消息按时间/大小策略清理旧数据

2. 消费模式

|--------|-----------------|
| 模式 | 特点 |
| 点对点 | 单消费组单消费者 |
| 发布-订阅 | 多消费组独立消费 |
| 高效消费配置 | 消费者数=分区数实现最大并行度 |

五、常用命令速查

1. Topic管理

复制代码
bash# 创建主题(4分区2副本)
kafka-topics.sh --create --bootstrap-server localhost:9092 \
--topic my-topic --partitions 4 --replication-factor 2

# 查看主题详情
kafka-topics.sh --describe --bootstrap-server localhost:9092 --topic my-topic

2. 生产消费

复制代码
bash# 控制台生产者(带Key发送)
kafka-console-producer.sh --bootstrap-server localhost:9092 \
--topic my-topic --property parse.key=true --property key.separator=":"

# 控制台消费者(显示元数据)
kafka-console-consumer.sh --bootstrap-server localhost:9092 \
--topic my-topic --property print.partition=true --property print.offset=true

3. 集群管理

复制代码
bash# 查看Broker状态
kafka-cluster.sh --bootstrap-server localhost:9092 --describe

# 修改集群配置
kafka-configs.sh --bootstrap-server localhost:9092 --entity-type brokers \
--entity-name 0 --alter --add-config "log.retention.hours=168"

六、部署要点

环境要求:JDK8+、Zookeeper集群(建议3/5节点)

推荐工具:Kafka-UI进行可视化监控

性能调优方向:

分区数规划

副本因子设置

消息保留策略

压缩算法选择(gzip/lz4等)

相关推荐
外收内放5 小时前
面向对象高级(实战案例)
开发语言·python·学习
薛定e的猫咪6 小时前
(ICLR 2020)MAML 靠的不是快速学习,而是特征复用
人工智能·深度学习·学习·算法·机器学习
薛定e的猫咪7 小时前
(ICLR 2026)DF-META:面向 FJSP 的无导数元学习实例自适应调度
人工智能·深度学习·学习·算法·机器学习
别动我齐刘海10 小时前
机器人 C++ / 系统联调补强2——异常处理、Protobuf
linux·c++·人工智能·学习·算法·机器学习·机器人
一直C10 小时前
嵌入式 Linux 驱动开发学习笔记:内核定时器、platform 总线与 I²C 驱动
linux·驱动开发·嵌入式硬件·学习·imx6ull
承渊政道11 小时前
Linux网络学习【传输层协议UDP】
linux·网络·网络协议·学习·ubuntu·udp
andrsted11 小时前
练题簿免费刷题小程序:和学习搭子共用一份题库,一起刷题复习
学习·面试·微信小程序·小程序·学习方法·刷题
fqbqrr11 小时前
2610学习,ahk学习技巧
学习
fengci.11 小时前
BUUCTF(困难部分)
android·开发语言·前端·学习·php
有Li12 小时前
基于超高分辨率CT智能分割与测量的单侧梅尼埃病内耳解剖特征定量研究文献速递/医学智能体前沿
大数据·人工智能·学习·文献·医学生