图解 kafka 架构与工作原理 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/442468709
一、Docker 网络创建
Docker支持多种网络模式,包括bridge(桥接模式)、host(主机模式)、overlay(覆盖网络模式)等。
- Bridge(桥接模式):这是Docker默认的网络模式。在桥接模式下,每个Docker容器都运行在自己的虚拟网络接口上,并且这些接口通过一个桥接器连接在一起。Docker服务端启动时会自动创建一个桥接器,然后所有的容器都会连接到这个桥接器上。这种模式下,容器可以互相通信,但是容器不能与宿主机进行通信。
- Host(主机模式):在这种模式下,容器将直接使用宿主机的网络接口。因此,容器可以像宿主机一样直接访问外部网络。但是,这种模式下容器之间无法通信。
- 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 上运行。
下载 Kerberos:
- 访问 MIT Kerberos Distribution Page 并下载 Kerberos for Windows 的64位MSI安装文件。
安装 Kerberos:
- 运行下载的 MSI 文件来安装 Kerberos。
设置 PATH:
- 安装完成后,确保 'bin' 文件夹(C:\Program Files\MIT\Kerberos\bin)在你的 PATH 环境变量中。
- 打开"控制面板" -> "系统" -> "高级系统设置" -> "环境变量"。
- 在"系统变量"部分,查找名为"PATH"的变量,并确保它包含 Kerberos 的 'bin' 文件夹的路径。如果没有,请点击"新建"并添加该路径。
重启:
- 为了确保所有的环境变量都已更新,建议重新启动你的计算机。
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()
生产者推送数据,消费端打印数据内容,后期可以根据需求进行进阶操作与更改