Docker搭建Kafka教程(python使用kafka基础用法,生产消费)

图解 kafka 架构与工作原理 - 知乎 (zhihu.com)icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/442468709

一、Docker 网络创建

Docker支持多种网络模式,包括bridge(桥接模式)、host(主机模式)、overlay(覆盖网络模式)等。

  1. Bridge(桥接模式):这是Docker默认的网络模式。在桥接模式下,每个Docker容器都运行在自己的虚拟网络接口上,并且这些接口通过一个桥接器连接在一起。Docker服务端启动时会自动创建一个桥接器,然后所有的容器都会连接到这个桥接器上。这种模式下,容器可以互相通信,但是容器不能与宿主机进行通信。
  2. Host(主机模式):在这种模式下,容器将直接使用宿主机的网络接口。因此,容器可以像宿主机一样直接访问外部网络。但是,这种模式下容器之间无法通信。
  3. Overlay(覆盖网络模式):这种模式主要用于多个Docker集群之间的容器通信。它使用一个覆盖网络将多个Docker集群连接在一起,使得集群中的容器可以相互通信。

app-tier:网络名称
–driver:网络类型为bridge 

docker network create: 这是Docker命令用于创建新网络的命令。
app-tier: 这是新创建的网络的名称。
--driver bridge: 这是指定网络驱动程序的参数

docker network create app-tier --driver bridge

 二、 Kafka 安装配置

1、安装zookeeper   默认端口2181

Kafka依赖zookeeper所以先安装zookeeper
-p:设置映射端口(默认2181)
-d:后台启动

# zookeeper docker安装启动命令
docker run -d --name zookeeper-server --network app-tier -e ALLOW_ANONYMOUS_LOGIN=yes bitnami/zookeeper:latest

2、安装Kafuk服务  默认端口为9092

安装并运行Kafka,
–name:   容器名称
-p:          设置映射端口(默认9092 )
-d:          后台启动
ALLOW_PLAINTEXT_LISTENER                  任何人可以访问
KAFKA_CFG_ZOOKEEPER_CONNECT      链接的zookeeper
ALLOW_PLAINTEXT_LISTENER                  任何人可以访问
KAFKA_CFG_ADVERTISED_LISTENERS    当前主机IP或地址(重点:如果是服务器部署则配服务器IP或域名否则客户端监听消息会报地址错误)

# kafuk 安装启动命令  将ip修改为自己本地ip
docker run -d --name kafka-server --network app-tier -p 9092:9092 -e ALLOW_PLAINTEXT_LISTENER=yes -e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper-server:2181 -e KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.14.93:9092  bitnami/kafka:latest

3、kafka图形化管理工具(manage,map)

 kafka-manege : 安装启动命令  端口9000
docker run --name kafka-manager -d  --network app-tier -p 9000:9000 -e ZK_HOSTS="zookeeper-server:2181" sheepkiller/kafka-manager
 kafka - map : 安装启动命令   端口9001
docker run -d --name kafka-map  --network app-tier -p 9001:8080 -v /opt/kafka-map/data:/usr/local/kafka-map/data -e DEFAULT_USERNAME=admin -e DEFAULT_PASSWORD=admin --restart always dushixiang/kafka-map:latest

三 、windwos环境 用kafka-python实现生产消费案例

  1、Windwos 环境需要下载 Kerberos for Windows 的安装,这是 Kerberos 5 身份验证协议的一个实现。gssapi 库需要它来在 Windows 上运行。

  1. 下载 Kerberos

    • 访问 MIT Kerberos Distribution Page 并下载 Kerberos for Windows 的64位MSI安装文件。
  2. 安装 Kerberos

    • 运行下载的 MSI 文件来安装 Kerberos。
  3. 设置 PATH

    • 安装完成后,确保 'bin' 文件夹(C:\Program Files\MIT\Kerberos\bin)在你的 PATH 环境变量中。
    • 打开“控制面板” -> “系统” -> “高级系统设置” -> “环境变量”。
    • 在“系统变量”部分,查找名为“PATH”的变量,并确保它包含 Kerberos 的 'bin' 文件夹的路径。如果没有,请点击“新建”并添加该路径。
  4. 重启

    • 为了确保所有的环境变量都已更新,建议重新启动你的计算机。

 2、安装python环境kafka依赖包

pip install  kafka-python

3、python 示例代码 

 创建生产者文件代码 kafka_pronucer.py

from kafka import KafkaProducer
import json

# kafka 队列生产者
def producer_demo():
    # 配置Kafka生产者
    producer = KafkaProducer(bootstrap_servers='localhost:9092',
                             value_serializer=lambda v: json.dumps(v).encode())

    # 发送消息到指定的topic
    producer.send('my-topic', {'key': '5'})

    # 关闭生产者连接
    producer.close()


if __name__ == '__main__':
    producer_demo()

 创建消费者文件代码 kafka_consumer.py

from kafka import KafkaConsumer

# kafka 队列消费者
def consumer_demo():
    # 配置Kafka消费者
    consumer = KafkaConsumer('my-topic',
                             bootstrap_servers='localhost:9092',
                             auto_offset_reset='earliest')

    # 消费消息
    for message in consumer:
        print(message.value.decode('utf-8'))


if __name__ == '__main__':
    consumer_demo()

Docker搭建Kafka教程(python使用kafka基础用法,生产消费)_第1张图片

生产者推送数据,消费端打印数据内容,后期可以根据需求进行进阶操作与更改

你可能感兴趣的:(docker,kafka,容器)