kafka 集群搭建
kafka集群搭建
1. kafka介绍
Apache Kafka是一个开源的流处理平台,由Scala和Java编写1。它是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统2。Kafka的最大特性就是可以实时处理大量数据以满足各种需求场景,比如基于hadoop的批处理系统、低延迟的实时系统、storm/Spark流式处理引擎,web/nginx日志、访问日志,消息服务等等。
2. 组件介绍
Producer(生产者):负责将消息发布到Kafka集群。生产者可以选择将消息发送到指定的主题和分区,也可以让Kafka自动选择合适的分区。
Broker:每个Broker都是一个独立的Kafka节点,一台Kafka服务器。一个Kafka集群由多个Broker组成。
Topic:消息的主题,可以理解为消息队列,Kafka的数据就保存在Topic中。在每个Broker上都可以创建多个Topic。
Partition:Topic的分区,每个Topic可以有多个分区,分区的作用是做负载,提高Kafka的吞吐量。同一个Topic在不同的分区的数据是不重复的。
Replica:每一个分区都有多个副本,副本的作用是做备胎,主分区(Leader)会将数据同步到从分区(Follower)。当主分区(Leader)故障的时候会选择一个备胎(Follower)上位,成为Leader。
Consumer(消费者):消息的消费方,是消息的出口。消费者主动的去Kafka集群拉取消息时,也是从Leader分区去拉取数据。
Consumer Group:我们可以将多个消费者组成一个消费者组,同一个消费者组的消费者可以消费同一个Topic下不同分区的数据,同一个分区只会被一个消费者组内的某个消费者所消费,防止出现重复消费的问题。
Zookeeper:Kafka集群依赖Zookeeper来保存集群的元信息,来保证系统的可用性。
3. 特性
- 高吞吐量、低延迟:Kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个topic可以分多个partition, consumer group 对partition进行consume操作。
- 可扩展性:Kafka集群支持热扩展。
持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失。 - 容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败)。
- 高并发:支持数千个客户端同时读写。
- 支持实时在线处理和离线处理:可以使用Storm这种实时流处理系统对消息进行实时进行处理,同时还可以使用Hadoop这种批处理系统进行离线处理。
- 消息持久化:Kafka将所有数据写入和复制到磁盘,因此具有可扩展性和容错能力非常高的存储系统。默认情况下,Kafka一直保留磁盘上存储的数据,直到其空间用尽,但是用户可以设置保留限制。
- 多使用器:多个使用器可以订阅相同主题,因为Kafka允许将同一条消息重放指定的时间长度。
4. kafka集群的机制
Kafka集群的工作机制主要包括以下几个方面1234:
- Controller角色:在Kafka集群中,需要选举出一个Broker,担任Controller角色。由Controller角色来管理整个集群中的分区和副本状态。
- Leader角色:在同一个Topic下的多个Partition中,需要选举出一个Leader角色。由Leader角色的Partition来负责与客户端进行数据交互3。
- Zookeeper的作用:Kafka依赖于Zookeeper,Kafka会将每个服务的不同之处,也就是状态信息,保存到Zookeeper中。通过Zookeeper中的数据,指导每个Kafka进行与其他Kafka节点不同的业务逻辑。
- Push-and-Pull模式:Kafka中的Producer和Consumer采用的是Push-and-Pull模式,即Producer只管向Broker Push消息,Consumer只管从Broker Pull消息,两者对消息的生产和消费是异步的1。
- Broker之间的关系:Kafka集群中Broker之间的关系不是主从关系,各个Broker在集群中地位一样,我们可以随意的增加或删除任何一个Broker节点。
5. kafka集群搭建
正如上述我们介绍的kafka集群的机制 Broker之间的关系 天然支持集群。只需要增删节点即可。
- zk集群准备 版本为 3.9.1
- 下载安装包 搭建kafka集群版本3.6.1 下载 https://downloads.apache.org/kafka/3.6.1/kafka_2.13-3.6.1.tgz
- 修改配置
# 指定当前节点的brokerId,同一个集群中的brokerId需要唯一 broker.id=0 # 指定监听的地址及端口号,使用hostname 或者内网IP皆可 listeners=PLAINTEXT://hostname:9092 # 配置外网访问ip 如果为空 则会使用listeners(如果不为空) 其他的情况使用 InetAddress.getCanonicalHostName() 的值 # Hostname and port the broker will advertise to producers and consumers. # If not set, it uses the value for "listeners" if configured. Otherwise, it will use the value returned from java.net.InetAddress.getCanonicalHostName(). advertised.listeners=PLAINTEXT://hostname:9092 # 指定kafka日志文件的存储目录 log.dirs=/usr/local/kafka/logs # 指定zookeeper的连接地址,若有多个地址则用逗号分隔 zookeeper.connect=localhost:2181,localhost:2182,localhost:2183 # 配置可删除 delete.topic.enable=true - 使用scp命令发送到其他的服务器 注意配置文件需要重点修改几个地方 broker.id listeners 以及 advertised.listeners
scp -r /usr/local/develop/kafka_2.12-3.6.1 remote_ip:/usr/local/develop/kafka_2.12-3.6.1
- 需要搭建几个节点 就是发送几份
- 启动服务即可
nohup sh ./bin/kafka-server-start.sh ./config/server.properties >./out.log 2>&1 &
这样就完成kafka集群的搭建~~
good day ! ! !
相关文章:
kafka 集群搭建
kafka集群搭建 1. kafka介绍 Apache Kafka是一个开源的流处理平台,由Scala和Java编写1。它是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统2。Kafka的最大特…...
springboot-基础-eclipse配置+helloword示例
备份笔记。所有代码都是2019年测试通过的,如有问题请自行搜索解决! 下一篇:springboot-基础-添加model和controller的简单例子常用注解含义 目录 配置helloword示例新建项目创建文件 配置 spring boot官方有定制版eclipse,也就是…...
关于HTML标签应用教程
简介 HTML(HyperText Markup Language)是用于创建网页结构的标记语言。在本教程中,我们将介绍一些常用的HTML标签,以及它们的用法和示例。 1. HTML基础结构 <!DOCTYPE html> <html> <head><title>页面…...
3. 台阶问题
数楼梯 题目描述 楼梯有 N N N 阶,上楼可以一步上一阶,也可以一步上二阶。 编一个程序,计算共有多少种不同的走法。 输入格式 一个数字,楼梯数。 输出格式 输出走的方式总数。 样例 #1 样例输入 #1 4样例输出 #1 5提示…...
推荐一个 Obsidian 的 ChatGPT 插件
源码地址:https://github.com/nhaouari/obsidian-textgenerator-plugin Text Generator 是目前我使用过的最好的 Obsidian 中的 ChatGPT 功能插件。它旨在智能生成内容,以便轻松记笔记。它不仅可以在 Obsidian 中直接使用 ChatGPT,还提供了优…...
aws的RDS数据库开启慢查询日志
#开启慢日志两个参数 slow_query_log 1 设置为1,来启用慢查询日志 long_query_time 5 (单位秒) sql执行多长时间被定义为慢日志1. 点击RDS然后点击参数组,选择slow_query_log,设置为1【表示开启慢日志】点击保存…...
一文读懂 Python 值传递和引用传递
文章目录 版本前言形参和实参值传递和引用传递Python 变量存储值语义和引用语义值语义引用语义 探讨 Python 值传递和引用传递不可变(immutable)类型可变(mutable)类型案例一案例二 拓展:不可变类型真的不可变…...
Linux进阶——系统安全,重要文件,加固系统的相关配置
目录 引出Linux系统安全一、重要文件二、帐户口令三、权限管理四、日志配置五、服务安全六、其他配置 缓存三兄弟:缓存击穿、穿透、雪崩缓存击穿缓存穿透缓存雪崩 总结 引出 Linux进阶——系统安全,重要文件,加固系统的相关配置 Linux系统安…...
C++三级专项 字符串逆序
输入一串‘!’结束的字符,按逆序输出。 输入 如题述。 输出 如题述。 输入样例 abc! 输出样例 cba解析:strlen(s)用来计算指定的字符串s的长度,不包括结束字符“\0”。 不准直接抄!!! …...
【iOS ARKit】ARWorldMap
ARWorldMap 用于存储 ARSession 检测扫描到的空间信息数据,包括地标(Landmark)、特征点(Feature Point)、平面(Plane)等,以及使用者的操作信息,如使用者添加的 ARAnchor …...
敏捷开发最佳实践:质量维度实践案例之软硬一体持续交付
在过去的Top敏捷实践案例中,我们可以看到企业或团队在敏捷质量管理上的创新,包括场景化测试、迭代T1自动化覆盖、一套自动用例到处运行、用例持续运行可视化等,而这也进一步促进了价值流动。本文将继续给大家带来全新的质量维度实践案例&…...
PMP证书的含金量如何?
PMP含金量更多的是“敲门砖”作用,公司招聘的门槛,现在坐项目的大部分都需要PMP/NPDP证书。 当然现在PMP管理模式也很热门,对企业发展很有利,各大企业都有引进改良应用在公司的项目上,之前在校友群里面大家在讨论PMP …...
Linux 下安装Jupyter
pip3 install jupyter pip3 install ipython -------------------------------------------- pip3 install jupyterlab jupyter lab pip3 list | grep jupyterlab 启动: python3 -m jupyter lab 2.安装朱皮特 pip3 install -i https://pypi.douban.com/simpl…...
docker 基础(二)
常见命令 Docker最常见的命令就是操作镜像、容器的命令,详见官方文档:https://docs.docker.com/ 数据卷 命令说明文档地址docker volume create创建数据卷docker volume createdocker volume ls创建数据卷docker volume lsdocker volume rm查看所有数…...
LeetCode 刷题 [C++] 第236题.二叉树的最近公共祖先
题目描述 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以…...
vue3+vite 项目的创建
这里要提醒一下,如果我们要使用 vue3 的组合式api 的写法的话, 那么我们使用的 vue 版本不能低于 vue3.2 版本,不能低于 vue3.2 版本,不能低于 vue3.2 版本 vue2 已停止维护了, 现在全面拥抱vue3 之前用 vue-cli 创建…...
Windows Server 2022 使用ApacheDS用户认证
Windows Server 2022 使用ApacheDS用户认证 参考文档:https://docs.foxpass.com/docs/windows-ldap-auth-with-pgina 安装pGina软件,打开pGina软件 勾选启用LDAP认证,点击Configure 修改LDAP认证信息 点击Gateway,设置只要登…...
【Oracle】Oracle清理日志空间
(一)通过adrci清理日志空间 1.通过find命令查询大数据文件 find / -type f -size 100M 2.登录oracle数据库服务器用户 su - oracle 3.执行故障诊断命令 adrci 4.查询ADR目录 show home 5.切换到对应目录 set homepath diag/rdbms/orcl 6.执行日志清理命令…...
数据抽取平台pydatax介绍--实现和项目使用
数据抽取平台pydatax实现过程中,有2个关键点: 1、是否能在python3中调用执行datax任务,自己测试了一下可以,代码如下: 这个str1就是配置的shell文件 try:result os.popen(str1).read() except Exception as …...
容易发生内存泄漏的八个场景,你都知道吗?
内存泄漏与内存溢出 JVM在运行时会存在大量的对象,一部分对象是长久使用的,一部分对象只会短暂使用 JVM会通过可达性分析算法和一些条件判断对象是否再使用,当对象不再使用时,通过GC将这些对象进行回收,避免资源被用…...
2026年安卓APP安全加固公司哪家好?从技术、性能到合规的深度选型指南
选错安卓APP安全加固公司,后果可能比不加固更严重——应用商店审核被拒、上线后用户疯狂反馈闪退、核心代码被逆向破解导致数据泄露。更棘手的是,当你拿着加固报告去应对等保测评时,可能因为加固方案不被认可而功亏一篑。这些都不是危言耸听&…...
Yalmip进阶指南:解锁约束函数在组合优化与逻辑建模中的实战技巧
1. 从数独到排班:alldifferent函数的进阶玩法 第一次接触alldifferent函数时,我和大多数人一样,只把它当作解决数独游戏的工具。直到有次帮朋友设计排班系统,才发现这个函数的真正威力。想象一下医院护士排班场景:每位…...
STM32:CubeMX+IAR环境搭建全流程
一:前期准备 硬件:STM32F103C8T6最小系统板、ST-LINK/V2下载器 IDE:STM32CubeMX v6.12.0、IAR for ARM v9.30.1 固件包:STM32Cube MCU Package for STM32F1 Series v1.8.0 补充:固件包可在CubeMX中直接下载,也可提…...
专业视频对比神器:用video-compare轻松解决你的视频质量难题
专业视频对比神器:用video-compare轻松解决你的视频质量难题 【免费下载链接】video-compare Split screen video comparison tool using FFmpeg and SDL2 项目地址: https://gitcode.com/gh_mirrors/vi/video-compare 你是否曾经需要比较两个视频的画质差异…...
《企业:OpenClaw+企业级部署+Skills+RAG企业级应用案例实操》
《企业:OpenClaw企业级部署SkillsRAG企业级应用案例实操》大模型实战专家—周红伟老师 法国科学院数据算法博士/曾任阿里人工智能专家课程背景随着大语言模型技术的飞速发展,AI代理(AI Agent)正成为企业智能化转型的核心抓手。然而…...
【手把手】WSL2部署MySQL 8.0与DataGrip无缝对接实战指南
1. 为什么选择WSL2MySQL 8.0DataGrip组合? 如果你是一名习惯在Windows环境下开发的程序员,但又需要Linux系统的开发环境,WSL2绝对是你的不二之选。它完美解决了双系统切换的麻烦,也避免了虚拟机资源占用过高的问题。而MySQL 8.0作…...
07_NVIDIA Triton Java API:企业级高性能推理服务
NVIDIA Triton Java API:企业级高性能推理服务 摘要:NVIDIA Triton 是业界最先进的模型推理服务软件,支持多框架并发执行和动态批处理。本文深入解析 Triton 架构、Java API 的两种形态、TensorRT-LLM 后端集成,以及如何构建高性能…...
电机控制:PWM 原理与应用
电机控制:PWM原理与应用 在现代工业自动化和智能设备中,电机控制技术扮演着至关重要的角色。其中,脉宽调制(PWM)技术因其高效、灵活的特点,成为电机控制的核心手段之一。无论是家用电器中的风扇调速&#…...
【多模态交互设计黄金法则】:SITS2026首席架构师首次公开7大反直觉设计原则(含3个已落地医疗AI案例)
第一章:SITS2026多模态交互设计全景图谱 2026奇点智能技术大会(https://ml-summit.org) SITS2026(Smart Interactive Transmodal Systems 2026)定义了一套面向下一代人机协同场景的多模态交互设计范式,其核心在于语义对齐、时序…...
Minecraft Masa Mods 中文汉化包:解决中文玩家语言障碍的终极方案
Minecraft Masa Mods 中文汉化包:解决中文玩家语言障碍的终极方案 【免费下载链接】masa-mods-chinese 一个masa mods的汉化资源包 项目地址: https://gitcode.com/gh_mirrors/ma/masa-mods-chinese 对于超过80%的中文Minecraft玩家来说,语言障碍…...
