Zookeeper与Kafka学习笔记

server/2025/3/15 13:57:31/

一、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等)


http://www.ppmy.cn/server/175175.html

相关文章

使用RKdevTool2.65为RK3399烧录固件时遇到的一些问题及其原因

以下都是本人遇到过的情况总结出的经验&#xff0c;仅供参考 1&#xff0c;主控芯片故障 如果按照官方的WIKI教程去使用瑞芯微工具烧录固件的时候&#xff0c;发现loader模式和MaskRom模式都进不去的话&#xff0c;并且用手触摸芯片的时候没有一点温度&#xff0c;那应该就是…

RSS和TSS在网络流量处理中的优化作用

摘要 本文深入探讨了RSS(Receive Side Scaling)和TSS(Transmit Side Scaling)这两种网络流量处理技术的实现方法及其在网络性能优化中的重要作用。通过对硬件和软件实现方式的详细分析,阐述了它们如何在多队列网卡、多核处理器系统以及虚拟化环境中提升网络处理性能和吞吐…

ue5 动画重定向匹配动画不合适怎么办?mixamo网站一键绑定

ue导出骨骼网格体 fbx模型导入maya 删除骨骼 选中模型 导出模型 打开米萨摩网站 https://www.mixamo.com/#/?page1&query&typeMotion%2CMotionPackupload模型 next 拖动圆圈 点击next 导出模型 导入ue 导入的时候选择动画 时间为带动画的时间 不创建材质

『Rust』Rust运行环境搭建

文章目录 rust编译工具rustupVisual Studio VS Code测试编译手动编译VSCode编译配置 参考完 rust编译工具rustup https://www.rust-lang.org/zh-CN/tools/install 换源 RUSTUP_DIST_SERVER https://rsproxy.cn RUSTUP_UPDATE_ROOT https://rsproxy.cn修改rustup和cargo的安…

sklearn中生成完整标签数据集、半监督数据集,多标签数据集的模拟方法

sklearn.datasets 是 scikit-learn 库中的一个模块&#xff0c;它提供了许多用于生成样本数据集和加载真实世界数据集的工具。以下是一些常用的函数和它们的用法&#xff1a; 生成有监督数据集 make_classification(n_samples100, n_features20, ..., random_stateNone) 生成一…

【大模型学习】第十九章 什么是迁移学习

目录 1. 迁移学习的起源背景 1.1 传统机器学习的问题 1.2 迁移学习的提出背景 2. 什么是迁移学习 2.1 迁移学习的定义 2.2 生活实例解释 3. 技术要点与原理 3.1 迁移学习方法分类 3.1.1 基于特征的迁移学习(Feature-based Transfer) 案例说明 代码示例 3.1.2 基于…

程序化广告行业(15/89):TD、流量供应方与流量方服务解析

程序化广告行业&#xff08;15/89&#xff09;&#xff1a;TD、流量供应方与流量方服务解析 大家好&#xff01;一直以来&#xff0c;我都对程序化广告行业充满兴趣&#xff0c;在深入学习的过程中积累了不少知识。今天就想把这些知识分享出来&#xff0c;和大家一起学习进步&…

HEC-HMS水文模型技术应用

HEC-HMS是美国陆军工程兵团水文工程中心开发的一款水文模型。HMS能够模拟各种类型的降雨事件对流域水文&#xff0c;河道水动力以及水利设施的影响&#xff0c;在世界范围内得到了广泛的应用。它有着完善的前后处理软件&#xff0c;能有效减轻建模的负担&#xff1b;能够与HEC开…