Kafka(一)使用Docker Compose安装单机Kafka以及Kafka UI

文章目录

  • Kafka中涉及到的术语
  • Kafka镜像选择
  • Kafka UI镜像选择
  • Docker Compose文件
    • Kafka配置项说明
      • KRaft vs Zookeeper
      • 和KRaft有关的配置
      • 关于Controller和Broker的概念解释
      • Listener的各种配置
    • Kafka UI配置项说明
  • 测试
  • Kafka集群Docker Compose示例配置

Kafka中涉及到的术语

对于Kafka中经常用到的术语,可参考confluent的官方文档,这里不再赘述。

Kafka镜像选择

镜像选择Docker Hub上使用最多的bitnami Kafka,主要注意的点是环境变量和Kafka配置的映射关系

Additionally, any environment variable beginning with KAFKA_CFG_ will be mapped to its corresponding Apache Kafka key. For example, use KAFKA_CFG_BACKGROUND_THREADS in order to set background.threads or KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE in order to configure auto.create.topics.enable

还有就是,当使用任何来自于bitnami的镜像,如何遇到了问题,想查看日志,可以将镜像的Debug日志打开,通过环境变量

BITNAMI_DEBUG=true

控制

由于Docker Hub的说明字数限制,可以在Github上查看完整文档

Kafka UI镜像选择

对于Kafka的UI工具,没有仔细调查,原因是在使用初期阶段,还不知道对于Kafka的监控和管理的痛点在哪,所以先用起来再说。

Kafka UI官方Github地址 > 文档网址 > Compose examples 下面可以找打很多Kafak ui的compose文件示例,不仅对UI的配置很有帮助,而且对刚入门Kafka的同学,也提供了非常好的示例,包括Kraft模式的Kafka集群等。

其他配置则阅读官方文档即可。

Docker Compose文件

version: "3"
services:kafka:image: 'bitnami/kafka:latest'container_name: kafkaports:- "9092:9092"- "9093:9093"volumes:- type: volumesource: kafka_standalone_datatarget: /bitnami/kafkaread_only: falseenvironment:- BITNAMI_DEBUG=yes# 启用KRaft模式必须设置下面三个属性- KAFKA_CFG_NODE_ID=1- KAFKA_CFG_PROCESS_ROLES=broker,controller- KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER# broker id- KAFKA_BROKER_ID=1# listener的各种配置- KAFKA_CFG_LISTENERS=CONTROLLER://:9094,BROKER://:9092,EXTERNAL://:9093- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,BROKER:PLAINTEXT,EXTERNAL:PLAINTEXT# 注意EXTERNAL配置的是当前Docker所在的主机地址,BROKER可以使用Docker内部的网络地址即可- KAFKA_CFG_ADVERTISED_LISTENERS=BROKER://kafka:9092,EXTERNAL://192.168.0.101:9093# 内部各个broker之间通信用的listener- KAFKA_CFG_INTER_BROKER_LISTENER_NAME=BROKER# 用来进行选举的Controller服务器,如果有多个Controller则都需要写上,这里本机- KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@127.0.0.1:9094- ALLOW_PLAINTEXT_LISTENER=yeskafka-ui:container_name: kafka-uiimage: provectuslabs/kafka-ui:latestports:- "9095:8080"depends_on:- kafkaenvironment:KAFKA_CLUSTERS_0_NAME: kafka-stand-aloneKAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:9092KAFKA_CLUSTERS_0_METRICS_PORT: 9997SERVER_SERVLET_CONTEXT_PATH: /kafkauiAUTH_TYPE: "LOGIN_FORM"SPRING_SECURITY_USER_NAME: adminSPRING_SECURITY_USER_PASSWORD: kafkauipasswordDYNAMIC_CONFIG_ENABLED: 'true'
volumes:kafka_standalone_data:driver: local

Kafka配置项说明

KRaft vs Zookeeper

这里我们的配置是选择的是KRaft,因为Kafka官方已经计划在Kafak中移除Zookeeper。至于为什么要移除?confluentinc官方写了很多文章,这里不再一一列举,在Google上一搜就一大堆

KRaft site:confluent.io

下面是几篇文章

  • why move to kraft
  • Why ZooKeeper Was Replaced with KRaft
  • Apache Kafka Without ZooKeeper
  • Getting Started with the KRaft Protocol

和KRaft有关的配置

  • node.id

    The node ID associated with the roles this process is playing when process.roles is non-empty. This is required configuration when running in KRaft mode.

  • porcess.roles

    The roles that this process plays: ‘broker’, ‘controller’, or ‘broker,controller’ if it is both. This configuration is only applicable for clusters in KRaft (Kafka Raft) mode (instead of ZooKeeper). Leave this config undefined or empty for Zookeeper clusters

  • controller.listener.names

    A comma-separated list of the names of the listeners used by the controller. This is required if running in KRaft mode

