Zookeeper(一) 基础原理 数据一致性 在HBase和Kafka中的作用 配置奇数台原因

1.定义

它是一个分布式服务框架,是一个为分布式应用提供一致性协调服务的中间件,它主要是用来解决分布式应用中经常遇到的一些数据管理问题。
 
(1)应用场景
Zookeeper 从设计模式角度来看,是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper 就将负责通知已经在 Zookeeper 上注册的那些观察者做出相应的反应,从而实现集群中类似 Master/Slave 管理模式。
 
  • 统一命名服务(Name Service)
  • 配置管理(Configuration Management)
  • 集群管理(Group Membership)
  • 共享锁(Locks)/同步锁
 
zookeeper = 节点命名空间 + 监听通知机制
 
(2)节点命名空间
  Zookeeper提供一个多层级的节点命名空间(节点称为znode)。与文件系统不同的是,这些节点都可以设置关联的数据。Zookeeper为了保证高吞吐和低延迟,在内存中维护了这个树状的目录结构,这种特性使得Zookeeper不能用于存放大量的数据,每个节点的存放数据上限为1M
 
(3)监听通知机制
  client端会对某个znode建立一个watcher事件,当该znode发生变化时,这些client会收到zk的通知,然后client可以根据znode变化来做出业务上的改变等。
 

2.作用

  • Master选举机制, Master节点down掉后, 从节点就会接手工作, 并且保证这个节点是唯一的,从而保证集群是高可用的
  • 统一配置文件管理, 即只需要部署一台服务器, 则可以把相同的配置文件同步更新到其他所有服务器, 此操作在云计算中用的特别多(例如修改了redis统一配置)
  • 数据发布与订阅, 类似消息队列MQ
  • 分布式锁,分布式环境中不同进程之间争夺资源,类似于多进程中的锁
  • 集群管理, 保证集群中数据的强一致性
 

3.Zookeeper在HBase中的作用

  • 通过zookeeper的Master选举机制,保证HBase的集群总有一个HMaster在运行
  • 存储HBase的元数据信息
  • 存储所有HRegion的寻址入口
  • 实时监控ResionServer的健康状态,并通知给HMaster
 

4.Zookeeper在Kafka中的作用

  • broker都会在Zookeeper注册
  • topic的分区信息以及与broker的对应关系
 

5.zookeeper如何保证数据一致性

  Paxos(帕克索斯) 算法就是用来解决这类问题的,多台服务器通过内部的投票表决机制决定一个数据的更新与写入。
  应用程序连接到任意一台服务器后提起状态修改请求,该服务器会将这个请求发送给集群中其他服务器进行表决。如果某个服务器同时收到了另一个应用程序同样的修改请求,它可能会拒绝该服务器的表决,并且自己也发起一个同样的表决请求,那么其他服务器就会根据时间戳和服务器排序规则进行表决。表决结果会发送给其他所有服务器,最终发起表决的服务器,会根据收到的表决结果决定该修改请求是否可以执行,从而在收到请求的时候就保证了数据的一致性。
 
 

6.配置奇数台原因

ZooKeeper集群最好使用奇数个服务器,即2n+1个服务器,这样整个Zookeeper集群最多可以容忍n台服务器宕机而保证依然提供服务。

 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值