1.什么是kafka?

        1.1)kafka主要用于大数据实时数据处理领域,是一个基于发布订阅模式的消息队列

        1.2)消息队列有两种模式:点对点模式、发布订阅模式

                1.2.1)点对点模式(一对一):生产者生产消息发送到队列,消费者主动到队列中取并消费,消费后的消息将从队列中移除,这样可以避免一个消息被重复消费,队列支持多个消费者存在,但是一个消息只能被一个消费者消费。

                1.2.1)发布订阅模式(一对多):生产者将消息发送到topic,多个消费者订阅并消费,topic是用于消息分类的。发布订阅有两种模式:

                        消息队列主动向消费者推送:这种存在推送量与消费量不成正比时会导致消费者崩溃,假如队列按照每秒50条推送,消费者按照每秒10条消费,这就会出问题。

                        消费者主动向消息队列拉取:这种需要消费者维护一个长轮询获取消息,还可以使用一个队列来存放订阅该topic的所有消费者,有消息就通知消费者来消费,这种如果消费者挂了就收不到了。

2.安装: 

        首先需要安装zookeeper

docker pull wurstmeister/zookeeper

        安装kafka

docker pull wurstmeister/kafka 

        启动zookeeper

docker run -d --name zookeeper -p 2181:2181 -e TZ="Asia/Shanghai" --restart always wurstmeister/zookeeper 

参数介绍:

                --name:容器名字

                -p:端口号(映射到宿主机的端口:zookeeper端口号)

        启动kafka

docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=<这里换成你的zookeeper地址和端口> -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://<这里换成你的kafka地址和端口> -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -e TZ="Asia/Shanghai" wurstmeister/kafka 

        参数介绍:

                        --name:容器名字

                        -p:端口号 

                        KAFKA_BROKER_ID:该ID是集群的唯一标识

                        KAFKA_ADVERTISED_LISTENERS:kafka发布到zookeeper供客户端使用的服务地址。

                        KAFKA_ZOOKEEPER_CONNECT:zk的连接地址

                        KAFKA_LISTENERS:允许使用PLAINTEXT侦听器

3.使用kafka:

进入kafka容器内部

docker exec -it kafka /bin/sh

进入路径:/opt/kafka_2.13-2.7.0/bin下

通过生产者向topic发送消息

./kafka-console-producer.sh --broker-list kafka地址:访问kafka的端口号 --topic jbjb(topic名)

另外打开一个窗口 消费者消费消息

kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --topic jbjb --from-beginning

 

Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