美文网首页开源精选Java学习笔记分布式
【转】分布式协调服务ZooKeeper工作原理

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

作者: 程序熊大 | 来源:发表于2016-02-19 17:36 被阅读1230次

    申明:本文转自分布式协调服务ZooKeeper工作原理,来自yogoup公众号。解决了我关于zookeeper这个系统的认识,zookeeper主要解决分布式系统的一致性问题,实际应用场景包括:统一命名服务、分布式配置管理、集群管理、分布式锁、分布式队列等。在微服务架构中,也可以使用zookeeper作为服务发现的中间件。

    大数据处理框架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。

    zookeeper架构

    每个服务器中,是一个分层的文件系统目录树结构,节点中可以保存数据

    目录树和各节点数据都在内存中,所以运行很快,为了数据的安全,会备份到磁盘。

    单台服务器的数据存储结构

    工作流程

    读操作非常简单,因为各个server的数据完全一致,client发送读请求时,与此client相连的server直接从自己内存获取数据返回给client,非常快。

    读的流程

    写操作会影响目录树结构和节点的数据内容,涉及到各个server间的数据一致性,所以不像读操作那么简单

    步骤

    (1)client发送写请求给与其相连的server

    (2)server把写请求转给leader

    (3)leader执行写操作,然后通知其他server:数据有变化,你们马上更新

    (4)各server更新数据后,通知client写操作完成

    写的流程

    相关文章

      网友评论

      • 熊坝坝:这里面和大白话讲的不错,很容易理解

      本文标题:【转】分布式协调服务ZooKeeper工作原理

      本文链接:https://www.haomeiwen.com/subject/mrkvkttx.html