ZooKeeper学习二

ZooKeeper的java客户端
zk自带zkclient及Apache开源的Curator

Chubby是google的,完全实现paxos算法,不开源,ZooKeeper是chubby的开源实现,使用zab协议,paxos算法的变种。

ZooKeeper常用命令: Is get set create delete

ZAB和Paxos算法的联系和区别
相同点:
1、两者都存在一个类似于Leader进程的角色,由其负责协调多个Follower的运行
2、Leader进程都会等待超过半数的Follower做出正确的反馈后,才会将一个提案进行提交
3、ZAB协议中,每个Proposal中包含一个epoch值来代表当前的Leader周期,Paxos中名字为Ballot
不同点:
ZAB用来构建高可用的分部署数据主备系统,Paxos是用来构建分布式一致性状态机系统
ZooKeeper应用场景
ZooKeeper是一个典型的发布、订阅模式的分布式数据管理与协调框架,开发人员可以使用它来进行分布式数据的发布和订阅
通过对ZooKeeper中丰富的数据节点进行交叉使用,配合Watcher事件通知机制,可以非常方便的构建一系列分布式应用中都会涉及的核心功能,如下:
1、数据发布、订阅
数据发布/订阅系统,即所谓的配置中心,顾名思义就是发布者发布数据供订阅者
进行数据订阅。

目的:
动态获取数据(配置信息)
实现数据(配置信息)的集中式管理和数据的动态更新设计模式:
push模式、pull模式数据配置信息特性
1、数据量通常比较小
2、数据内容在运行时会发生动态更新
3、集群中各机器共享,配置一致基于ZooKeeper的实现方式
数据存储:将数据配置信息存储到ZooKeeper上的一个数据节点
数据获取:应用在启动初始化节点从ZooKeeper数据节点读取数据,并在该节点上注册一个数据变更Watcher
数据变更:当变更数据时,更新ZooKeeper对应节点数据,ZooKeeper会将数据变更通知发到各客户端,客户端街道通知后重新读取变更后的数据即可	2、负载均衡3、命名服务
Zk的命名服务命名服务是指通过指定的名字来获取资源或者服务的地址,利用zk创建一个全局的路径,这个路径就可以作为一个名字,指向集群中的集群,提供的服务地址4、分布式协调、通知
对于系统调度来说:操作人员发送通知实际是通过控制台改变某个节点的状态,
然后 zk 将这些变化发送给注册了这个节点的 watcher 的所有客户端。
对于执行情况汇报:每个工作进程都在某个目录下创建一个临时节点。并携带工
作的进度数据,这样汇总的进程可以监控目录子节点的变化获得工作进度的实时
的全局情况。5、集群管理
所谓集群管理无在乎两点:是否有机器退出和加入、选举 master。
对于第一点,所有机器约定在父目录下创建临时目录节点,然后监听父目录节点
的子节点变化消息。一旦有机器挂掉,该机器与 zookeeper 的连接断开,其所创
建的临时目录节点被删除,所有其他机器都收到通知:某个兄弟目录被删除,于
是,所有人都知道:它上船了。
新机器加入也是类似,所有机器收到通知:新兄弟目录加入,highcount 又有了,
对于第二点,我们稍微改变一下,所有机器创建临时顺序编号目录节点,每次选
取编号最小的机器作为 master 就好。6、Master选举
7、分布式锁
有了 zookeeper 的一致性文件系统,锁的问题变得容易。锁服务可以分为两类,
一个是保持独占,另一个是控制时序。
对于第一类,我们将 zookeeper 上的一个 znode 看作是一把锁,通过 createznode
的方式来实现。所有客户端都去创建 /distribute_lock 节点,最终成功创建的那
个客户端也即拥有了这把锁。用完删除掉自己创建的 distribute_lock 节点就释放
出锁。
对于第二类, /distribute_lock 已经预先存在,所有客户端在它下面创建临时顺
序编号目录节点,和选 master 一样,编号最小的获得锁,用完删除,依次方便。8、分布式队列两种类型的队列:
1、同步队列,当一个队列的成员都聚齐时,这个队列才可用,否则一直等待所有
成员到达。
2、队列按照 FIFO 方式进行入队和出队操作。
第一类,在约定目录下创建临时目录节点,监听节点数目是否是我们要求的数目。
第二类,和分布式锁服务中的控制时序场景基本原理一致,入列有编号,出列按
编号。在特定的目录下创建 PERSISTENT_SEQUENTIAL 节点,创建成功时
Watcher 通知等待的队列,队列删除序列号最小的节点用以消费。此场景下
Zookeeper 的 znode 用于消息存储,znode 存储的数据就是消息队列中的消息内
容,SEQUENTIAL 序列号就是消息的编号,按序取出即可。由于创建的节点是持
久化的,所以不必担心队列消息的丢失问题。

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

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

