Kafka入门教程

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
2
3
4
5
6
7
8
# 对应 1,2,3
broker.id=1

# 如果是同一台机器上,端口需要不一样
listeners=PLAINTEXT://:9091

# 保存数据的目录
log.dirs=/Users/name/kafka/data/

其余参数保持默认就可以了

第二步:启动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
  1. Leader: 是负责给定分区的所有读取和写入的节点。每个节点将成为分区随机选择部分的领导者
  2. Replicas: 是复制此分区日志的节点列表,无论它们是否是领导者,或者即使他们当前处于活动状态。
  3. Isr: 是一组“同步”副本。这是复制品列表的子集,当前活着并被引导到领导者。