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将这些对象进行回收,避免资源被用…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
 
RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
 
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
 
C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
 
基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...
CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝
目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...
 
wpf在image控件上快速显示内存图像
wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包…...
 
【Veristand】Veristand环境安装教程-Linux RT / Windows
首先声明,此教程是针对Simulink编译模型并导入Veristand中编写的,同时需要注意的是老用户编译可能用的是Veristand Model Framework,那个是历史版本,且NI不会再维护,新版本编译支持为VeriStand Model Generation Suppo…...
