一、Kafka概述
1.1 定义
Kafka是一个分布式的基于发布/订阅模式 的消息队列(Message Queue),主要用于大数据实时 处理领域。
1.2 消息队列
1.2.1 传统消息队列的应用场景(优点)
参考文档:https://blog.csdn.net/weixin_45393094/article/details/106160234
- 解耦
- 异步
- 流量削峰
- 消息通信
- 日志处理
1.2.2 消息队列的两种模式
参考文档:https://blog.csdn.net/noaman_wgs/article/details/70918795
- 点对点模式(
一对一 ,消费者主动拉取数据,消费收到后消息清除) - 发布订阅模式(
一对多 ,消费者消费数据之后不会清除消息)
1.2.3 kafka采取的消息模型
kafka 采取的是 发布订阅/模式 中的 消费者主动拉取模型 ,这种模型缺点 是消费者需要轮询 的请求生产者,判断是否有新的消息产生。
1.3 Kafka基础架构
参考文档:https://blog.csdn.net/student__software/article/details/81486431
二、Kafka快速入门
这里利用docker容器来快速安装部署
2.1 利用Docker-compose部署Kafka(单节点)
- 编写
docker-compose.yml 文件
version: '3.1'
services:
zookeeper:
image: wurstmeister/zookeeper
container_name: kk-zookeeper
ports:
- "2181:2181"
networks:
- kafka-net
kafka:
image: wurstmeister/kafka
container_name: kk-kafka
volumes:
- /etc/localtime:/etc/localtime
- /usr/local/kafka:/kafka
- /var/run/docker.sock:/var/run/docker.sock
ports:
- "9092:9092"
networks:
- kafka-net
environment:
KAFKA_ADVERTISED_HOST_NAME: 47.100.227.1
KAFKA_ADVERTISED_PORT: 9092
KAFKA_ZOOKEEPER_CONNECT: 47.100.227.1:2181
KAFKA_BROKER_ID: 1
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_HEAP_OPTS: "-Xmx256M -Xms128M"
depends_on:
- zookeeper
kafka-manager:
image: sheepkiller/kafka-manager
container_name: kk-manager
environment:
ZK_HOSTS: 47.100.227.1:2181
ports:
- "9000:9000"
networks:
- kafka-net
depends_on:
- kafka
- zookeeper
networks:
kafka-net:
driver: bridge
ipam:
config:
- subnet: "173.110.1.0/16"
- 部署启动
docker-compose up -d
[root@iZuf60iq1x5h6s5apkzxd3Z ~]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
47f8419a5093 sheepkiller/kafka-manager "./start-kafka-manag…" 4 hours ago Up 4 hours 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp kk-manager_1
fbb53816e9b2 wurstmeister/kafka "start-kafka.sh" 4 hours ago Up 4 hours 0.0.0.0:9092->9092/tcp, :::9092->9092/tcp kk-kafka_1
05e3181bacc7 wurstmeister/zookeeper "/bin/sh -c '/usr/sb…" 4 hours ago Up 4 hours 22/tcp, 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, :::2181->2181/tcp kk-zookeeper_1
- 然后通过
docker exec -it 容器id bash 命令进入容器内部
[root@iZuf60iq1x5h6s5apkzxd3Z ~]
bash-5.1
进入kafka安装文件夹 cd /opt/kafka/bin
2.2 Kafka基本语法
- 对topic进行
增删改查
kafka-topics.sh --create --topic example --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1
kafka-topics.sh --zookeeper zookeeper:2181 --list
kafka-topics.sh --zookeeper zookeeper:2181 --delete --topic example
kafka-topics.sh --zookeeper zookeeper:2181 --describe --topic example
- 命令行发送、消费消息(测试)
启动消费者和生产者后,生产者发送消息,消费者就会接收到
bash-5.1
>hello
>hello world
bash-5.1
hello
hello world
|