Zookeeper认识

概念

Zookeeper是针对大型分布式系统的高可靠的协调系统。

分布式系统 -- 请查看:[[ http://www.gameyeah.net/blog/hadoop.html | hadoop分布式应用]]

分布式应用存在问题

1、"部分失败" -- 网络不稳定原因,存在两个节点之间的住处互通问题

2、分布式事务,共享锁的实,处理共享资源问题

3、需要解决消息同步,负载,状态检测等高可用

zookeeper作用

1、实现很多协调数据结构和协议的操作,例如:分布式队列、分布式锁以及一组同级节点的“领导者选举”算法

2、避免分布式系统的单点故障的问题

3、提供共享存储库,减少分布式共享资源的开发工作 -- 分布式锁实现

4、多种主流应用基于zookeeper解决分布式的多方面问题

zookeeper应用场景

先看一下基本的结成结构吧:

数据发布与订阅(配置中心)

作用: 快速得知各机器的数据与状态变化信息

过程:

1)客户端告诉各服务端分别监听是否变化,即new watcher

2)watcher有变化推送数据给客户端(发布)

3)客户端得知,主动向各个zookeeper服务器请求数据

这里的客户端: 可以理解为集群中的某个服务端

负载均衡

可以用于实现负载均衡,达到动态选取可用服务器的作用,用于解决nginx集群的一些问题

(能提供所需服务的服务器列表,然后自己根据负载均衡算法,从中选取[选举]一台服务器进行连接)

1)维护成本

2)单点负载过高,切换困难

命名服务(Naming Service)

1、提供完整命名规则

2、树形的名称结构

3、内置的功能,数据存储于内容,高吞吐和低延迟

分布式通知/协调

集群管理与Master选举

  • 左图是传统的主备关注

1) slave主动监测master是否正常在服务

2)这是单向判断,如果网络出现问题

3)错误判断导致出现:主主关系、切换不及时等问题

  • 右图是zookeeper选举

1)各台服务器互相监听

2)筛选可用机器列表

3)根据选举算法得到master机器

4)宕机时,广播消息,再次进行选举

分布式锁

锁 -- 多个进程对一些资源产生竞争关系。

分布式 -- 运行在各处,但是有数据交流的工作方式。

总结:在分布式系统中处理共享锁,保证数据一致性时使用到, Zookeeper 作为一个分布式的服务框架,可以解决分布式集群中应用系统的一致性问题;维护和监控你存储的数据的状态变化;处理共享锁的问题。

分布式队列

Zookeeper 可以处理两种类型的队列:

  • 当一个队列的成员都聚齐时,这个队列才可用,否则一直等待所有成员到达,这种是同步队列。

  • 队列按照 FIFO 方式进行入队和出队操作,例如实现生产者和消费者模型。