zookeeper

一、概述

1、是什么

  zookeeper是一个分布式的,开放源码的分布式应用程序的协调服务,是google的Chubby一个开源的实现,是一个高可用、强一致性的数据库。

2、干什么

  集群管理,统一命名服务,分布式配置管理,分布式消息队列,分布式锁,分布式通知协调
  实例:对于zk+dubbo结合使用而言,zk是服务注册中心,dubbo的服务提供方和消费方都在zk注册,这样服务消费方就可以找到服务提供方。zk自带watcher监听,可以保证服务上线下线变更及时通知。

3、构成

  zookeeper的实现是由 client 、server 构成
  zk通常由 2n+1 台 server 组成,只要有 n+1 台 server 可用,整个系统保持可用
这里写图片描述

4、有哪些角色
角色描述
领导者 (leader)负责进行投票的发起和决议,更新系统状态
学习者-跟随者 (follower)follower用于接收客户端请求并向客户端返回结果,在选主过程中参与投票
学习者-观察者(observer)observer可以接收客户端连接,将写请求转发给leader节点,但observer不参加投票过程,只同步leader的状态,observer的目的是为了扩展系统,提高读取速度
客户端(client)请求发起方

二、为什么

1、相关现状

(1)大部分分布式应用需要一个主控、协调器或控制器来管理物理分布的子进程(如资源、任务分配等)
(2)目前,大部分应用需要开发私有的协调程序,缺乏一个通用的机制
(3)协调程序的反复编写浪费,且难以形成通用、伸缩性好的协调器
(4)Keepalived监控节点不好管理、采用优先级监控(没有协同工作、功能单一)、可扩展性差

2、zookeeper优点
特点说明
最终一致性为客户端展示同一个视图,这是zookeeper里面一个非常重要的功能
可靠性如果消息被一台服务器接受,那么它将被所有的服务器接受
实时性Zookeeper不能保证两个客户端能同时得到刚更新的数据,如果需要最新数据,应该在读数据之前调用sync()接口
独立性各个Client之间互不干预
原子性更新只能成功或者失败,没有中间状态
顺序性所有Server,同一消息发布顺序一致

三、怎么用

1、工作原理

(1)每个Server在内存中存储了一份数据
(2)Zookeeper启动时,将从实例中选举一个Leader(Paxos协议)
(3)Leader负责处理数据更新等操作
(4)一个更新操作成功,当且仅当大多数Server在内存中成功修改数据

2、核心

  Zookeeper 的核心是原子广播,这个机制保证了各个 Server 之间的同步,实现这个机制的协议叫做 Zab 协议。Zab 协议有两种模式,它们分别是恢复模式(选主)和广播模式(同步)。当服务启动或者在领导者崩溃后,Zab就进入了恢复模式,当领与者被选举出来,且大多数 Server 完成了和 leader 的状态同步以后,恢复模式就结束了。状态同步保证了 leader 和 Server 具有相同的系统状态。
  为了保证事务的顺序一致性,zookeeper 采用了递增的事务id号(zxid)来标识事务。所有的提议(proposal)都在被提出的时候加上了 zxid 。实现中 zxid 是一个64位的字,它高32位是epoch用来标识 leader 关系是否改变,每次一个 leader 被选出来,它都会有一个新的 epoch,标识当前属于那个 leader 的统治时期。低32位用于递增计数。
  每个server在工作过程中有三种状态:
1、LOOKING:当前 Server 不知道 leader是谁,正在搜寻
2、LEADING:当前 Server 即为选举出来的 leader
3、FOLLOWING:leader 已经选举出来,当前 Server 与之同步

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值