Kafka详解、Kafka集群搭建与使用
Kafka详解、Kafka集群搭建与使用
一、Kafka详解
1.Kafka是什么
Kafka是Apache旗下的一款分布式流媒体平台,Kafka是一种高吞吐量、持久性、分布式的发布订阅的消息队列系统。它主要用于处理消费者规模网站中的所有动作流数据。动作指(网页浏览、搜索和其它用户行动所产生的数据。
2.消息系统分类
我们常见的消息系统有Kafka、RabbitMQ、ActiveMQ,但是但是这些消息系统中所使用的消息模式如下两种:
Peer-to-Peer(Queue)
简称PTP队列模式,也可以理解为点到点。
名词解释:
Producer=生产者
Queue=队列
Consumer=消费者
Peer-to-Peer模式工作原理:
1、消息生产者Producer1生产消息到Queue,然后Consumer1从Queue中取出并且消费消息。
2、消息被消费后,Queue将不再存储消息,其它所有Consumer不可能消费到已经被其它Consumer消费过的消息。
3、Queue支持存在多个Producer,但是对一条消息而言,只会有一个Consumer可以消费,其它Consumer则不能再次消费。
4、但Consumer不存在时,消息则由Queue一直保存,直到有Consumer把它消费。
Publish/Subscribe(Topic)
简称发布/订阅模式
名词解释
Publisher=发布者
Topic=主题
Subscriber=订阅者
Publish/Subscribe模式工作原理:
1、消息发布者Publisher将消息发布到主题Topic中,同时有多个消息消费者 Subscriber消费该消息。
2、和PTP方式不同,发布到Topic的消息会被所有订阅者消费。
3、当发布者发布消息,不管是否有订阅者,都不会报错信息。
4、一定要先有消息发布者,后有消息订阅者。
注意:Kafka所采用的就是发布/订阅模式,被称为一种高吞吐量、持久性、分布式的发布订阅的消息队列系统。
3.Kafka三大特点
4.Kafka的几个概念
二、使用docker安装Kafka
-
环境及架构说明
使用系统:centos 7
使用镜像:wurstmeister/zookeeper
wurstmeister/kafka
架构:
Kafka Cluster | |
zookeeper | broker0 |
broker1 | |
broker2 |
2.下载镜像
docker pull wurstmeister/zookeeper
docker pull wurstmeister/kafka
3.zookeeper启动
docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper
#查看容器是否启动
docker ps
4.搭建Kafka Cluster
启动三个broker
docker run -d --name kafka0 -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.1.30:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.1.30:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka
docker run -d --name kafka1 -p 9093:9093 -e KAFKA_BROKER_ID=1 -e KAFKA_ZOOKEEPER_CONNECT=192.168.1.30:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.1.30:9093 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9093 -t wurstmeister/kafka
docker run -d --name kafka2 -p 9094:9094 -e KAFKA_BROKER_ID=2 -e KAFKA_ZOOKEEPER_CONNECT=192.168.1.30:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.1.30:9094 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9094 -t wurstmeister/kafka
【Attention以上三条命令中的192.168.1.30用自己的服务器ip替换】
5.效果测试
执行docker exec命令随意进入一个
cd /opt/kafka_2.13-2.8.1/bin
创建topic
kafka-topics.sh --bootstrap-server 192.168.1.30:9092 --create --replication-factor 3 --partitions 1 --topic first
查看topic副本数
bin/kafka-topics.sh --zookeeper 192.168.1.30:2181 --describe --topic first
6.kafka命令
查看服务器上topic:
bin/kafka-topics.sh --list --bootstrap-server hadoop102:9092
创建topic:
kafka-topics.sh --bootstrap-server 192.168.1.30:9092 --create --replication-factor 3 --partitions 1 --topic first
查看某个topic:
kafka-topics.sh --bootstrap-server 192.168.1.30:9092 --describe --topic first
删除topic
kafka-topics.sh --bootstrap-server 192.168.1.30:9092 --delete --topic first
发送消息:
bin/kafka-console-producer.sh --broker-list 192.168.1.30:9092 --topic first
消费消息:
1: kafka-console-consumer.sh --bootstrap-server 192.168.1.30:9092 --from-beginning --topic first
2: kafka-console-consumer.sh --bootstrap-server 192.168.1.30:9092 --from-beginning --topic first
--from-beginning:
区别:第二个命令会把主题中以往所有的数据都读取出来。
修改分区数:
kafka-topics.sh --bootstrap-server hadoop102:9092 --alter --topic second --partitions 6
收录于合集 #docker
6个上一篇docker数据卷的备份和恢复
凉兮的运维日记
关注后可发消息