# 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面试点梳理