zoukankan      html  css  js  c++  java
  • 分布式协调服务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写操作完成






    点击 阅读原文 查看 文章列表



  • 相关阅读:
    RMAN动态视图
    无归档模式下的备份
    验证备份集-使用DBVERIFY工具
    手工备份控制文件和参数文件
    针对发起alter tablespace test begin backup 断电情况的处理
    Jenkins一次任务构建中如何处理多个git仓库
    Element-ui Tree组件实现单选
    前端覆盖式发布引发的使用体验提升
    客户端localStorage命名冲突问题
    git 查看和删除分支
  • 原文地址:https://www.cnblogs.com/xmanblue/p/6497589.html
Copyright © 2011-2022 走看看