Zookeeper概论(对zookeeper的概论、原理、架构等的理解)
Zookeeper概论(对zookeeper的概论、原理、架构等的理解)
一、概论
Zookeeper是一个分布式的、开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是hadoop和hbase
的重要组件。它是一个为分布式应用提供一致性服务的软件。提供的功能包括:配置维护、名字服务、分布式服务、组服务等。
Zookeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
Zookeeper包含一个简单的原语集,提供Java和C的接口。
Zookeeper代码版本中,提供了分布式独享锁、选举、队列的接口,代码在Zookeeper-3.4.3\src\recipes。其中分布锁和队列
有Java和C两个版本,选举只有Java版本。
二、原理
Zookeeper是以Fast Paxos算法为基础的,paxos算法存活在活锁的问题,即当有多个proposer交错提交时,有可能互相排
斥导致没有一个proposer能提交成功,而Fast Paxos 做了一些优化,通过选举产生一个leader,只有leader才能提交proposer,
具体算法可见Fast Paxos。因此,要想弄懂Zookeeper首先要对Fast Paxos有所了解。
Zookeeper的基本运转流程:
1、选举Leader。
2、同步数据。
3、选举Leader过程中算法有很多,但要达到的选举标准是一致的。
4、Leader要具有最高的zxid。
5、集群中大多数的机器得到响应并follow选出的Leader。
三、架构:

四、功能
Zookeeper分布式服务框架是Apache Hadoop的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问
题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。
五、数据结构

Zookeeper这种数据结构有如下特点:
1、每个子项目如NameService都被称作为znode,这个znode是它所在的路径唯一标识,如Server1这个znode的标识
为/NameService/Server1。
2、znode可以有子节点目录,并且每个znode可以存储数据,注意EPHEMERAL类型的目录节点不能有子节点目录。
3、znode是有版本的,每个znode中存储的数据可以有多个版本,也就是一个访问路径中可以存储多份数据。
4、znode可以是临时节点,一旦这个znode的客户端和服务器失去联系,这个znode也将自动删除,Zookeeper的客户端和
服务器通信采用长连接方式,每个客户端和服务器通过心跳来保持连接,这个连接状态称为session,如果znode是临时节点,这个
session失效,znode也就删除了。
5、znode的目录名可以自动编号,如App1已经存在,再创建的话,将会自动命名为App2。
6、znode可以被监控,包括这个目录节点中存储的数据的修改,子节点目录的变化等,一旦变化可以通知设置监控的客户端,
这个是Zookeeper的核心特性,Zookeeper的很多功能都是基于这个特性实现的。
Zookeeper概论(对zookeeper的概论、原理、架构等的理解)的更多相关文章
- Zookeeper原理架构与搭建
一.Zookeeper到底是什么!? 学一个东西,不搞明白他是什么东西,哪还有心情学啊!! 首先,Zookeeper是Apache的一个java项目,属于Hadoop系统,扮演管理员的角色. 然后看到 ...
- ZooKeeper教程资源收集(简介/原理/示例/解决方案)
菩提树下的杨过: ZooKeeper 笔记(1) 安装部署及hello world ZooKeeper 笔记(2) 监听数据变化 ZooKeeper 笔记(3) 实战应用之[统一配置管理] ZooKe ...
- 【Java面试】Zookeeper中的Watch机制的原理?
一个工作了7年的粉丝,遇到了一个Zookeeper的问题. 因为接触过Zookeeper这个技术,不知道该怎么回答. 我说一个工作了7年的程序员,没有接触过主流技术,这不正常. 于是我问了他工资以后, ...
- Zookeeper 1、Zookeeper 定义与工作原理
1.什么是Zookeeper » Zookeeper 是 Google 的 Chubby一个开源的实现,是 Hadoop 的分布式协调服务 » 它包含一个简单的原语集,分布式应用程序可以基于它实现同步 ...
- Zookeeper的Watcher 机制的实现原理
基于 Java API 初探 zookeeper 的使用: 先来简单看一下API的使用: public class ConnectionDemo { public static void main(S ...
- 【Zookeeper系列】ZooKeeper一致性原理(转)
原文链接:https://www.cnblogs.com/sunddenly/p/4138580.html 一.ZooKeeper 的实现 1.1 ZooKeeper处理单点故障 我们知道可以通过Zo ...
- zookeeper 负载均衡 核心机制-实现原理 包含ZAB协议(滴滴,阿里面试)
面试也经常问kafka的原理,以及zookeeper与kafka原理的区别:kafka 数据一致性-leader,follower机制与zookeeper的区别: zookeeper是如何实现负载均衡 ...
- 启动Dubbo项目注册Zookeeper时提示zookeeper not connected异常原理解析
文/朱季谦 遇到一个很诡异的问题,我在启动多个配置相同zookeeper的Dubbo项目时,其他项目都是正常启动,唯独有一个项目在启动过程中,Dubbo注册zookeeper协议时,竟然出现了这样的异 ...
- Zookeeper【概述、安装、原理、使用】
目录 第1章 Zookeeper入门 1.1 概述 1.2 特点 1.3 数据结构 1.4应用场景 第2章 Zookeep安装 2.1 下载地址 2.2 本地模式安装 1. 安装前准备 2. 配置修改 ...
随机推荐
- 机器学习相关的Awesome系列
Index Awesome 备注 1 Awesome Machine Learning 机器学习资源大全中文版 2 Awesome Artificial Intelligence 人工智能 3 Awe ...
- asp.net mvc 防止开放重定向
/// <summary> /// 防止开发重定向,篡改returnurl /// </summary> /// <param name="request&qu ...
- HDU 2669
题目大意: 已知线性方程ax+by=1; 输入a, b的值, 要求输出整数解x, y的值(输出x, y的最小整数解), 若没有解, 输出"sorry". 分析: 求线性方程的解 ...
- 设置table距离顶部位置
//UIEdgeInsetsMake———— UIEdgeInsets insets = {top, left, bottom, right} self.tableView.contentInset ...
- Qt中文乱码解决思路
最近项目中遇到不少的Qt中文乱码的问题,主要原因是客户的需求比较多,Qt版本有用4的版本的也有用5的版本,并且还有windows与linux跨平台的需求.经常出现个问题是windows的解决了,源代码 ...
- jquery ajax详解
详细参数列表url:发送请求的连接地址type:请求方式 get:获取 post:发送 put和deletetimeout:设置请求超时时间async:默认true为异步请求,false同步请求锁住浏 ...
- jenkins环境搭建
1.官网下载jenkins的安装包,直接解压安装.jenkins-1.641.zip 2.修改jenkins端口,启动jenkins服务.E:\Program Files (x86)\Jenkins\ ...
- SRS文档
1什么是用例? 在介始用例方法之前,我们首先来看一下传统的需求表述方式-"软件需求规约"(Software Requirement Specification).传统的软件需求规约 ...
- 表前缀sw_时
操作效果一样
- Reverse-Daily(3)-DotNetCrackMe1
链接:http://pan.baidu.com/s/1cuYQhK 密码:zjx6 这是一个用c#编写的程序 用dotpeek或者ILSPY反编译可以看到程序结构,主体比较简单,是一个des加密 ...