1、下载安装
需要本地有scala环境,下载对应的kafka版本即可,kafka下载地址 https://kafka.apache.org/downloads
2、基本概念
- Broker Kafka 中使用 Broker 来接受 Producer 和 Consumer 的请求,并把 Message 持久化到本地磁盘。每个 Cluster 当中会选举出一个 Broker 来担任 Controller,负责处理 Partition 的 Leader 选举,协调 Partition 迁移等工作。
- Topic 用于划分 Message 的逻辑概念,一个 Topic 可以分布在多个 Broker 上。
- Partition 是 Kafka 中横向扩展和一切并行化的基础,每个 Topic 都至少被切分为 1 个 Partition。
- Offset 消息在 Partition 中的编号,编号顺序不跨 Partition(在 Partition 内有序)。
- Segment 包含消息内容的指定大小的文件, 由 index 文件和 log 文件组成; 一个 Partition 由多个 Segment 文件组成
- Offset Segment 文件中消息的索引值, 从 0 开始计数
- Replication Kafka 支持以 Partition 为单位对 Message 进行冗余备份,每个 Partition 都可以配置至少 1 个 Replication(当仅 1 个 Replication 时即仅该 Partition 本身)。
- Producer 用于往 Broker 中发送/生产 Message。
- Consumer 用于从 Broker 中取出/消费 Message。
- Consumer Group 各个 consumer 可以组成一个组,每个消息只能被组中的一个 consumer 消费,如果一个消息可以被多个 consumer 消费的话,那么这些 consumer 必须在不同的组。
- Leader 每个 Replication 集合中的 Partition 都会选出一个唯一的 Leader,所有的读写请求都由 Leader 处理。其他 Replicas 从 Leader 处把数据更新同步到本地。
- In-Sync Replica Replicas 的一个子集,表示目前 Alive 且与 Leader 能够“Catch-up”的 Replicas 集合。由于读写都是首先落到 Leader 上,所以一般来说通过同步机制从 Leader 上拉取数据的 Replica 都会和 Leader 有一些延迟(包括了延迟时间和延迟条数两个维度),任意一个超过阈值都会把该 Replica 踢出 ISR。每个 Leader Partition 都有它自己独立的 ISR。
3、环境搭建(以集群为例,可以在同一个机器上搭建)
第一步:修改配置,组建集群
将解压后的kafka目录复制三份,修改对应的config/server.properties
,需要修改的地方分别是
1 | # 对应 1,2,3 |
其余参数保持默认就可以了
第二步:启动zookeeper
1 | ./bin/zookeeper-server-start.sh -daemon config/zookeeper.properties |
第三步:启动zookeeper
1 | ./bin/kafka-server-start.sh config/server.properties |
4、基本命令
创建topic
1
./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 2 --partitions 3 --topic test
查看topic列表
1
./bin/kafka-topics.sh --list --zookeeper localhost:2181
产生消息
1
./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
消费消息
1
./bin/kafka-console-consumer.sh --bootstrap-server localhost:9091 --topic test --from-beginning
查看topic的描述信息
1
2
3
4
5
6.bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic test
topic: test PartitionCount: 3 ReplicationFactor: 2 Configs:
Topic: test Partition: 0 Leader: 2 Replicas: 3,2 Isr: 2
Topic: test Partition: 1 Leader: 1 Replicas: 1,3 Isr: 1
Topic: test Partition: 2 Leader: 2 Replicas: 2,1 Isr: 2,1
- Leader: 是负责给定分区的所有读取和写入的节点。每个节点将成为分区随机选择部分的领导者
- Replicas: 是复制此分区日志的节点列表,无论它们是否是领导者,或者即使他们当前处于活动状态。
- Isr: 是一组“同步”副本。这是复制品列表的子集,当前活着并被引导到领导者。