关于Controller和Broker的概念解释

一句话解释:

Controller负责协调Broker(详细解释可见Kafak权威指南的第5章,该书可在Apache Kafak官网 > Get Started > Books 中找到免费下载)

To summarize, Kafka uses Zookeeper’s ephemeral node feature to elect a controller
and to notify the controller when nodes join and leave the cluster. The controller is
responsible for electing leaders among the partitions and replicas whenever it notices
nodes join and leave the cluster. The controller uses the epoch number to prevent a
“split brain” scenario where two nodes believe each is the current controller.

Broker负责处理生产者生产消息的请求、存储消息、消费者消费消息的请求。

A single Kafka server is called a broker. The broker receives messages from producers,
assigns offsets to them, and commits the messages to storage on disk. It also services
consumers, responding to fetch requests for partitions and responding with the mes‐
sages that have been committed to disk
来自Kafka权威指南第1章>Enter Kafka > Broker And Clusters

Listener的各种配置

当时看官方文档的时候,这部分一直被搞得晕头转向,直到看到这篇关于Kfaka的Listener文章,才彻底明白了各种listener,强烈推荐读一下这篇文章

listener可分为3种:

  1. 用来选举Controller的listener
  2. kafka集群内部各broker节点通信的listener
  3. 外部客户端,例如Java Client连接Kafka

了解了3中controller,结合上面的这篇文章+Apache Kafka官方文档的配置说明,配置listener就变得很容易了。

Kafka UI配置项说明

对于UI配置项没什么特别要说的,这里只是提一下,注意这里的docker-compose.yml中environment的写法,和上面的Kafka镜像中environment的写法不同,这是两种不同的写法
详细文档见Docker Compose文档规范中environment章节
在这里插入图片描述

测试

使用上述docker-compose.yml文件,启动

docker-compose -f docker-compose.yml up -d

在本地浏览器打开

http://localhost:9095/kafkaui/auth

输入用户名、密码,进入UI界面
在这里插入图片描述

Kafka集群Docker Compose示例配置

本篇文章重点在于搭建单机版Kfaka环境,集群不在文章讨论范围之内,如果对集群配置感兴趣和有需要的同学,这里仅给出几个示例的Github仓库仅供参考,并且全部使用KRaft而不是Zookeeper

我个人的理解,最小的集群应该是3个controller+3个broker, Kafka关于KRaft模式下Controller的部署建议

  1. 来自bitnami的Kafka集群示例,三个节点皆为controller和broker。
  2. 来自confluentic的Kafka集群配置,我个人倾向于这个配置,毕竟confluentic是Kafka商业化的公司,其创始人来自LinkedIn。这里是四个节点,一个controller和3个broker。
  3. 来自Github的Kafka-In-Box,使用4个节点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/145440.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring5应用之AOP切入点详解

作者简介:☕️大家好,我是Aomsir,一个爱折腾的开发者! 个人主页:Aomsir_Spring5应用专栏,Netty应用专栏,RPC应用专栏-CSDN博客 当前专栏:Spring5应用专栏_Aomsir的博客-CSDN博客 文章目录 前言切入点详解切…

简单三步 用GPT-4和Gamma自动生成PPT PDF

1. 用GPT-4 生产PPT内容 我想把下面的文章做成PPT,请你给出详细的大纲和内容 用于谋生的知识,学生主要工作是学习,成年人的工作是养家糊口,这是基本的要求,在这之上,才能有更高的追求。 不要短期期望过高…

C#(CSharp)入门教程

目录 C#的第一个程序 变量 折叠代码 变量类型和声明变量 获取变量类型所占内存空间(sizeof) 常量 转义字符 隐式转换 显示转换 异常捕获 运算符 算术运算符 布尔逻辑运算符 关系运算符 位运算符 其他运算符 字符串拼接 …

计算机图像处理-高斯滤波

高斯滤波 高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到…

Ubuntu部署运行ORB-SLAM2

ORB-SLAM2是特征点法的视觉SLAM集大成者,不夸张地说是必学代码。博主已经多次部署运行与ORB-SLAM2相关的代码,所以对环境和依赖很熟悉,对整个系统也是学习了几个月,一行行代码理解。本次在工控机上部署记录下完整的流程。 ORB-SLA…

koa基础应用

