单机模拟kafka分布式集群(演示生产、消费数据过程)
用单机搭建kafka伪分布式集群,其实集群的概念并不复杂
先说明一下,以下的每个服务启动后都需要新开一个终端来启动另外的服务(因为是集群,自然会用多个终端)
首先下载kafka
提取码:dvz4
或者直接去官网下载kafka_2.11-1.0.0.tgz
tar -zxvf kafka_2.11-1.0.0.tgz
cd 进入kafka_2.11-1.0.0里面
1.mkdir etc
2.cp config/zookeeper.properties etc
//它是zookeeper的配置文件
3.cp config/server.properties etc
//不要直接执行这条命令,它是用来配置kafka的配置文件, 由于我们需要3个broker实例,所以需要拷贝三份, 把这个命令修改为
cp config/server.properties etc/server_0.propertiescp config/server.properties etc/server_1.propertiescp config/server.properties etc/server_2.properties
4.进入这三个配置文件,分别把broker.id的值更改为0,1,2. 把listeners=PLAINTEXT://:9092中的 9092分别改为9092,9093,9094, 再把log.dirs=/tmp/kafka-logs中的logs分别改为logs-0, logs-1, logs-2
kafka是用到了zookeeper的,zookeeper的作用在文末有介绍,每个kafka的实例都需要连接到zookeeper的,注意看这三个配置文件里面都有zookeeper.connect=localhost:2181
, 因为zookeeper就在本机,所以不用特殊配置,若真正的多机上集群自然就需要配置了。
5.更改好之后去bin目录启动zookeeper, 执行
./zookeeper-server-start.sh ../etc/zookeeper.properties
对于为什么要用zookeeper在文末有介绍。
启动zookeeper过程报错问题
如果java版本不支持,当前这个kafka需要的java版本是8之前, 而我的是11
出现类似Kafka 无法识别的 VM 选项“PrintGCDateStamps”的报错在bin/kafka-run-class.sh中把JAVA_MAJOR_VERSION=$($JAVA -version 2>&1 | sed -E -n 's/.* version "([^.-]*).*"/\1/p')换成JAVA_MAJOR_VERSION=$($JAVA -version 2>&1 | sed -E -n 's/.* version "([^.-]*).*/\1/p')区别就是少了一个"
6.接着启动三个kafka的实例(分别打开三个新的终端)
./kafka-server-start.sh ../etc/server-0.properties
./kafka-server-start.sh ../etc/server-1.properties
./kafka-server-start.sh ../etc/server-2.properties
7.接下来是创建kafka的主题
./kafka-topics.sh --zookeeper localhost:2181 --create --topic test --partitions 3 --replication-factor 2
解释一下以上字段,
--zookeeper是必须的,因为zookeeper是在本地,所以写的是localhost,2181表示zookeeper监听的端口号
--create表示要创建主题了,可以把它改为--describe表示查看主题的分区情况
--topic 表示要创建的主题名
--partitions 表示分区数量
--replication-factor 表示每个分区有多少份(主本+副本)
8.创建好了之后查看一下刚才创建的主题情况
./kafka-topics.sh --zookeeper localhost:2181 --describe --topic test介绍一下主要字段:
partition表示分区号,
leader 表示分区的主本在哪个终端(broker)上
replicas 表示partition表示的这个分区在哪些终端(broker)上
Isr 表示当前正常同步的终端(broker)有哪些
9.kafka利用控制台模拟消费者消费数据
./kafka-console-consumer.sh --bootstrap-server localhost:9092, localhost:9093, localhost:9094 --topic test此时已经在等待消费数据了,所以需要一个生产者
10.kafka利用控制台模拟生产者生产数据
./kafka-console-producer.sh --broker-list localhost:9092, localhost:9093, localhost:9094 --topic test此时在当前终端输入任意内容, 消费者那里就能接受到消息了。
拓展:zookeeper的作用, 因为kafka用到了zookeeper
先说明一点:zookeeper主要就是通过znode的节点类型 + 监听机制 来实现很多实用的功能。
因为kafka用到了zookeper,简单介绍一下,可以用它来做统一配置管理、统一命名服务、分布式锁、集群管理。
zookeper的节点成为znode
znode有两种类型: 短暂(当客户端和服务端断开连接后,所创建的znode会自动删除), 持久(连接断开后也不会删除。) , 它们有一个共同特点,可以把节点的名字弄成顺序的(与做分布式锁有关)
zookeeper和redis一样都是C/S架构(分客户端和服务端)
理解了zookeeper的结构之后,还需要知道zookeeper需要配合监听器才能做这么多事,常见的监听场景有一下两种: 1.监听znode节点的数据变化 2.监听子节点的增减变化。
一、用zookeeper做统一配置管理
比如把一个程序做成集群的形式,每个机器上都有相同的配置文件,如果需要修改,那么就需要在每个机器上都进行修改, 所以可以把这些公共的配置文件放到zookeeper进行管理,同时会落盘数据库, 同时会对应用开启配置实时监听,如果zookeeper配置文件一旦被修改,应用就可以实时监听到并获取。
二、用zookeeper做统一命名服务,理解上和域名一样,我们给一部分资源(多个ip地址)起一个名字,把这个名字挂到znode节点上
三、用zookeeper做分布式锁
举个例子:系统A拿到/locks节点下的所有子节点,经过比较,发现自己(id_000000),是所有子节点最小的。所以得到锁
系统B拿到/locks节点下的所有子节点,经过比较,发现自己(id_000002),不是所有子节点最小的。所以监听比自己小1的节点id_000001的状态
系统C拿到/locks节点下的所有子节点,经过比较,发现自己(id_000001),不是所有子节点最小的。所以监听比自己小1的节点id_000000的状态
四、用zookeeper来管理集群
在zookeeper中创建一个groupMember节点,同时创建3个子节点表示三台不同机器上的服务,如果谁挂了,另外两台就可以感知到。
zookeeper可以实现动态选举master的功能,对于主从的选择, 可以把代表不同机器的znode节点弄成带顺序号的临时节点,zookeeper每次选举最小编号的znode对应的机器作为master,如果master挂了,对应的znode就会删除,然后让新的最小编号的znode对应的机器做master。
相关文章:
单机模拟kafka分布式集群(演示生产、消费数据过程)
用单机搭建kafka伪分布式集群,其实集群的概念并不复杂 先说明一下,以下的每个服务启动后都需要新开一个终端来启动另外的服务(因为是集群,自然会用多个终端) 首先下载kafka 提取码:dvz4 或者直接去官网下载kafka_2.11-1.0.0.tgz t…...
办公室人员离岗识别检测系统 yolov7
办公室人员离岗识别检测系统根据yolov7网络模型深度学习技术,办公室人员离岗识别检测算法能够7*24小时全天候自动识别人员是否在岗位。YOLOv7 在 5 FPS 到 160 FPS 范围内,速度和精度都超过了所有已知的目标检测器,并在V100 上,30…...
Android从屏幕刷新到View的绘制(一)之 Window、WindowManager和WindowManagerService之间的关系
0. 相关分享 Android从屏幕刷新到View的绘制(一)之 Window、WindowManager和WindowManagerService之间的关系 Android从屏幕刷新到View的绘制(二)之Choreographer、Vsync与屏幕刷新 1. 相关类 WindowManagerService,…...
#多源数据融合#:HSI与Lidar
Lidar数据与HSI数据融合应该注意的问题 融合激光雷达(lidar)数据和高光谱数据可以提高地物特征的识别和分类准确性。以下是一些融合这两种数据的注意事项: 数据预处理 由于激光雷达数据和高光谱数据的特点不同,需要对两种数据进…...
android 权限控制与进程隔离
每次介绍说是做系统安全的,面试和领导首先就是说配selinux,实在很无语。虽然权限控制是安全很重要一环。 linux的进程就是系统运行中的程序(process),是正在执行的一个程序或者命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。Linux环境下…...
链表(一):移除链表元素、设计链表等力扣经典链表题目
203.移除链表元素相关题目链接:力扣 - 移除链表元素题目重现给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。思路链表的删除操作如上图所示,我们需要先找到要删除的…...
计算机网络 第4章 作业1
一、选择题 1. 由网络层负责差错控制与流量控制,使分组按序被递交的传输方式是_________(C) A.电路交换 B.报文交换 C.基于虚电路的分组交换 D.基于数据报的分组交换 2. TCP/IP 参考…...
Redis-Java代码使用示例
在我之前的项目中,使用Redis是我们团队自己封装了一个Redis操作类,但是这只是在Spring提供的RedisTemplate上做了一层封装而已,当时使用不是很熟练,都是一边在网上查资料,一边使用;这篇文章会介绍两种使用方…...
acwing3485最大异或和(trie树,贪心)
给定一个非负整数数列 a,初始长度为 N。 请在所有长度不超过 M 的连续子数组中,找出子数组异或和的最大值。 子数组的异或和即为子数组中所有元素按位异或得到的结果。 注意:子数组可以为空。 输入格式 第一行包含两个整数 N,M。 第二行…...
EasyRecovery16免费的电脑的数据恢复工具
常见的数据恢复有两种方式,第一种方式是找别人恢复,按照市场价来说,数据恢复的价格每次在100-500之间,但这种方式容易使自己设备上的隐私资料泄露出去,不安全。 另一种方式则是自己学会数据恢复的方法,有问…...
银行数字化转型导师坚鹏:平安银行数字化转型—橙E网战略研究
平安银行对公业务数字化转型案例—橙E网战略研究课程背景: 很多银行存在以下问题:不清楚银行对公业务数字化转型能否成功?不知道其它银行对公业务数字化转型的实际做法? 课程特色:用实战案例解读平安银行对公业务…...
tun驱动之open
tun驱动对应的设备文件是:/dev/net/tun,其详细信息如下: crw-rw-rw- 1 root root 10, 200 2月 26 08:05 tun 主次设备号的定义如下: #define MISC_MAJOR 10 #define TUN_MINOR 200 由于tun驱动属于misc设备驱动,因此用…...
计算机网络体系结构
计算机网络体系结构是指计算机网络中各个层次和功能组成的结构体系,它定义了计算机网络中各层次之间的协议和接口,以实现不同类型、不同规模、不同性能的计算机之间的互联和通信,同时提供各种网络服务和应用。计算机网络体系结构通常被分为多…...
基础夯实,字节内部总结240道算法LeetCode刷题笔记,直呼太全
1、什么是算法算法(algorithm,[ˈlɡərɪəm],计算程序):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为输出。简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结…...
Three.js使用WebWorker进行八叉树碰撞检测
经过一番探索后还是采用了整个碰撞检测都交给worker来做 原因 如果是小的模型还是不需要这么做的 js线程足够处理构建时的开销 步骤 将需要被检测的物体集合转换成可以背worker接收的结构化数据发送给worker worker将结构化的数据转换成有效的Three元素集合并对其构建八叉树fr…...
【教程】Notion笔记多平台设置中文显示
这个笔记软件界面挺好看,惊艳到了。 目录 网页版 桌面端 Windows版 Mac端 安卓端 网页版 直接安装这个插件即可,Chrome/Edge适用:Notion中文版 桌面端 都要去这个github下载语言包,用于替换文件:https://github.c…...
[牛客Hot101]链表篇
文章目录1.翻转链表2.链表内指定区间翻转3. 链表中的节点每k个一组翻转4. 合并两个排序的链表5. 合并k个排序的链表6. 判断链表是否有环7. 链表中倒数第k个节点8. 删除链表中的倒数第k和节点9. 两个链表的第一个公共节点10.链表的入环节点11. 链表相加(二࿰…...
Vue3 核心模块源码解析(上)
Vue3相比大家也都有所了解,即使暂时没有使用上,但肯定也学习过!Vue3是使用TS进行重写,采用了MonoRepo的管理方式进行管理,本篇文章我们一起来看看 Vue3的使用,与Vue2有什么区别,以及我们该如何优…...
【C进阶】指针的高级话题
文章目录:star:1. 字符指针:star:2. 指针数组2.1 指针数组的定义2.2 指针数组的使用:star:3. 数组指针3.1 数组的地址3.2 数组指针的使用:star:4. 数组参数和指针参数:star:5. 函数指针5.1 函数名和函数的地址5.2 练习:star:6. 函数指针数组6.1 转移表:star:7. 指向函数指针数组…...
无源晶振匹配电容—计算方法
以前有写过一篇文章“晶振”简单介绍了晶振的一些简单参数,今天我们来说下无源晶振的匹配电容计算方法: 如上图,是常见的的无源晶振常见接法,而今天来说到就是这种常见电路的电容计算方法,有两种: A&#…...
【测试】自动化测试03(JUnit)
努力经营当下,直至未来明朗! 文章目录JUnit一) 注解1. Test2. BeforeEach3. BeforeAll4. AfterEach5. AfterAll二) 断言(Assertions类)三)用例的执行顺序四)参数化五)测试…...
《计算机视觉和图像处理简介 - 中英双语版》:神经网络中的激活函数 ReLU vs Sigmoid
文章大纲 Neural Network Module and Training Function创建数据集Define Neural Network, Criterion function, Optimizer and Train the ModelTest Sigmoid and ReluAnalyze Results参考文献与学习路径在本文中,我们使用含有两个隐藏层的神经网络基于MNIST数据集测试Sigmoid…...
(三十七)大白话SQL标准中对事务的4个隔离级别,都是如何规定的呢?
之前我们给大家讲了数据库中多个事务并发时可能产生的几种问题,包括了脏写、脏读、不可重复读、幻读,几种问题 那么针对这些多事务并发的问题,实际上SQL标准中就规定了事务的几种隔离级别,用来解决这些问题。 注意一下ÿ…...
全国计算机等级考试三级网络技术考试大纲(2022年版)
全国计算机等级考试三级网络技术考试大纲(2022年版)基本要求 1. 了解大型网络系统规划、管理方法; 2. 具备中小型网络系统规划、设计的基本能力; 3. 掌握中小…...
服务器部署—若依【vue】如何部署到nginx里面?nginx刷新页面404怎么办?【完美解决建议收藏】
服务器部署项目我们大家都会遇到,但是有些铁子会遇到很多的问题,比如前端部署nginx如何操作? 前端有单纯的静态页面、还有前后端分离的项目;这里博主直接分享最牛最到位的前后端分离项目的前端部署到nginx上面,以若依项…...
算法练习(特辑)算法常用的数据结构、集合和方法总结
一、栈stack 1、初始化:Stack<Integer> st new Stack<Integer>(); 2、常用方法: boolean empty() :测试堆栈是否为空。Object peek( ):查看堆栈顶部的对象,但不从堆栈中移除它。Object pop( )ÿ…...
Apk转Aab(Android-App-Bundle)
这篇文章是参考Apk转Aab(Android-App-Bundle)_YoungBillsohu的博客-CSDN博客 基本照着这个大佬的步骤来就行,但是要注意的是apkTool最好是下新的,否则,会出现说一堆无语的错误,然后导致AAPT2关联资源的时候报错 类似这样的&#…...
大学物理期末大题专题训练总结-热学大题
今天下午去找郑老师权老师等去答疑,老师说大题会考查得比较套路,计算不难。明天就要考试了,再把大题常见题型总结一下,热学这块我做完了蓝本的热学题目,发现了如下三种:有关循环过程曲线的:给出…...
有趣的Hack-A-Sat黑掉卫星挑战赛——卫星平台内存dump
国家太空安全是国家安全在空间领域的表现。随着太空技术在政治、经济、军事、文化等各个领域的应用不断增加,太空已经成为国家赖以生存与发展的命脉之一,凝聚着巨大的国家利益,太空安全的重要性日益凸显[1]。而在信息化时代,太空安…...
OAK相机如何将yoloV8模型转换成blob格式?
编辑:OAK中国 首发:oakchina.cn 喜欢的话,请多多👍⭐️✍ 内容可能会不定期更新,官网内容都是最新的,请查看首发地址链接。 ▌前言 Hello,大家好,这里是OAK中国,我是助手…...
重庆企业网站建设哪家专业/重庆seo怎么样
Wolfram Alpha创始人沃尔夫勒姆的自述 在Y Combinator创业学校的演讲 Stephen Wolfram 编者按: 斯蒂芬•沃尔夫勒姆(Stephen Wolfram)15岁就发表论文,但因为觉得学校学的东西无聊于17岁肄业于伊顿公学;17岁至18岁在牛津…...
Wordpress主题禁用水平滚动/河南网站排名优化
微信搜索【程序员囧辉】,关注这个坚持分享技术干货的程序员。 前言 哨兵和集群的两种高可用解决方案,但是两者在保证高可用上的实现基本是一致的,因为集群模式的高可用解决方案基本就是“照搬”哨兵模式的。 集群可以认为就是用来代替哨兵的…...
广告设计主要做什么/网络营销的seo是做什么的
问题 题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 分析:这是一道很新颖的关于位运算的面试题。 首先我们考虑这个问题的一个…...
怎么在b2b网站上发信息让百度收录怎么做/软件公司
本人出自:http://www.myexception.cn/android/558502.html listview滑动最后停止,没有执行onScrollStateChanged方法,最后停在onScroll,为什么啊? 场景是这样的:滑动列表快到最底部时,松开触摸…...
网站流量分析系统/电商运营培训大概多少学费
仅作为记录,大佬请跳过。 感谢大佬博主文章: 传送门 传送门2...
删除网站留言板功能/app优化推广
变量是保存存储值的内存位置。也就是说,当创建一个变量时,可以在内存中保留一些空间。 基于变量的数据类型,解释器分配内存并决定可以存储在保留的存储器中的内容。 因此,通过为变量分配不同的数据类型,可以在这些变量…...