分布式协调服务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

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

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

工作流程

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

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

步骤

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

(2)server把写请求转给leader

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

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

原文发布于微信公众号 - 性能与架构(yogoup)

原文发表时间:2016-02-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏零基础使用Django2.0.1打造在线教育网站

零基础使用Django2.0.1打造在线教育网站(十二):错误信息提示

努力与运动兼备~~~有任何问题可以加我好友或者关注微信公众号,欢迎交流,我们一起进步!

20310
来自专栏web编程技术分享

第八节 - 部门管理模块(编写PHP程序)

336100
来自专栏积累沉淀

hbase集群安装(3)-安转Hadoop

安转Hadoop 我的安装路径是根目录下的software 把Hadoop压缩包解压到software目录下 ? 解压后查看目录 ? 要修改的配置文件有四个 ?...

252100
来自专栏逆向技术

逆向实战第一讲,寻找OllyDbg调试工具的Bug并修复

           逆向实战第一讲,寻找OllyDbg调试工具的Bug并修复 首先我们要知道这个OD的Bug是什么. 我们调试一个UNICODE的窗口,看下其...

25970
来自专栏电光石火

windows下安装redis

1、redis简介 redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、lis...

21170
来自专栏极客编程

node.js + mongodb 原

想写博客很长时间了,因为一直身患懒癌,所以一直拖到了现在。markdown的语法也是刚刚学,试验一下效果 好了不说了,直接上干货了。 -------------...

15940
来自专栏Rgc

redis权限认证及登录

62510
来自专栏电光石火

windows下安装redis

1、redis简介 redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、l...

25490
来自专栏LhWorld哥陪你聊算法

【常见错误】--Nltk使用错误

AttributeError: module 'nltk' has no attribute 'word_tokenize'

32620
来自专栏Python与爬虫

爬虫入门到精通-环境的搭建

本文章属于爬虫入门到精通系统教程第三讲 IDE的安装 IDE我用的是VS code,也用过pycharm(但是电脑配置不行,比较卡) VScode安装教程...

49570

扫码关注云+社区

领取腾讯云代金券