一、媒介
随着即将到来的Kafka 4.0的发布,Zookeeper将会完全淘汰,只有KRaft模式将得到支持。这一重大变革必要项目和开辟者两边做好预备工作。
制止目前,最新的Kafka版本是3.6.1,从2022年10月3日发布的3.3.1版本开始,KRaft在生产情况下已经完全支持。
根据当前的发布计划,Kafka 3.7(预计于2024年1月发布)将是最后一个支持Zookeeper的版本。
如果想全面相识KRaft,我建议阅读这篇文章[1]。
在本指南中,我将教你怎样使用Docker在本地搭建一个Kafka情况,并提供一个UI工具检察我们的Kafka数据。
注:本文大部门内容参考自 Setting up a Local Kafka Environment in KRaft Mode with Docker-Compose and Bitnami Image, Enhanced by Provectus Kafka-UI[2],侵权删。
二、工具及其地址
Bitnami镜像:https://hub.docker.com/r/bitnami/kafka/
Provectus Kafka UI:https://github.com/provectus/kafka-ui
留意:目前广泛使用的 wurstmeister[3] 镜像仅支持Zookeeper(且目前测试Dockerhub没有该镜像),不支持KRaft,而Bitnami两者都支持!
三、搭建Kafka集群遇到的题目
在搭建Kafka集群的过程中,我遇到了一些题目,大概对你会有所帮助!
题目一:
如果是单机Kafka,则无需指定KAFKA_KRAFT_CLUSTER_ID。与某些教程所建议的相反,Kafka会动态天生一个ID,并将其记录在日志中。如果是集群Kafka,则必要指定,但需留意,一个集群的所有Kafka示例的KAFKA_KRAFT_CLUSTER_ID都是同等的。
题目二:kafka_kafka_1 exited with code 1
如上图,Kafka大概在没有抛出异常的情况下就失败了,在我的情况下,我复制了一个错误的情况配置,唯一确定真正题目的方法是通过BITNAMI_DEBUG=yes 启用调试日志记录,这使我可以或许找到题目的根本原因,因此我建议在故障排除时使用此配置。
这是我报错的根本原因:
四、搭建单机Kafka的配置
你可以在**这里[4]**找到由Bitnami提供的docker-compose文件,但它并不特别有效,由于您必要单独搜索所需的配置。
- # $dir/kafka.yml
- version: "3"
- services:
- kafka_b:
- image: docker.io/bitnami/kafka:3.4
- hostname: kafka_b
- ports:
- - "9092:9092"
- - "9094:9094"
- volumes:
- - "kafka_data:/bitnami"
- environment:
- - KAFKA_ENABLE_KRAFT=yes
- - KAFKA_CFG_PROCESS_ROLES=broker,controller
- - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
- - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093,EXTERNAL://:9094
- - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,EXTERNAL:PLAINTEXT
- - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://127.0.0.1:9092,EXTERNAL://kafka_b:9094
- - KAFKA_BROKER_ID=1
- - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@127.0.0.1:9093
- - ALLOW_PLAINTEXT_LISTENER=yes
- - KAFKA_CFG_NODE_ID=1
- - KAFKA_AUTO_CREATE_TOPICS_ENABLE=true
- - BITNAMI_DEBUG=yes
- - KAFKA_CFG_NUM_PARTITIONS=2
- volumes:
- kafka_data:
- driver: local
复制代码 关于配置,有几个留意点:
1、你可以使用 KAFKA_ENABLE_KRAFT 变量来切换 KRaft/Zookeeper 模式
2、你可以指定 hostname 配置,如允许以便于Kafka-UI工具检察你的数据(如果主机的UI工具,请留意配置下hosts文件)
3、你如果不想使用默认端口9092,则留意要修改 ports 和 KAFKA_CFG_ADVERTISED_LISTENERS 情况变量
4、如果你想允许主动创建Topic,则可以将 KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE 情况变量设置为 true
这里有别的一份配置可以参考下:
- version: "2"
- services:
- kafka:
- image: docker.io/bitnami/kafka:3.6
- # 指定你的容器名,不然是一串随机字符串
- hostname: kafka_b
- # networks:
- # - kafka_net
- ports:
- - "9095:9092"
- volumes:
- - "kafka_data:/bitnami"
- environment:
- # KRaft settings
- - KAFKA_CFG_NODE_ID=0
- - KAFKA_CFG_PROCESS_ROLES=controller,broker
- - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka:9093
- # Listeners
- - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093
- # 注意这里要同步改成9095
- - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://:9095
- - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
- - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
- - KAFKA_CFG_INTER_BROKER_LISTENER_NAME=PLAINTEXT
- # auto create topics
- - KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true
- volumes:
- # data in: /var/lib/docker/volumes/{$network}
- kafka_data:
- driver: local
- #networks:
- # kafka_net:
- # driver: bridge
复制代码 留意:搭建集群版Kafka的配置可以在**这里[5]**找到。
五、搭建 Provectus Kafka UI
我测试了几个Kafka-UI工具(Conduktor,Kafka Magic,Offset Explorer等),发现当你必要通过外部名称连接到集群时,它们的行为大概会有所差别,这取决于您的摆设策略。例如,使用Kafka Magic,即使没有外部侦听器(由于此UI未通过docker摆设),我也可以或许直接连接到本地主机(127.0.0.1),但我不使用此工具,由于许多有效的功能仅在允许证下可用。
如果您正在寻找一个免费的开源工具,则 Provectus kafka-ui 大概会适合你。通过它的快速开始教程[6],你同样可以使用Docker快速搭建一个Kafka-ui,但必要留意的是,如果是用容器搭建的,此时连接我们前面的Kafka集群时,使用 localhost:9092[7] 的地址将会连接失败!
为了成功连接到我们前面搭建的本地Kafka,我们必要指定精确的主机名和端口,这些配置在我们的Kafka自身的docker-compose文件中已经设置(留意是 kafka_b:9094,9094是袒露给外部使用的端口,9092是内部使用的端口)。
这是 Provectus kafka-ui 对应的配置
- # $dir/kafka-ui.yml
- services:
- kafka-ui:
- container_name: kafka-ui
- image: provectuslabs/kafka-ui:latest
- ports:
- - 8080:8080
- environment:
- DYNAMIC_CONFIG_ENABLED: 'true'
- LOGGING_LEVEL_ROOT: 'DEBUG'
- # volumes:
- # - /c/tools/kafka/kui/config.yml:/etc/kafkaui/dynamic_config.yaml
复制代码 LOGGING_LEVEL_ROOT 配置用于故障排除,但现实上并不必要。在启动之后,我们可以在kafka-ui中的相应主题中检察我们的消息。
如果走到这一步,那么恭喜!您的情况如今已经完全设置好并可以使用了。
怎样学习大模子
如今社会上大模子越来越遍及了,已经有许多人都想往这里面扎,但是却找不到适合的方法去学习。
作为一名资深码农,初入大模子时也吃了许多亏,踩了无数坑。如今我想把我的履历和知识分享给你们,帮助你们学习AI大模子,可以或许解决你们学习中的困难。
下面这些都是我当初辛苦整理和费钱购买的资料,如今我已将重要的AI大模子资料包括市面上AI大模子各明确皮书、AGI大模子体系学习路线、AI大模子视频教程、实战学习,等录播视频免费分享出来,必要的小同伴可以扫取。
一、AGI大模子体系学习路线
许多人学习大模子的时间没有方向,东学一点西学一点,像只无头苍蝇乱撞,我下面分享的这个学习路线渴望可以或许帮助到你们学习AI大模子。
二、AI大模子视频教程
三、AI大模子各大学习册本!
四、AI大模子各大场景实战案例
五、AI大模子面试题库
|