相关文章

MySQL:1118 - Row size too large(行大小不能超过 65535 问题)

文章目录 问题原因问题复现环境 & 版本复现过程 解决方案调整列大小调整列类型 个人简介 问题 当我们创建表或新增字段时,我们可能遇到下面这个问题: 1118 - Row size too large. The maximum row size for the used table type, not counting BLO…

12.Mysql 多表数据横向合并和纵向合并

Mysql 函数参考和扩展&#xff1a;Mysql 常用函数和基础查询、 Mysql 官网 Mysql 语法执行顺序如下&#xff0c;一定要清楚&#xff01;&#xff01;&#xff01;运算符相关&#xff0c;可前往 Mysql 基础语法和执行顺序扩展。 (8) select (9) distinct (11)<columns_name…

【力扣热题100】287. 寻找重复数(弗洛伊德的乌龟和兔子方法)

【力扣热题100】287. 寻找重复数 写在最前面理解解决 "寻找重复数" 问题的算法问题描述弗洛伊德的乌龟和兔子方法为什么这个方法有效&#xff1f; 代码复杂度 总结回顾 写在最前面 刷一道力扣热题100吧 难度中等 https://leetcode.cn/problems/find-the-duplicate-…

HTML 常用表单元素使用以及注解

一、表单的用途 HTML 表单用于收集用户的输入信息。 HTML 表单表示文档中的一个区域&#xff0c;此区域包含交互控件&#xff0c;将用户收集到的信息发送到 Web 服务器。 一个表单有三个基本组成部分&#xff1a; 表单标签&#xff1a;这包含了处理表单数据所用的URL以及数据…

vue使用$router.push()或者$router.go(),重新返回上一页不走生命周期

是因为在App.vue中&#xff0c;vue路由&#xff08;router-view&#xff09;组件使用路由缓存组件(keep-alive)包裹着&#xff0c;导致不重新走生命周期&#xff0c;这样可以提高运行效率&#xff0c;但有时候&#xff0c;我们需要重新加载生命周期刷新数据。 解决方案&#x…

Java Web应用小案例 - 实现用户登录功能

文章目录 一、使用纯JSP方式实现用户登录功能&#xff08;一&#xff09;项目概述&#xff08;二&#xff09;实现步骤1、创建Web项目2、创建登录页面 二、使用JSPServlet方式实现用户登录功能三、使用JSPServletDB方式实现用户登录功能 一、使用纯JSP方式实现用户登录功能 &a…

ubuntu22.04安装 nvidia-cudnn

nvidia-cudnn 是 NVIDIA CUDA 深度神经网络库&#xff08;CUDA Deep Neural Network library&#xff09;的缩写。这是一个由 NVIDIA 提供的库&#xff0c;用于加速深度学习应用程序。它包含了针对深度神经网络中常用操作&#xff08;如卷积、池化、归一化、激活层等&#xff0…

【工具】机器之间传输文件的常用方式

0、背景 QA的工作工程中,在不同服务器或者本地机器与服务器之间进行文件或目录的上传或者下载是非常普遍的场景,为此本文将常用的好用的工具一并做个总结,大家有其他的利器也欢迎评论区留言。 1、 scp命令 这是平常使用最多的命令,可以在相互连通的服务之间拷贝文件。命…

【Linux】如何清空某个文件的内容

cat /dev/null > file1 清空某个文件的内容使用cat /dev/null > file1&#xff0c;它将 /dev/null 的内容&#xff08;空内容&#xff09;重定向到 file1。 如下所示&#xff0c;file1文件里的内容被清空。 错误写法 错误写法是&#xff1a;cat file1 > /dev/null&…