不要把koa想得太复杂,他就是一个Node框架而已。 在本地应用安装好Node和koa后,先实现一下简单的服务app.js,代码如下: const Koa require(koa) const app new Koa(); app.use(async (context) > {context.body hello Koa …

企业风险管理策略终极指南

企业风险管理不一定是可怕的。企业风险管理是一个模糊且难以定义的主题领域。它涵盖了企业的多种风险和程序,与传统的风险管理有很大不同。 那么,企业风险管理到底是什么?在本文中,我们将确定它是什么,提出两种常见的…

B058-SpringBoot

目录 springboot概念与作用入门案例springboot运行方式热部署配置文件Profile多环境支持整合测试-springboot-testSpringboot-web1.返回json数据2.返回页面(模板技术)thymeleaf1.导入thymeleaf依赖2.模板文件3.controller4.启动类 SSM整合1.导包2.项目目…

机器人中的数值优化|【四】L-BFGS理论推导与延伸

机器人中的数值优化|【四】L-BFGS理论推导与延伸 往期内容回顾 机器人中的数值优化|【一】数值优化基础 机器人中的数值优化|【二】最速下降法,可行牛顿法的python实现,以Rosenbrock function为例 机器人中的数值优化|【三】无约束优化,拟牛…

让大脑自由

前言 作者写这本书的目的是什么? 教会我们如何让大脑更好地为自己工作。 1 大脑的运行机制是怎样的? 大脑的基本运行机制是神经元之间通过突触传递信息,神经元的兴奋和抑制状态决定了神经网络的运行和信息处理,神经网络可以通过…

使用Qt验证RGB格式

下面我们用不同的颜色来绘制一块矩形区域,来对比学习RGB颜色。 一片漆黑的黑色 黑色在RGB中是三个颜色分量都是0。也就是没有颜色。 下面我们绘制一个水平100个像素,垂直200个像素的矩形区域,颜色设置为黑色。 #ifndef MAINWINDOW_H #def…

SpringBoot整合阿里云OSS文件存储解决方案

🧑‍💻作者名称:DaenCode 🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。 😎人生感悟:尝尽人生百味,方知世间冷暖。 📖所属专栏:Sp…

Dink进阶之路

1、环境变量 cat /etc/profile #flink需要 export HADOOP_CLASSPATHhadoop classpath export HADOOP_CONF_DIR/etc/hadoop/conf2、Flink配置 2.1、flink-conf.yaml jobmanager.rpc.address: node-146 jobmanager.rpc.port: 6123 # 设置jobmanager总内存 jobmanager.memory.…

clip代码安装实操

CLIP模型及代码地址:GitHub - openai/CLIP: Contrastive Language-Image Pretraining 代码准备环境 先创建一个anaconda虚拟环境,包含python3.7版本,将该环境命名为clip。成功。 ( pytorch1.7.1 所需 python 版本 >3.6&…

React 入门笔记

前言 国庆值班把假期拆了个稀碎, 正好不用去看人潮人海, 趁机会赶个晚集入门一下都火这么久的 React 前端技术. 话说其实 n 年前也了解过一丢丢来着, 当时看到一上来就用 JS 写 DOM 的套路直接就给吓退了, 扭头还去看 Vue 了🤣, 现在从市场份额来看, 确实 React 还…

抓包习讯云院校数据通过PHP解析导入数据库

前言 最近,打卡APP需要这个数据,通过抓包后发现这个数据是固定的,获取很简单,但是数据太多,手动导入不显示,于是分析了json格式后果断通过脚本完成 【推荐】 《【MQTT】Esp32数据上传采集:最…

GitHub上有助于开发微信小程序的仓库

2023年9月30日,周六晚上 最近帮同学在GitHub找了一些开发小程序会用到的东西 目录 UI库WePY框架基于WePY框架的Demo微信小程序开发资源汇总 UI库 GitHub - Tencent/weui-wxss: A UI library by WeChat official design team, includes the most useful widgets/m…

CSS基础介绍2

CSS使用三种方式 方式1&#xff1a;在标签的style属性上设置CSS样式&#xff08;行内样式&#xff09; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>在标签的style属性上设置CSS样式</title>…

吉力宝:智能科技鞋品牌步力宝引领传统产业创新思维

在现代经济环境下&#xff0c;市场经济下产品的竞争非常的激烈&#xff0c;如果没有营销&#xff0c;产品很可能不被大众认可&#xff0c;酒香也怕巷子深&#xff0c;许多传统产业不得不面临前所未有的挑战。而为了冲出这个“巷子”&#xff0c;许多企业需要采用创新思维&#…

Sentinel学习(1)——CAP理论,微服务中的雪崩问题,和Hystix的解决方案 Sentinel的相关概念 + 下载运行

前言 Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件&#xff0c;主要以流量为切入点&#xff0c;从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。 本篇博客介绍CAP理论&#xff0c;微…