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()

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

相关推荐
tangdou369098655几秒前
1分钟搞懂K8S中的NodeSelector
云原生·容器·kubernetes
tangdou3690986553 小时前
Docker系列-5种方案超详细讲解docker数据存储持久化(volume,bind mounts,NFS等)
docker·容器
later_rql3 小时前
k8s-集群部署1
云原生·容器·kubernetes
漫无目的行走的月亮6 小时前
在Docker中运行微服务注册中心Eureka
docker
大G哥8 小时前
记一次K8S 环境应用nginx stable-alpine 解析内部域名失败排查思路
运维·nginx·云原生·容器·kubernetes
大道归简9 小时前
Docker 命令从入门到入门:从 Windows 到容器的完美类比
windows·docker·容器
zeruns80210 小时前
如何搭建自己的域名邮箱服务器?Poste.io邮箱服务器搭建教程,Linux+Docker搭建邮件服务器的教程
linux·运维·服务器·docker·网站
爱跑步的程序员~10 小时前
Docker
docker·容器
福大大架构师每日一题10 小时前
23.1 k8s监控中标签relabel的应用和原理
java·容器·kubernetes
程序那点事儿10 小时前
k8s 之动态创建pv失败(踩坑)
云原生·容器·kubernetes