linuxc语udp发送程序

以下是一个基于UDP通信的C程序&#xff0c;用于发送含有指定格式的数据包。该程序把数据分成若干个包&#xff0c;每个包包含4字节数据包头数据长度数据内容&#xff0c;每个包最大8192字节。 #include <stdio.h> #include <stdlib.h> #include <string.h> …

华为OD机试真题-小明找位置-2023年OD统一考试(C卷)

题目描述&#xff1a; 小朋友出操&#xff0c;按学号从小到大排成一列&#xff1b;小明来迟了&#xff0c;请你给小明出个主意&#xff0c;让他尽快找到他应该排的位置。 算法复杂度要求不高于nLog(n)&#xff1b;学号为整数类型&#xff0c;队列规模<10000&#xff1b; 输…

持续集成交付CICD:CentOS 7 安装 Nexus 3.63

目录 一、实验 1.CentOS 7 安装Nexus3.63 二、问题 1.安装Nexus报错 2.Nexus启动停止相关命令 一、实验 1.CentOS 7 安装Nexus3.63 &#xff08;1&#xff09;当前操作系统版本&JDK版本 cat /etc/redhat-releasejava -version&#xff08;2&#xff09;下载Nexus新…

蓝桥杯 java基础

1. AB问题I 时间限制&#xff1a;2.000S 空间限制&#xff1a;32MB 题目描述 你的任务是计算ab。 输入描述 输入包含一系列的a和b对&#xff0c;通过空格隔开。一对a和b占一行。 输出描述 对于输入的每对a和b&#xff0c;你需要依次输出a、b的和。 如对于输入中的第二…

面试经典150题(5-7)

leetcode 150道题 计划花两个月时候刷完&#xff0c;今天&#xff08;第二天&#xff09;完成了两道(5-7)150&#xff1a; (169. 多数元素) 题目描述&#xff1a; 给定一个大小为 n 的数组 nums &#xff0c;返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋…

int 和 Integer 有什么区别,还有 Integer 缓存的实现

✨前言✨   Java本文主要介绍Java int 和 Integer的区别以及Integer 缓存的实现 &#x1f352;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f352;博主将持续更新学习记录收获&#xff0c;友友们有任何问题可以在评论区留言 文章目…

用C++实现队列顺序结构的基本操作

//队列顺序结构的基本操作&#xff1a; #include"stdio.h" #include"String" #define QueueSize 100 typedef char ElemType; typedef struct { ElemType data[QueueSize]; /*保存队中元素*/int front,rear; /*队头和队尾指针*/ } SqQueue; void Init…

使用STM32定时器实现精确的时间测量和延时

✅作者简介&#xff1a;热爱科研的嵌入式开发者&#xff0c;修心和技术同步精进&#xff0c; 代码获取、问题探讨及文章转载可私信。 ☁ 愿你的生命中有够多的云翳,来造就一个美丽的黄昏。 &#x1f34e;获取更多嵌入式资料可点击链接进群领取&#xff0c;谢谢支持&#xff01;…

stm32Flash操作

//G0B0 flash大小 0x08000000-0x0807FFFF 512K(0400 1K)//2k 1页 //初始化标记数据地址 放最前面 脱机烧写器可擦除掉 #define CONST_INITMARKDATA_ADDRESS (0x0807D000UL) //2k 1页 //射频数据地址 #define CONST_FREQDATA_ADDRESS (0x0807F000UL) //2…

大数据技术4:Lambda和Kappa架构区别

前言&#xff1a;在大数据处理领域&#xff0c;两种突出的数据架构已成为处理大量数据的流行选择&#xff1a;Lambda 架构和 Kappa 架构。这些架构为实时处理和批处理提供了强大的技术解决方案&#xff0c;使组织能够从其数据中获得有价值的见解。随着互联网时代来临&#xff0…

Python VSCode 配置固定的脚本入口

Python VSCode 配置固定的脚本入口 打开或者新建一个启动配置 选择 .vscode目录下 launch.json文件 将 “program”: “${file}” 替换成 “program”: “mian.py”, //完成你自己的入口.py文件名即可 json启动配置文件 {// Use IntelliSense to learn about possible attrib…