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. 配置修改 ...
随机推荐
- python学习——将while循环改成函数
笨办法学python第33节 这一节主要学习内容是while循环,记录内容为将while改成函数,首先源代码如下: i = 0 numbers = [] while i < 6: print & ...
- 查询数据库表大小sql
SELECT a.name, b.rowsFROM sysobjects AS a INNER JOIN sysindexes AS b ON a.id = b.idWHERE (a.type = ' ...
- HDU 1405
题意: 输入一个数n,输出它的素因子与这个素因子出现的次数. 分析: 用欧拉函数,变下形就好了,不再过多解释. 代码如下: #include <iostream> #include < ...
- java多线程之 基本概念
一.线程的五种状态 1. 新建状态(New) : 线程对象被创建后,就进入了新建状态.例如,Thread thread = new Thread().2. 就绪状态(Runnable) ...
- dedecms qq咨询平均分配
qq后台页: qq_admin.php <style type="text/css"> <!-- * {margin:0; padding:0;} .wrap { ...
- 也来说说C/C++里的volatile关键字
去年年底的样子,何登成写了一篇关于C/C++ volatile关键字的深度剖析blog(C/C++ Volatile关键词深度剖析).全文深入分析了volatile关键字的三个特性.这里不想就已有内容 ...
- SSZIPArchive的相关用法截图
- 通过JavaScript改变HTML样式
语法:Object.style.property=new style; 基本属性表如下: 示例: 改变 <p> 元素的样式,将颜色改为红色,字号改为20,背景颜色改为蓝: <p id ...
- System.Web.Script.Serialization引用找不到的问题
之前在项目中要使用JavascriptSerializer这个类,需要引入System.Web.Script.Serialization命名空间,但是在添加引用中找不到这个命名空间,后来才得知Syst ...
- Qt中sizeof
class a{ int d; // virtual void ssss(); }; qDebug() <<sizeof(a) << sizeof(int) << ...