ZooKeeper
一、概念 |
定义:分布式应用程序协调服务。 [分布式系统的可靠协调系统] 功能:为分布式应用提供一致性服务。如配置维护、域名服务、分布式同步、组服务。 代码:分布式独享锁、选举、队列的interface。 目的:封装复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。, 原理:ZooKeeper以Fast Paxos算法为基础。Paxo算法存在活锁的问题,即当有多个proposer交错提交时,有可能相互排斥,导致没有一个proposer能提交成功,Fast Paxos做了优化,通过选举产生一个leader,只有leader才能提交proposer。 基本流程: 1. 选举Leader 2. 同步数据 3. 选举Leader过程算法很多,但达到选举标准一致 4. Leader享有最高的执行ID,类似root权限。 5. 集群大多数的机器得到响应并接受选出的Leader。 |
二、特点 |
Zookeeper中,znode可以存储或获取数据(类似Unix文件系统路径相似的节点)。如果在创建znode时Flag设置为EPHEMERAL,那么当创建这个znode的节点和Zookeeper失去连接后,这个znode将不再存在Zookeeper里。 ##Zookeeper使用Watcher察觉事件信息。当客户端接受到事件信息(比如连接超时、节点数据改变、子节点改变),可以调用相应的行为来改变。 ##Zookeeper的Wiki页面展示如何使用Zookeeper处理事件通知、队列、优先队列、锁、共享锁、可撤销共享锁、两阶段提交。 ## 应用场景: ## 20个服务器: 每个负责总索引中的一部分任务 [15个提供服务,5个正在生成索引] ## 1个总服务器:发出调用请求并合并结果集 ## 1个备用总服务器:总服务器宕机时,替换 ## 1个web的cgi:向总服务器发出请求 ## 这20个服务器让正在提供服务的服务器,停止提供服务,开始生成索引的服务器已经把索引生成完成,就可以继续提供服务了。 ## 使用Zookeeper:①保证总服务器自动感知有多少提供搜索引擎的服务器,并②向这些服务器发出搜索请求, ③当总服务器宕机时自动启用备用的总服务器 |
三、案例 |
客户端:连接集群—创建节点\删除节点—获取节点值—获取子节点。 |