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三大特点

1.高吞吐量:可以满足每秒百万级别消息的生产和消费。2.持久性:有一套完善的消息存储机制,确保数据高效安全且持久化。3.分布式:基于分布式的扩展;Kafka的数据都会复制到几台服务器上,当某台故障失效时,生产者和消费者转而使用其它的Kafka。

4.Kafka的几个概念

1.Kafka作为一个集群运行在一个或多个服务器上,这些服务器可以跨多个机房,所以说kafka是分布式的发布订阅消息队列系统。2.Kafka集群将记录流存储在称为Topic的类别中。3.每条记录由键值;"key value"和一个时间戳组成。

二、使用docker安装Kafka

  1. 环境及架构说明

使用系统:centos 7

使用镜像:wurstmeister/zookeeper

                wurstmeister/kafka

架构:

  Kafka Cluster
zookeeper broker0
broker1
broker2

2.下载镜像

docker pull wurstmeister/zookeeperdocker 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/kafkadocker 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/kafkadocker 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创建topickafka-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
删除topickafka-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 first2:   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数据卷的备份和恢复
个人观点,仅供参考
阅读 245
凉兮的运维日记
 
 
关注后可发消息
 
 
 
 
posted @ 2023-09-22 14:29  往事已成昨天  阅读(606)  评论(0编辑  收藏  举报