|
|
|
|
|
# Kafka
|
|
|
|
|
|
|
|
|
## 1. Kafka基本概念及配置
|
|
|
|
|
|
- 官方QuickStart: https://kafka.apache.org/quickstart
|
|
|
- 官方文档: https://kafka.apache.org/documentation/
|
|
|
- 最新版本 3.2.0 【截止2022-7-20】
|
|
|
- 学习版本 kafka_2.11-2.4.0【前面是scala后面是kafka】 zookeeper-3.5.7【截止2022-7-20】
|
|
|
|
|
|
### 1.1 概念
|
|
|
- 概述
|
|
|
- Kafka 是分布式的流处理平台
|
|
|
- Kafka 是基于Zookeeper的分布式消息系统
|
|
|
- Kafka具有高吞吐率、高性能、实时、高可靠等特点
|
|
|
- Kafka 的组成概念
|
|
|
- Topic: 一个虚拟的概念, 由1到多个Partitions组成
|
|
|
- Partition: 实际消息存储单位
|
|
|
- Producer: 消息生产者
|
|
|
- Consumer: 消息消费者
|
|
|
-
|
|
|
|
|
|
### 1.2 安装Zookeeper(快捷)
|
|
|
|
|
|
```shell
|
|
|
# 修改配置文件
|
|
|
cp zoo_sample.cfg zoo.cfg
|
|
|
|
|
|
# 需要修改参数
|
|
|
dataDir=指定一个存储配置文件的目录
|
|
|
|
|
|
# 启动
|
|
|
./zkServer.sh start
|
|
|
|
|
|
# 连接测试
|
|
|
./zkCli.sh
|
|
|
```
|
|
|
|
|
|
### 1.3 安装Kafka
|
|
|
|
|
|
```shell
|
|
|
|
|
|
# 修改基本的配置文件
|
|
|
vim server.properties
|
|
|
|
|
|
# 需要修改的配置项
|
|
|
listeners=PLAINTEXT://[你的ip地址]:9092
|
|
|
|
|
|
advertised.listeners=PLAINTEXT://[你的ip地址]:9092
|
|
|
|
|
|
log.dirs=你的kafka的日志目录
|
|
|
|
|
|
zookeeper.connect=[你的ip地址]:2181
|
|
|
```
|
|
|
|
|
|
### 1.5 kafka的基本操作
|
|
|
|
|
|
```shell
|
|
|
|
|
|
# 1、启动Kafka - todo 这个命令会让控制台有日志生成不太方便
|
|
|
bin/kafka-server-start.sh config/server.properties &
|
|
|
|
|
|
# 2、停止Kafka
|
|
|
bin/kafka-server-stop.sh
|
|
|
|
|
|
# 3、创建Topic
|
|
|
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic jiangzh-topic
|
|
|
|
|
|
# 4、查看已经创建的Topic信息
|
|
|
bin/kafka-topics.sh --list --zookeeper localhost:2181
|
|
|
|
|
|
# 5、发送消息
|
|
|
bin/kafka-console-producer.sh --broker-list 192.168.220.128:9092 --topic jiangzh-topic
|
|
|
|
|
|
# 6、接收消息
|
|
|
bin/kafka-console-consumer.sh --bootstrap-server 192.168.220.128:9092 --topic jiangzh-topic --from-beginning
|
|
|
|
|
|
# {"orderId":"002","price":"80"}
|
|
|
```
|
|
|
|
|
|
```shell
|
|
|
|
|
|
# 【旧版】
|
|
|
kafka-topics.sh --zookeeper 172.16.26.183:2181 --list
|
|
|
# 【新版】
|
|
|
kafka-topics.sh --bootstrap-server 172.16.26.183:9092 --list
|
|
|
# (– zookeeper is not a recognized option主要原因是 Kafka 版本过高,命令不存在)
|
|
|
# 创建topic主题
|
|
|
kafka-topics.sh --bootstrap-server 172.16.26.183:9092 --create --topic topic1 --partitions 1 --replication-factor 3
|
|
|
# --create 命令后 --topic 为创建topic 并指定 topic name
|
|
|
# --partitions 为指定分区数量
|
|
|
# --replication-factor 为指定副本集数量
|
|
|
# 向kafka集群发送数据
|
|
|
# 【无key型消息】
|
|
|
kafka-console-producer.sh --bootstrap-server 172.16.26.183:9092 --topic topic1
|
|
|
# 【有key型消息】
|
|
|
kafka-console-producer.sh --bootstrap-server 172.16.26.183:9092 --topic topic1 --property parse.key=true
|
|
|
# (默认消息键与消息值间使用“Tab键”进行分隔,切勿使用转义字符(\t))
|
|
|
# kafka命令接受数据
|
|
|
kafka-console-consumer.sh --bootstrap-server 172.16.26.183:9092 --topic topic1 --from-beginning
|
|
|
# kafka查看消费进度:(当我们需要查看一个消费者组的消费进度时,则使用下面的命令)(启动Consumer的时候才会真的生效)【这条命令对查询消费特别重要】
|
|
|
kafka-consumer-groups.sh --bootstrap-server 172.16.26.183:9092 --describe --group group1
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 2. Kafka客户端操作
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 3. Producer生产者
|
|
|
|
|
|
|
|
|
## 4. Consumer
|
|
|
|
|
|
|
|
|
## 5. Stream
|
|
|
|
|
|
|
|
|
## 6. Connect
|
|
|
|
|
|
|
|
|
## 7. Kafka集群部署与开发
|
|
|
|
|
|
|
|
|
## 8. Kafka集群监控、安全与最佳实践
|
|
|
|
|
|
|
|
|
## 9. Kafka面试点梳理 |