0x00 介绍
是一个分布式消息队列。
官网地址:https://kafka.apache.org/intro
0x01 安装
1.1 安装ZooKeeper
需要先安装ZooKeeper,官网地址:https://zookeeper.apache.org/
ZooKeeper下载地址:https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz
- 解压:
tar -xvf apache-zookeeper-3.6.3-bin.tar.gz -C /opt
- 修改配置文件
将数据保存下来,不放到临时目录,其中ZK_HOME
是ZooKeeper的安装主目录
cd $ZK_HOME/conf
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
# 修改: dataDir=/opt/temp/zookeeper
- 启动ZooKeeper
./zkServer.sh start
- 关闭ZooKeeper
./zkServer.sh stop
1.2 安装Kafka
Kafka各个版本下载地址:https://kafka.apache.org/downloads
我们选择https://www.apache.org/dyn/closer.cgi?path=/kafka/2.8.0/kafka_2.13-2.8.0.tgz
- 解压
tar -xvf kafka_2.13-2.8.0.tgz -C /opt
- 配置环境变量(可选)
为了方便使用可以配置环境变量
export KAFKA_HOME=/opt/kafka_2.13-2.8.0
1.3 单节点单broker部署
- 修改配置文件
$KAFKA_HOME/config/server.properties
内容如下:
broker.id=0
listeners=PLAINTEXT://:9092
host.name=localhost
log.dirs=/opt/temp/kafka-logs
zookeeper.connect=localhost:2181
- 启动Kafka
export KAFKA_HOME=/opt/kafka_2.13-2.8.0
cd $KAFKA_HOME/bin
./kafka-server-start.sh $KAFKA_HOME/config/server.properties
//后台进程启动
./kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties
- 创建Topic
副本系数为1,topic名称为hello_topic1
,其中9092端口是在config/server.properties
中配置listeners的那个端口
./kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic hello_topic1
- 查看所有Topic
./kafka-topics.sh --list --zookeeper localhost:2181
- 查看单独某一个Topic
./kafka-topics.sh --describe --topic hello_topic1 --bootstrap-server localhost:9092
- 生产消息
9092端口是在config/server.properties
中配置listeners的那个端口,可以把这个消息存放的地址
./kafka-console-producer.sh --broker-list localhost:9092 --topic hello_topic1
- 消费消息
--from-beginning
表示从头到尾开始消费,不加的话是不会消费启动之前放到broker中的记录
./kafka-console-consumer.sh --bootstrap-server localhost:2181 --topic hello_topic1 --from-beginning
1.4 单节点多broker部署
- 配置文件
一个server.properties
就相当于一个broker
cd $KAFKA_HOME/config/
cp server.properties server-1.properties
cp server.properties server-2.properties
cp server.properties server-3.properties
各个配置文件的内容如下:
server-1.properties
内容如下:
log.dirs=/opt/temp/kafka-logs-1
listeners=PLAINTEXT://:9093
broker.id=1
zookeeper.connect=localhost:2181
server-2.properties
内容如下:
log.dirs=/opt/temp/kafka-logs-1
listeners=PLAINTEXT://:9094
broker.id=2
zookeeper.connect=localhost:2181
server-3.properties
内容如下:
log.dirs=/opt/temp/kafka-logs-1
listeners=PLAINTEXT://:9095
broker.id=3
zookeeper.connect=localhost:2181
- 启动Kafka
export KAFKA_HOME=/opt/kafka_2.13-2.8.0
cd $KAFKA_HOME/bin
kafka-server-start.sh -daemon $KAFKA_HOME/config/server-1.properties &
kafka-server-start.sh -daemon $KAFKA_HOME/config/server-2.properties &
kafka-server-start.sh -daemon $KAFKA_HOME/config/server-3.properties &
- 创建Topic
./kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 3 --partitions 1 --topic hello_topic2
- 生产消息
./kafka-console-producer.sh --broker-list localhost:9093,localhost:9094,localhost:9095 --topic hello_topic2
- 消费消息
./kafka-console-consumer.sh --bootstrap-server localhost:2181 --topic hello_topic2 --from-beginning