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

图解 kafka 架构与工作原理 - 知乎 (zhihu.com)https://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: 这是指定网络驱动程序的参数

python 复制代码
docker network create app-tier --driver bridge

二、 Kafka 安装配置

1、安装zookeeper 默认端口2181

Kafka依赖zookeeper所以先安装zookeeper

-p:设置映射端口(默认2181)

-d:后台启动

python 复制代码
# 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或域名否则客户端监听消息会报地址错误)

python 复制代码
# 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
python 复制代码
docker run --name kafka-manager -d  --network app-tier -p 9000:9000 -e ZK_HOSTS="zookeeper-server:2181" sheepkiller/kafka-manager
kafka - map : 安装启动命令 端口9001
python 复制代码
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

  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

python 复制代码
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

python 复制代码
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()

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

相关推荐
a_j582 小时前
K8s面试题总结(十一)
云原生·容器·kubernetes
o0o_-_2 小时前
【瞎折腾/ragflow】构建docker镜像并部署使用ragflow
运维·docker·容器
一碗手擀面3 小时前
docker镜像发布的应用程序,其配置https的流程
docker·容器·https
千羽星弦4 小时前
kafka zookeeper 集群搭建
kafka
追风林4 小时前
mac 本地 docker 安装 kafka
macos·docker·kafka
奔跑中的小象5 小时前
低版本 Linux 系统通过二进制方式升级部署高版本 Docker
linux·docker
最数据6 小时前
收集了一些docker修改镜像源地址
docker·容器·镜像源·国内源地址
云上艺旅6 小时前
K8S学习之基础二十四:k8s的持久化存储之pv和pvc
学习·云原生·容器·kubernetes
人间凡尔赛7 小时前
VSCode-Server 在 Linux 容器中的手动安装指南
linux·运维·服务器·docker
Sans_7 小时前
初识Docker-Compose(包含示例)
后端·docker·容器