1.5万字长文:从 C# 入门 Kafka(安装 Kafka)
目录
1, 搭建 Kafka 环境安装 docker-compose单节点 Kafka 的部署Kafka 集群的部署
作者:痴者工良
个人网站:https://www.whuanle.cn
博客园:https://www.cnblogs.com/whuanle/
本教程地址:https://kafka.whuanle.cn/
本教程是关于 Kafka 知识的教程,从 C# 中实践编写 Kafka 程序,一边写代码一边了解 Kafka。
教程内容是过年期间写的,写到一半假期结束要上班了,将已完成的部分整理出来,就不继续写了。
临时加更干货分享
大家能看到这里,已是对我们的支持了。分享一组11月录制的.NET6零基础教程。我们喜欢做这样的分享,它足够的基础,对新手友好。如果需要的话,就来免费领取吧!
资料免费自取:
由于内容过多不便呈现,需要视频教程和配套源码的小伙伴,点击下方卡片!
也可点击下方卡片:点击后自动复制威芯号,并跳转到威芯。搜索威芯号添加,内容已做打包,备注知乎
即可免费领取,注意查收!
临时加更一个win10激活工具(HEU_KMS_Activator),非常方便的哦,手残党也能秒激活!压缩包密码可以添加上方卡片领取的哦!!!链接:https://pan.baidu.com/s/1NsEy5aKx3L6spaTo-8U4vg?pwd=5555 提取码:5555
这里也是为大家收集到一下.NET开发必备的工具也是方便大家能够快速进行开发。
Octopus 是唯一一款面向 .Net 开发人员的 Microsoft Web 开发人员工具,用于管理软件的发布和部署。它是一个部署工具,它采用 .net 软件开发人员生成的 .net 编程包,并将它们部署在各种平台上,如(Windows、Linux、Azure)。链接:https://pan.baidu.com/s/1EbwR9FM19HnneRW57vt_oA?pwd=5555 提取码:5555 前缀是来自 Stackify 的代码分析器工具,它在 http://asp.net 程序员运行他的应用程序时在后台运行。Microsoft Web 开发人员工具捕获所有请求并提供所有事件的详细报告。该工具还可以对缓慢的 Web 请求进行故障排除并找到慢速查询。可以使用 Stackify Prefix 的最佳方法是查看应用程序日志并将正确的日志附加程序(log4net、NLog 或 Serilog)添加到您的项目中。链接:https://pan.baidu.com/s/1VUs31QVZfL7QwEKp6HQJdg?pwd=5555 提取码:55551, 搭建 Kafka 环境
本章的内容比较简单,我们将使用 Docker 快速部署一个单节点的 Kafka 或 Kafka 集群,在后面的章节中,将会使用已经部署好的 Kafka 实例做实验,然后我们通过不断地实验,逐渐了解 Kafka 的知识点以及掌握客户端的使用。
这里笔者给出了单机和集群两种部署方式,但是为了便于学习后面的章节,请以集群的方式部署 Kafka。
安装 docker-compose
使用 docker-compose 部署 Kafka 可以减少很多没必要的麻烦,一个脚本即可完成部署,省下折腾时间。
安装 docker-compose 也是挺简单的,直接下载二进制可执行文件即可。
INSTALLPATH=/usr/local/binsudo curl -L “https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)” -o ${INSTALLPATH}/docker-composesudo chmod +x ${INSTALLPATH}/docker-composedocker-compose –version如果系统没有映射 /usr/local/bin/ 路径,执行命令完成后,如果发现找不到 docker-compose 命令,请将文件下载到 /usr/bin,即替换 INSTALLPATH=/usr/local/bin 为 INSTALLPATH=/usr/bin。单节点 Kafka 的部署
创建一个 docker-compose.yml 文件,文件内容如下:
—version: ‘3’services: zookeeper: image: confluentinc/cp-zookeeper:7.3.0 container_name: zookeeper environment: ZOOKEEPER_CLIENT_PORT: 2181 ZOOKEEPER_TICK_TIME: 2000 broker: image: confluentinc/cp-kafka:7.3.0 container_name: broker ports: # To learn about configuring Kafka for access across networks see # https://www.confluent.io/blog/kafka-client-cannot-connect-to-broker-on-aws-on-docker-etc/ – “9092:9092” depends_on: – zookeeper environment: KAFKA_BROKER_ID: 1 KAFKA_ZOOKEEPER_CONNECT: ‘zookeeper:2181’ KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_INTERNAL:PLAINTEXT KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.3.156:9092,PLAINTEXT_INTERNAL://broker:29092 KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1 KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1 volumes: – /data/kafka/broker/logs:/opt/kafka/logs – /var/run/docker.sock:/var/run/docker.sock请替换 PLAINTEXT://192.168.3.156 中的 IP 。
然后执行命令开始部署应用:
docker-compose up -d
接着,安装 kafdrop,这是一个 Kafka 管理界面,可以很方便地查看一些信息。
docker run -d –rm -p 9000:9000 \-e JVM_OPTS=”-Xms32M -Xmx64M” \-e KAFKA_BROKERCONNECT=192.168.3.156:9092 \-e SERVER_SERVLET_CONTEXTPATH=”/” \obsidiandynamics/kafdropKafka 集群的部署
Kafka 集群的部署方法有很多,方法不尽相同,其中使用的配置参数(环境变量)也很多,这里笔者只给出自己在使用的快速部署参数,读者可以参阅官方文档,以便定制配置。
笔者的部署脚本中其中一些重要的环境变量说明如下:
KAFKA_BROKER_ID: 当前 Broker 实例的 id,Broker id 不能重复;KAFKA_NUM_PARTITIONS:默认 Topic 的分区数量,默认为 1,如果设置了这个配置,自动创建的 Topic 会根据这个大小设置分区数量。KAFKA_DEFAULT_REPLICATION_FACTOR:默认 Topic 分区的副本数;KAFKA_ZOOKEEPER_CONNECT:Zookeeper 地址;KAFKA_LISTENERS:Kafka Broker 实例监听的 ip;KAFKA_ADVERTISED_LISTENERS:外部如何访问当前实例,用于 Zookeeper 监控;
创建一个 docker-compose.yml 文件,文件内容如下:
—version: ‘3’services: zookeeper: image: confluentinc/cp-zookeeper:7.3.0 container_name: zookeeper environment: ZOOKEEPER_CLIENT_PORT: 2181 ZOOKEEPER_TICK_TIME: 2000 kafka1: image: confluentinc/cp-kafka:7.3.0 container_name: broker1 ports: – 19092:9092 depends_on: – zookeeper environment: KAFKA_BROKER_ID: 1 KAFKA_NUM_PARTITIONS: 3 KAFKA_DEFAULT_REPLICATION_FACTOR: 2 KAFKA_ZOOKEEPER_CONNECT: ‘zookeeper:2181’ KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.3.158:19092 volumes: – /data/kafka/broker1/logs:/opt/kafka/logs – /var/run/docker.sock:/var/run/docker.sock kafka2: image: confluentinc/cp-kafka:7.3.0 container_name: broker2 ports: – 29092:9092 depends_on: – zookeeper environment: KAFKA_BROKER_ID: 2 KAFKA_NUM_PARTITIONS: 3 KAFKA_DEFAULT_REPLICATION_FACTOR: 2 KAFKA_ZOOKEEPER_CONNECT: ‘zookeeper:2181’ KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.3.158:29092 volumes: – /data/kafka/broker2/logs:/opt/kafka/logs – /var/run/docker.sock:/var/run/docker.sock kafka3: image: confluentinc/cp-kafka:7.3.0 container_name: broker3 ports: – 39092:9092 depends_on: – zookeeper environment: KAFKA_BROKER_ID: 3 KAFKA_NUM_PARTITIONS: 3 KAFKA_DEFAULT_REPLICATION_FACTOR: 2 KAFKA_ZOOKEEPER_CONNECT: ‘zookeeper:2181’ KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.3.158:39092 volumes: – /data/kafka/broker3/logs:/opt/kafka/logs – /var/run/docker.sock:/var/run/docker.sock由于三个 Broker 实例都在同一个虚拟机上面,因此这里通过暴露不同的端口,避免 Broker 冲突。
然后执行命令开始部署应用:
docker-compose up -d
接着部署 kafdrop:
docker run -d –rm -p 9000:9000 \-e JVM_OPTS=”-Xms32M -Xmx64M” \-e KAFKA_BROKERCONNECT=192.168.3.158:19092,192.168.3.158:29092,192.168.3.158:39092 \-e SERVER_SERVLET_CONTEXTPATH=”/” \obsidiandynamics/kafdrop
现在,已经部署好了 Kafka 环境以及管理面板。
原文链接:1.5万字长文:从 C# 入门 Kafka(安装 Kafka)