zookeeper全局数据一致性及其典型应用(发布订阅、命名服务、帮助其他集群选举)
ZooKeeper全局数据一致性:
全局数据一致:集群中每个服务器保存一份相同的数据副本,client 无论连接到哪个服务器,展示的数据都是一致的,这是最重要的特征。
那么zookeeper集群是怎样做到全局数据一致的呢?
- 1,zookeeper集群中有一个leader和多个follower;
- 2,当follower接收到客户端事务性请求(对znode的增删改)的时候,会把该事务请求 转发给leader;
- 3,leader根据某种规则,调度所有同时对某个znode节点进行事务性操作的follower先后顺序;
- 4,一旦客户端通过zk集群中的某一个进行了事务性操作,那么集群中所有的zk都认可这个操作,以保证客户端通过任何zk查询得到的结果是一致的。
ZooKeeper数据的发布与订阅:
首先我们设想一个应用场景:
我们使用dubbo的时候,注册服务提供者的时候就相当于发布,注册服务消费者的时候就相当于订阅。
那么具体是怎么实现的呢?
- 1,启动服务提供者时,把其注册到zk上,相当于我们把这个提供者的信息防止在zk的某个znode节点上;
- 2,启动服务消费者时,把其注册到zk上,相当于去zk指定的节点去拉去提供者信息,并开启针对该节点数据修改的监听;
- 3,当提供者在zk的节点上的数据修改的时候,会触发监听通知给消费者,然后消费者再重新拉去提供者信息,并开启监听。。。
如此便实现了zookeeper的发布与订阅。
ZooKeeper的命名服务:
在分布式系统中,通过使用命名服务,客户端应用能够根据指定名字来获取资源或服务的地址,提供者等信息。被命名的实体通常可以是集群中的机器,提供的服务地址,远程对象等等——这些我们都可以统称他们为名字(Name)。其中较为常见的就是一些分布式服务框架中的服务地址列表。通过调用 ZK 提供的创建节点的 API,能够很容易创建一个全局唯一的 path(znode),这个 path 就可以作为一个名称。
ZooKeeper帮助其他集群选举Master:
zookeeper不仅可以根据自身的选举机制来选举集群中的主从关系,还可以帮助其他应用的集群进行选举。
那么zookeeper是如何实现的呢?
- 1,首先让这个软件集群中的每个软件在启动的时候,都先去zk指定的路径下创建指定的znode节点(非序列化、短暂的);
- 2,集群中的哪个机器创建成功的话,就是当下的Master,其他的都创建不成功之后设置监听(监听指定的znode是否存在),然后安心当slave;
- 3,如果某一刻当前的Master挂掉了,会话结束这个znode也就被删除了,那么其他slave的监听就会触发,然后再次去执行第一步的,创建znode成功的作为新的Master。。
如此便实现了zookeeper帮助其他集群选举。
zookeeper全局数据一致性及其典型应用(发布订阅、命名服务、帮助其他集群选举)的更多相关文章
- 【9】JMicro微服务-发布订阅消息服务
如非授权,禁止用于商业用途,转载请注明出处作者:mynewworldyyl 1. JMicro消息服务目前实现特性 a. JMicro只支持发布订阅消息服务,不支持队列式消息服务: b. 不支持消息持 ...
- 阿里云重磅发布RDS for SQL Server AlwaysOn集群版
2018年双十一刚过,阿里云数据库发布RDS for SQL Server AlwaysOn集群版,这是业界除微软云SQL Database外,首家云计算公司基于SQL Server最新AlwaysO ...
- HUE配置文件hue.ini 的zookeeper模块详解(图文详解)(分HA集群)
不多说,直接上干货! 我的集群机器情况是 bigdatamaster(192.168.80.10).bigdataslave1(192.168.80.11)和bigdataslave2(192.168 ...
- 8.实战交付一套dubbo微服务到k8s集群(1)之Zookeeper部署
1.基础架构 主机名 角色 ip HDSS7-11.host.com K8S代理节点1,zk1 10.4.7.11 HDSS7-12.host.com K8S代理节点2,zk2 10.4.7.12 H ...
- 实战交付一套dubbo微服务到k8s集群(1)之Zookeeper部署
基础架构 主机名 角色 IP地址 mfyxw10.mfyxw.com K8S代理节点1,zk1 192.168.80.10 mfyxw20.mfyxw.com K8S代理节点2,zk2 192.168 ...
- Zookeeper启动和集群选举
1. QuorumPeerMain运行 1)判断是采用单实例模式还是多实例模式启动QuorumPeerMain 2)在多实例模式下,加载启动参数中指定的配置文件 3)启动QuorumPeer publ ...
- Kafka+Zookeeper集群搭建
上次介绍了ES集群搭建的方法,希望能帮助大家,这儿我再接着介绍kafka集群,接着上次搭建的效果. 首先我们来简单了解下什么是kafka和zookeeper? Apache kafka 是一个分布式的 ...
- zookeeper 单机. 集群环境搭建
zookeeper分布式系统中面临的很多问题, 如分布式锁,统一的命名服务,配置中心,集群的管理Leader的选举等 环境准备 分布式系统中各个节点之间通信,Zookeeper保证了这个过程中 数据的 ...
- ZooKeeper的三种典型应用场景
引言 ZooKeeper是中典型的pub/sub模式的分布式数据管理与协调框架,开发人员可以使用它进行分布式数据的发布与订阅.另外,其丰富的数据节点类型可以交叉使用,配合Watcher事件通知机制,可 ...
随机推荐
- 抓https包
一.charles抓https 1.打开charles,打开Help--SSL Proxy--Install Charles Root Certificate,charles安装证书,傻瓜式安装即可 ...
- Java8新特性Optional、接口中的默认方法与静态方法
Optional Optional 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 Optional 可以更好的表达这个概念 ...
- [leetcode]_根据二叉树的先序遍历(后序遍历) + 中序遍历 重建二叉树
题目1:Construct Binary Tree from Preorder and Inorder Traversal 给定一棵二叉树的先序遍历和中序遍历,求重建二叉树. 思路: 1.先序遍历的第 ...
- HohoCoder 1184 : 连通性二·边的双连通分量(+原理证明)
1184 : 连通性二·边的双连通分量 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在基本的网络搭建完成后,学校为了方便管理还需要对所有的服务器进行编组,网络所的老师 ...
- java RE(正则表达式)
验证姓名,邮箱,手机号,密码 import java.util.regex.Pattern; /** * 账户相关属性验证工具 * */ public class AccountValidatorUt ...
- 剑指offer-第六章面试中的各项能力(扑克牌中的顺子)
//扑克牌的顺子 //题目:在一个扑克牌中随机的抽5张牌,看是不是顺子.大小王为0,A为1,J为11,Q为12,K为13.其他数字为自己本身. //思路:大小王可以代表任意一个数字,因此我们在看是不是 ...
- Doxygen详细介绍
1 序言 为代码写注释一直是大多数程序员有些困扰的事情.当前程序员都能接受为了程序的可维护性.可读性编码的同时写注释的说法,但对哪些地方应该写注释,注释如何写,写多少等这些问题,很多程序员仍然没有答案 ...
- IDEA生成serialVersionUID的警告
默认情况下Intellij IDEA是关闭了继承了java.io.Serializable的类生成serialVersionUID的警告.如果需要ide提示生成serialVersionUID,那么需 ...
- OpenCL™ 2.0 – Pipes
copy from http://developer.amd.com/community/blog/2014/10/31/opencl-2-0-pipes/ OpenCL™ 2.0 – Pipes I ...
- layui导航的使用
在项目开发的时候,需要后台的系统好看点,左边的导航需要设计为多级的,而且要点击当前的链接页面,刷新后要实现选中状态 学习源头:http://www.layui.com/doc/element/nav. ...