zookeeper的应用

news2024/11/27 14:52:40

Zookeeper的配置文件解析:

Zookeeper内部原理:

        选举机制

               半数机制:在集群环境中半数以上的机器存活,这个集群可用,所以在设计Zookeeper集群系统时,通常会选择 奇数台服务器来搭建Zookeeper的集群

                虽然在配置文件中并没有指定Master和Slave。但是,Zookeeper工作时,是有一个节点为Leader,其他则为Follower,Leader是通过内部的选举机制临时产生的

               临时选举机制:zookeeper集群启动时有一个默认的票数,第一个台启动,票数投给自己,第二台也启动,票数也是投给自己,第三台也是把票数给自己,zookeeper最少要三台服务才能成为集群(id是自动自增的,后启动的服务id越大),但是目前的票数都为1,就会把票数给id大的的服务,于是第三台服务就有了三票,成为了leader,之后启动的服务票数只有1,无论如何也成为不了leader,也会把票数投给第三台服务,所以只要是第三台启动的服务都会成为leader

节点类型

        1.持久型

               特点:客户端如果和Zookeeper断开了连接,对应的节点上数据依旧持久保存着

               创建ZNode时按照顺序来进行标识节点,ZNode名称后面追加一个数字的值,

例如:Znode001、Znode002、Znode003...顺序号是一个单调递增的数字来进行标记。

        2.短暂型

               特点:客户端和Zookeeper断开连接之后,该节点会被自动的回收(自动的删除)

               创建ZNode节点的时候,ZNode名称会追加一个数字的值,顺序编号是一个单调递增的数字:例如:Znode001、Znode002、Znode003...

监听器原理

        1.在main方法中创建Zookeeper客户端的同时就会创建两个线程,一个负责网络连接通信(获取数据),一个负责监听(看数据是否改变)。

        2.监听事件就会通网络络通信发送给Zookeeper。

        3.Zookeeper获得注册的监听事件后,立刻将监听事件添加到监听列表里。

        4.Zookeeper监听到数据变化或路径变化,就会将这个消息发送给监听线程。常见的监听: 监听节点数据的变化:get path [watch]

        监听子节点增减的变化:ls path [watch]

        5.监听线程就会在内部调用process()方法(需要开发者实现process()方法的内容)。

写数据流程解析

        1.Client想向ZooKeeper的Server1上写数据,必须得先发送一个写的请求。

        2.如果Server1不是Leader(从节点没有写的权限),那么Server1会把接收到的请求进一步转发给Leader。

        3.这个Leader会将写请求广播给各个Server,各个Server写成功后就会通知Leader。         4.当Leader收到半数以上的Server数据写成功了,那么就说明数据写成功了。

        5.随后,Leader会告诉Server1数据写成功了。

        6.Server1会反馈通知Client数据写成功了,整个流程结束。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【安全狗】linux免费服务器防护软件安全狗详细安装教程

在费用有限的基础上,复杂密码云服务器基础防护常见端口替换安全软件,可以防护绝大多数攻击 第一步:下载服务器安全狗Linux版(下文以64位版本为例) 官方提供了两个下载方式,本文采用的是 方式2 wget安装 方…

09.计算机网络——套接字编程

文章目录 网络字节序socket编程socket 常见APIsockaddr结构 UDP编程创建socket绑定socketsendto发送数据recvform接收数据关闭socket TCP编程创建socket绑定socketlisten监听套接字accept服务端接收连接套接字connect客户端连接套接字send发送数据recv接收数据关闭socket 工具n…

算法训练营第四十六天||● 139.单词拆分 ● 关于多重背包,你该了解这些! ● 背包问题总结篇!

● 139.单词拆分 这道题和完全背包一样,求排列数相当于 字符串相当于背包,字串相当于物品 注意find方法的使用 find(s.begin(),s.end(),"zichuan") 还有s.substr的使用s.substr(起始位置,截取长度) clas…

Stable Diffusion服务环境搭建(远程服务版)

Stable Diffusion服务环境搭建(远程服务版) Stable Diffusion是什么 Stable diffusion是一个基于Latent Diffusion Models(潜在扩散模型,LDMs)的文图生成(text-to-image)模型。具体来说&#…

ES6基础知识一:说说var、let、const之间的区别

