分布式协调服务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
每个服务器中,是一个分层的文件系统目录树结构,节点中可以保存数据
目录树和各节点数据都在内存中,所以运行很快,为了数据的安全,会备份到磁盘
工作流程
读
读操作非常简单,因为各个server的数据完全一致,client发送读请求时,与此client相连的server直接从自己内存获取数据返回给client,非常快
写
写操作会影响目录树结构和节点的数据内容,涉及到各个server间的数据一致性,所以不像读操作那么简单
步骤
(1)client发送写请求给与其相连的server
(2)server把写请求转给leader
(3)leader执行写操作,然后通知其他server:数据有变化,你们马上更新
(4)各server更新数据后,通知client写操作完成
点击 阅读原文 查看 文章列表
人赞赏
分布式协调服务ZooKeeper工作原理的更多相关文章
- 分布式协调服务Zookeeper扫盲篇
分布式协调服务Zookeeper扫盲篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 身为运维工程师对kubernetes(k8s)可能比较熟,那么etcd(go语言实现)分布式协 ...
- 分布式协调服务Zookeeper集群搭建
分布式协调服务Zookeeper集群搭建 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.安装jdk环境 1>.操作环境 [root@node101.yinzhengjie ...
- 分布式协调服务Zookeeper集群之ACL篇
分布式协调服务Zookeeper集群之ACL篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.zookeeper ACL相关知识概览 1>.zookeeper官方文档(h ...
- 分布式协调服务Zookeeper集群监控JMX和ZkWeb应用对比
分布式协调服务Zookeeper集群监控JMX和ZkWeb应用对比 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. JMX是用来远程监控Java应用的框架,这个也可以用来监控其他的J ...
- 搞懂分布式技术3:初探分布式协调服务zookeeper
搞懂分布式技术3:初探分布式协调服务zookeeper 1.Zookeepr是什么 Zookeeper是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它实现诸如数据发布/订阅,负载均衡, ...
- 中小型研发团队架构实践八:分布式协调服务ZooKeeper
一.ZooKeeper 是什么 Apache ZooKeeper 由 Apache Hadoop 的子项目发展而来,于 2010 年 11 月正式成为了 Apache 的顶级项目. ZooKeeper ...
- 中小型研发团队架构实践:分布式协调服务ZooKeeper
一.ZooKeeper 是什么 Apache ZooKeeper 由 Apache Hadoop 的子项目发展而来,于 2010 年 11 月正式成为了 Apache 的顶级项目. 相关厂商内容 优秀 ...
- 1.9 分布式协调服务-Zookeeper(一)
前言 分布式环境的特点 分布性 并发性 程序运行过程中,并发性操作是很常见的.比如同一个分布式系统中的多个节点,同时访问一个共享资源.数据库.分布式存储 无序性 进程之间的消息通信,会出现顺序不一致问 ...
- 分布式协调服务-Zookeeper
什么是 zookeeper? Zookeeper 是google的chubby一个开源实现,是hadoop的分布式协调服务 它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名 ...
随机推荐
- CentOS更新Python版本,同时修复yum不能使用的问题
转自:Li_Hanx博客 遇到问题,需要更新python,网上找了好多都不能顺利更新,找到这位大佬的这篇博客,写的非常好,分享给大家. 发现一个新办法,那就是直接安装另一个版本的Python,比如Py ...
- VUE2.0学习总结
摘要: 年后公司项目开始上vue2.0,自己对学习进行了总结,希望对大家有帮助! VUE2.0学习 vue介绍 vue是什么? https://vuefe.cn/guide vue也是一个数据驱动框架 ...
- nodesj中 中间件express-session的理解
1.为什么使用session? session运行在服务器端,当客户端第一次访问服务器时,可以将客户的登录信息保存. 当客户访问其他页面时,可以判断客户的登录状态,做出提示,相当于登录拦截. sess ...
- RRGGBBAA或者RRGGBB转换成rgba()
//十六进制颜色值的正则表达式 var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/; /*16进制颜色转为RGB格式*/ var colorRgb = fun ...
- 二十四种设计模式:代理模式(Proxy Pattern)
代理模式(Proxy Pattern) 介绍为其他对象提供一个代理以控制对这个对象的访问. 示例有一个Message实体类,某对象对它的操作有Insert()和Get()方法,用一个代理来控制对这个对 ...
- Hadoop 添加删除Slave
Hadoop 添加删除Slave @(Hadoop) 在hdfs-site.xml文件中添加如下配置: <property> <name>dfs.hosts</name& ...
- js 在表单提交前进行操作
最近在写页面的时候,需要手动写一些在表单进行提交前的验证操作,正好看到了2种阻止表单提交的方法,可以进行一些逻辑处理 方法一:使用return false 原生js写法: <form id=&q ...
- 【实践】js实现windows系统日历
思路:1.定义好每一个月份的日期天数 2.获取当前的系统日期初始化数据 3.输出日历 2.1.先获取当前月的第一天是星期几(这一点与日历的排版至关重要!) 2.2.获取当前月的天数 ...
- subline 配置,本地项目代码下断点来调试远程项目
参考: https://my.oschina.net/ptk/blog/299464 1. 文件 tts.sublime-project 的配置如下: { "folders": [ ...
- Helpers.parallel_bulk in Python not working?
Helpers.parallel_bulk in Python not working? 学习了:https://discuss.elastic.co/t/helpers-parallel-bulk- ...