Kafka学习笔记

本文详细介绍了Kafka的基础架构、核心概念、生产者与消费者的使用、SpringBoot集成、分区与再平衡策略,以及关键的管理操作如主题管理、物理存储和监控。涵盖了Kafka的生产、消费、集群控制和一致性保障等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Kafka学习笔记

参加拉勾教育大数据训练营课程笔记

1. 介绍

2. 架构

3. 核心概念

心跳

4. 环境搭建

参考集群安装文档。

4. 生产与消费

5. 集成Kafka到SpringBoot

6. 生产者 - 数据生产流程

6.1 生产者原理

6.2 生产者参数

6.3 序列化和反序列化

6.4 分区器

6.5 拦截器 (producer intercepter, consumer intercepter)

7. 消费者

7.1 消费组

7.2 消费者参数

7.3 订阅

7.4 位移提交

_consumer_offsets

7.5 位移管理

7.6 消费组偏移量

7.7 分区分配策略(partition assignor)

RangeAssignor

RoundRobinAssignor

StickyAssignor

自定义分配策略

import org.apache.kafka.clients.consumer.internals.AbstractPartitionAssignor;
import org.apache.kafka.common.TopicPartition;
import java.util.*;
public class MyAssignor extends AbstractPartitionAssignor {
}
properties.put(ConsumerConfig.PARTITION_ASSIGNMENT_STRATEGY_CONFIG, MyAssignor.class.getName());

再平衡

7.8 消费者拦截器

7.9 消费组管理

8. 管理

主题管理

分区副本分配

分区副本机制

Leader分区选举

分区重分配(扩展)

kafka-reassign-partitions.sh --zookeeper node1:2181/kafka --topics-to-move-json-file topics-to-move.json --broker-list "0,1" --generate
kafka-reassign-partitions.sh --zookeeper node1:2181/kafka --topics-to-move-json-file topics-to-move.json --broker-list "0,1" --execute
kafka-reassign-partitions.sh --zookeeper node1:2181/kafka --topics-to-move-json-file topics-to-move.json --broker-list "0,1" --verify

偏好分区leader

按初始设置的relica assignment重新分配。创建topic时指定leader, follower。

# 三台机器,三个分区,
# 0:1:2 0分区为leader副本,1和2是follower副本
kafka-topics.sh --zookeeper node1:2181/kafka --create --topic demo3 --replica-assignment "0:1:2,1:0:2,2:1:0"

# 当一台机器宕机,分区再平衡
# 恢复宕机机器,执行kafka-peferred-replica-election.sh,将恢复到创建topic时指定的leader
kafka-peferred-replica-election.sh --zookeeper node1:2181/kafka

也可以指定偏好的配置文件

kafka-peferred-replica-election.sh --zookeeper node1:2181/kafka --path-to-json-file preferred-replica-election.json
{
    "partitions":[
        {
            "topic": "foo", "partition": 1
        },
        {
            "topic": "bar", "partition": 2
        }
    ]
}

分区副本因子

一个副本一台服务器,使用kafka-reassign-partitions.sh设置

{
    "version":1,
    "partitions":[
        {"topic":"tp_re_02","partition":0,"replicas":[0,1]},
        {"topic":"tp_re_02","partition":1,"replicas":[0,1]},
        {"topic":"tp_re_02","partition":2,"replicas":[1,0]}
    ]
}
kafka-reassign-partitions.sh --zookeeper node1:2181/kafka --topics-to-move-json-file partition.json --broker-list "0,1" --generate
kafka-reassign-partitions.sh --zookeeper node1:2181/kafka --topics-to-move-json-file partition.json --broker-list "0,1" --execute
kafka-reassign-partitions.sh --zookeeper node1:2181/kafka --topics-to-move-json-file partition.json --broker-list "0,1" --verify

主题参数

KafkaAdminClient

151 9824 0134

9. 物理存储

稀疏索引构建

*.index - 消息偏移量对物理地址映射

*.timeindex - 消息偏移量时间映射

*.log - 第一条消息的偏移量为文件名

leader-epoch-checkpoint

索引文件切割

日志索引

Log Segment

日志清理

零拷贝机制

mmap,sendfile实现零拷贝

10. 事物

幂等性(idempotence)

11. 集群控制器(broker)

12. 一致性

13. 消息重复

延迟队列

重试队列

监控指标(JMX)

编程获取监控指标

监控工具-Kafka Eagle

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值