一、var 在ES5中,顶层对象的属性和全局变量是等价的,用var声明的变量既是全局变量,也是顶层变量 注意:顶层对象,在浏览器环境指的是window对象,在 Node 指的是global对象 var a 10; console.log(window.…

VUE3---->基础入门

目录 vue 基础入门 1、解读核心关键词:框架 2、vue 的版本 3、vue 的调试工具 vue 基础入门 vite 的基本使用 1. 创建 vite 的项目 2. 梳理项目的结构 3. vite 项目的运行流程 组件的基本使用 1. 组件的注册 2. 组件之间的样式冲突问题 3. 组件的 props …

穿透内网群晖NAS实现远程访问【无公网IP】

穿透内网群晖NAS实现远程访问【无公网IP】 现代科技日新月异,我们身边的电子设备也在不断更新,日积月累之下,被淘汰的电子设备越来越多,难道就让这些性能不算差的电子设备从此闲置么,这明显不符合我们物尽其用的原则&a…

记录安装stable diffusion webui时,出现的gfpgan安装卡住的问题

参考链接:(145条消息) 使用stable diffusion webui时,安装gfpgan失败的解决方案(windows下的操作)_新时代原始人的博客-CSDN博客

[書籍]思考的框架

圖片來源:博客來書店 《思考的框架》是一本極具啟發性和實用性的書籍,它以系統性和綜合性的方式引導讀者運用跨學科思維來解決問題和拓展思維視野。作者巧妙地整合了來自不同領域的思想家和學者的觀點,從心理學到經濟學,從哲學到科學等&#…

docker安装jdk

文章目录 1.安装镜像2.查看已安装的镜像4.运行容器5.进入JDK 容器6.查看JDK版本 1.安装镜像 找到所要安装的镜像版本,复制命令 输入命令,下载openjdk8镜像 命令作用docker pull openjdk:8拉取版本号为8的镜像 2.查看已安装的镜像 命令作用docker ima…

指针大厂笔试真题讲解(c语言篇)

大家好,我是c语言boom家宝,今天为大家带来的是c语言指针内容在大厂笔试中的真题讲解,希望能让初学者对指针有更深入的理解。 ps:如有侵权,请私信联系,立刻删除。 真题一: 答案:2 &…

SpringCloud分布式项目下feign的使用

新建一个feign的微服务&#xff08;后面统称为A&#xff09;&#xff0c;其他项目要使用利用maven导入该服务模块的依赖就行了 导入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</…

【C++】STL——list的使用和介绍、list的构造函数及其使用、list迭代器及其使用

文章目录 1.list的介绍和使用2.list的构造函数&#xff08;1&#xff09;list (size_type n, const value_type& val value_type()) &#xff08;2&#xff09;list() 构造空的list&#xff08;3&#xff09;list (const list& x) 拷贝构造函数&#xff08;4&#xff…

Spring Boot创建与运行

Spring Boot创建与运行 ​ 经过之前 Spring 文章的铺垫&#xff0c;终于来到了基于 Spring &#xff0c;并且也是 Spring 最火的框架之一 Spring Boot &#xff0c;在企业或者个人项目中&#xff0c;基本都是使用 Spring Boot &#xff0c;所以 Spring Boot 在 Spring 的学习阶…

Spring Boot 源码学习之@EnableAutoConfiguration注解

EnableAutoConfiguration 注解 引言主要内容1. EnableAutoConfiguration 功能解析1.1 常见的自动配置示例1.2 源码介绍 2. Import 注解介绍3. AutoConfigurationPackage 注解介绍 总结 引言 在 Huazie 的上篇博文中&#xff0c;我们详细了解了关于 SpringBootApplication 注解…

【论文阅读 03】机器学习算法在颈动脉斑块影像学分类中的研究进展

读完之后就是&#xff0c;总结 机器学习&#xff08;SVM、小波&#xff09;和深度学习&#xff08;CNN&#xff09;在 颈动脉斑块影像学中的 分类效果。只讨论了超声、磁共振两种成像 Chin J Clin Neurosci 临床神经科学杂志 复旦大学 颈动脉斑块( carotid plaques) 是一种…

JavaScript基础篇(31-40题)

此文章&#xff0c;来源于印客学院的资料【第一部分&#xff1a;基础篇(105题)】&#xff0c;也有一些从网上查找的补充。 这里只是分享&#xff0c;便于学习。 诸君可以根据自己实际情况&#xff0c;自行衡量&#xff0c;看看哪里需要加强。 概述如下&#xff1a; javascri…

使用Docker在局域网安装GitLab

使用 Docker 安装 GitLab 1. 安装GitLab 最近想在本地创建一个GitLab仓库&#xff0c;简单记录一下&#xff1a; 简单设置一个GitLab信息的存储目录 export GITLAB_HOME/etc/docker/gitlab/ && mkdir &GITLAB_HOMEdocker中启动 sudo docker run --detach \# 以…

C++:类和对象(上)---初步认识类和this指针

文章目录 面向过程和面向对象类的引入类的定义类定义的方式 类的访问限定符类的实例化类对象模型类对象的大小 this指针 面向过程和面向对象 C语言是一门面向过程的语言关注的是过程&#xff0c;确认一个问题求解的步骤&#xff0c;再一步一步对它进行解决 C是一门基于面向对…

【学会动态规划】最小路径和(9)

目录 动态规划怎么学&#xff1f; 1. 题目解析 2. 算法原理 1. 状态表示 2. 状态转移方程 3. 初始化 4. 填表顺序 5. 返回值 3. 代码编写 写在最后&#xff1a; 动态规划怎么学&#xff1f; 学习一个算法没有捷径&#xff0c;更何况是学习动态规划&#xff0c; 跟我…