写点什么

白手起家之注册中心 zookeeper

用户头像
卢卡多多
关注
发布于: 2 小时前
白手起家之注册中心zookeeper

zookeeper 的定位

Zookeeper 是 apache Zookeeper 开源的项目,


Zookeeper 的主要作用


对于微服务分布式的协调管理,元数据的管理,Master 选举, 实际使用场景下,主要是三类项目

1.zookeeper 的适用方向

① 后端以 Java 为主的电商类管理系统


Zookeeper 主要作用于 分布式锁,注册中心 ,这里 Zookeeper 主要保持 CAP 理论中的 CP(一致性和分区容错性),也就是说 Zookeeper 保证的是强一致性


②对于大数据存储,数据管理,主从数据切换等系统


这里我们熟知的 Kafla,canal 等在使用 Zookeeper 的元数据管理 ,通过 master 选举出具体的主从,ZAB 原子一致性协议,


③大型互联网公司,自研的分布式组件


一般以 zookeeper 为原型, zookeeper 已经被大规模的工业级适用于主要的分布式系统,做元数据管理,以及注册中心,一般使用于 dubbo+Zookeeper 做一个基本的微服务架构来实现基本的数据调用


小总结:


zookeeper 分布式协调系统, 封装了分布式架构中所有的核心和主流的需求和功能;


分布式锁, 元数据管理, master 选举, 分布式协调和通知

zookeeper 的基本特性:


​ 在了解 zookeeper 的基本架构之前,我们来了解一下,zookeeper 为什么可以实现分布式系统的协调通知, 元数据管理等;


​ 熟悉 zookeeper 技术栈的都比较了解,它本身是处于通知协调机制,数据同步方面有很强的处理能力,这也就是为什么很多自研的框架,底层都用 zookeeper 的原因,好了,废话不多说,我们开干;


背景:


集群环境下,zookeeper 集群搭建了 3 台物理机器;


1.顺序一致性


 多个请求,不管是读取数据的,还是说写入数据的,都要按照顺序执行; zookeeper内部要处理的请求,leader角色会给每一个请求分配一个全局唯一且自增的ZxID,用于请求数据  //这个唯一的全局ID就保证了顺序一致性这里的zxid,先简单了解,作为一个请求的排列序号,后面会重点讲解的
复制代码


2.原子性


要么全部机器都成功,要么全部机器都不成功,在同步数据操作时  //保证每次同步操作结果都是一致的
复制代码


3.高可用性


集群化部署,避免宕机,
如果宕机,也可自己选举leader,重新提供服务 //从恢复模式到消息广播模式
复制代码


4.数据一致性:


 集群情况下,每台机器上的数据都是一致的,但是如果说,在数据同步的时候,宕机了, 其他机器会自动将数据保存到磁盘日志中,等到leader角色提交之后,才会同步到znode节点中,真正实现数据在每台机器都是一致的  //这里说的数据一致性,是强一致性,也是zookeeper的核心的特性,根据分布式系统保持的CAP理论,只能支持CP, //其中C-consistency ,一致性对于,数据的强一致性,p-为系统的分区容错性  A-高可用性,其eureka就是支持AP特性
复制代码


5.高性能性


高性能,这里提出一个zookeeper的数据模型,znode节点//znode节点,基于纯内存的,速度很快,树形结构,类似于Linux的文件系统,每个节点都有数据    存储的数据,已经可以处理的能力也就比较强,后面会仔细讲的,接着看下去吧
复制代码



小总结:


基于 zookeeper 的集群架构的特点图:



发布于: 2 小时前阅读数: 3
用户头像

卢卡多多

关注

努力寻找生活答案的旅途者 2020.04.12 加入

公众号:卢卡多多,欢迎一起交流学习

评论

发布
暂无评论
白手起家之注册中心zookeeper