分布式协调服务ZooKeeper工作原理

分布式协调服务ZooKeeper工作原理

分布式协调服务ZooKeeper工作原理
原创 2016-02-19 杜亦舒 性能与架构
大数据处理框架Hadoop、Redis分布式服务Codis、淘宝的分布式消息中间件MetaMQ ……
 
他们都使用ZooKeeper做为基础部件,可以看出ZooKeeper的强大
 
ZooKeeper是什么
 
ZooKeeper(ZK)是一个分布式开源协调服务框架,是Google的Chubby一个开源的实现,是hadoop的一个子项目
 
主要用来解决分布式系统的一致性问题,封装好了复杂易出错的关键服务,通过简单的接口为外部提供高性能、稳定的服务
 
实际应用场景包括:统一命名服务、分布式配置管理、集群管理、分布式锁、分布式队列 ……
 
整体结构
 
对于外部,ZK是个整体,通过API与外部交流
 
ZK的内部,是个服务器集群,各服务器内数据完全相同,其中有一个server为leader,用来为其他server校准数据
 
client连接到ZK后,ZK会根据各个server的压力情况,把这个连接分配给合适的server,对client透明,client只知道自己已经和ZK连接了,不知道具体是哪个server
 
 
 
每个服务器中,是一个分层的文件系统目录树结构,节点中可以保存数据
 
目录树和各节点数据都在内存中,所以运行很快,为了数据的安全,会备份到磁盘
 
 
工作流程
 
 
读操作非常简单,因为各个server的数据完全一致,client发送读请求时,与此client相连的server直接从自己内存获取数据返回给client,非常快
 
 
 
 
写操作会影响目录树结构和节点的数据内容,涉及到各个server间的数据一致性,所以不像读操作那么简单
 
步骤
 
(1)client发送写请求给与其相连的server
 
(2)server把写请求转给leader
 
(3)leader执行写操作,然后通知其他server:数据有变化,你们马上更新
 
(4)各server更新数据后,通知client写操作完成
 
posted @ 2018-08-15 19:32  micwin  阅读(423)  评论(0编辑  收藏  举报