初识ZooKeeper
最近在看Apache下的一个开源项目ZooKeeper(http://zookeeper.apache.org/doc/trunk/),用百度百科介绍的来说,Zookeeper是一个针对大型分布式系统的可靠协调系统,其提供的功能主要包括:naming,configuration
management,synchronization,and group services。
Zookeeper是google的chubby的一个开源实现,是高效和可靠的协同工作系统,能够用来进行leader选举,配置信息维护等,它提供了分布式独享锁、选举和队列的接口,有Java和C两个版本。
来简单说说原理:Zookeeper是以Fast Paxos算法为基础的,paxos算法存在活锁问题,即当用多个proposer交错提交时,有可能出现相互排斥导致没有一个proposer能够提交成功的情况,而Fast Poxos则做了优化,通过选举产生一个leader,只有leader才能提交proposal。
先来说一下最基本的paxos算法,其实算法的核心就两个阶段,作者Lamport在论文用直白的英语给出了很好的解释:
Zookeeper的一下特点:
1、在ZooKeeper中,znode是一个跟Unix文件系统路径相似的结点,并且具有唯一的路径标识。
2、Znode可以有子znode,并且可以存放数据,但是EPHEMERAL类型的节点不能有子节点。
3、对于EPHEMERAL类型的znode节点,一旦创建这个znode的客户端与服务器失去联系,这个znode也会自动删除,ZooKeeper的客户端和服务器通信采用长连接的方式,每个客户端和服务器通过心跳来保持这个连接,这个连接状态被称为session。
4、Znode中的数据可以有多个版本。
5、Znode可以被监控,下次更新这个被监控的znode的时候,服务器就会通知客户端这个znode发生了变化,但是只会通知一次,再次更新时就不会通知了,除非再次设置监控。这个功能是zookeeper对于应用最重要的特性,通过这个特性可以实现的功能包括配置的集中管理,集群管理以及分布式锁等等。
初识ZooKeeper的更多相关文章
- 初识zookeeper(1)之zookeeper的安装及配置
初识zookeeper(一)之zookeeper的安装及配置 1.简要介绍 zookeeper是一个分布式的应用程序协调服务,是Hadoop和Hbase的重要组件,是一个树型的目录服务,支持变更推送. ...
- 初识zookeeper以及安装和集群部署
初识zookeeper以及安装和集群部署 一.Zookeeper单体版安装 在安装zookeeper之前要先安装jdk环境,具体在linux环境安装jdk1.8请参照linux笔记. ...
- 初识zookeeper(二)之与Dubbo-admin关联
1.简介:dubbo-admin,即dubbo管理控制台,管理控制台为内部裁剪版本,开源部分主要包含:路由规则,动态配置,服务降级,访问控制,权重调整,负载均衡,等管理功能,主要是用于Dubbo服务的 ...
- 初识zookeeper(一)之zookeeper的安装及配置
1.简要介绍 zookeeper是一个分布式的应用程序协调服务,是Hadoop和Hbase的重要组件,是一个树型的目录服务,支持变更推送.除此还可以用作dubbo服务的注册中心. 2.安装 2.1 下 ...
- Zookeeper笔记(一)初识Zookeeper
为什么需要Zookeeper Zookeeper是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它实现诸如数据发布/订阅.负载均衡.命名服务.分布式协调/通知.集群管理.Master选举 ...
- zookeeper(1)初识zookeeper
一.zookeeper的安装 1.下载zookeeper(当然在安装zookeeper之前得先装好jdk,这里就不说了),版本自己随便选一个(后面我再说版本的问题),点击这里下载. 2.然后在usr下 ...
- 初识ZooKeeper与集群搭建实例
原文链接:http://www.linuxidc.com/Linux/2015-02/114230.htm zookeeper是什么 Zookeeper,一种分布式应用的协作服务,是Google的Ch ...
- 读<分布式一致性原理>初识zookeeper
zookeeper是什么 zookeeper是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它实现诸如:数据发布/订阅,负载均衡,命名服务,分布式协调/通知 ,集群管理,Master选举 ...
- 初识 Zookeeper
云计算越来越流行的今天,单一机器处理能力已经不能满足我们的需求,不得不采用大量的服务集群.服务集群对外提供服务的过程中,有很多的配置需要随时更新,服务间需要协调工作,这些信息如何推送到各个节点?并且保 ...
随机推荐
- 表格不被内容撑大,且超出的内容变为省略号(css)
今天写代码,发现表格会被内容撑大,影响到了网页的整体布局. 百度了一解决方法,下面是代码和我的备注 table{table-layout: fixed;} //固定表格 table td ...
- C#之数组篇
大杂烩 一.数组初始化 1.一维数组 String[] str = new String[3] { "1","2","3"}; ...
- Java创建对象的几种方法
有时候,也可能碰到这样面试题,如: Java创建对象有哪几种方法? 除了new之外,java创建对象还有哪几种方式? 本文结合例子,给出几种Java创建对象的方法,Here we go~~~~ 使用n ...
- 面试题目——《CC150》高等难题
面试题18.1:编写一个函数,将两个数字相加.不得使用+或其他算数运算符. package cc150.high; public class Add { public static void main ...
- HTML补充
补充一: 让DIV 自动居中 width:980px;margin:0 auto; 补充二: 内敛标签: inline #块级标签转换成内联标签. block #变成块级. inline-block ...
- ubuntu12.04server下red5-1.0.0RC1的部署
一.搭建环境 Linux版本:ubuntu12.04sever 64位 Java 版本:Java 1.7(jdk+jre) Red5 版本:red5-1.0.0-RC1 二.安装JDK 下载jdk ...
- eclipse version
查看Eclipse的版本号: 1. 找到eclipse安装目录 2. 进入readme文件夹,打开readme_eclipse.html 3. readme_eclipse.html呈现的第二行即数字 ...
- Mac Pro 利用PHP导出SVN新增或修改过的文件
先前在 Windows 操作系统下,习惯用 TortoiseSVN 导出新增或修改过的文件([相当实用]如何让TortoiseSVN导出新增或修改过的文件 ),最近换成了 Mac Pro 笔记本电脑, ...
- JS实现图片预加载无需等待
网站开发时经常需要在某个页面需要实现对大量图片的浏览;用javascript来实现一个图片浏览器,让用户无需等待过长的时间就能看到其他图片 网站开发时经常需要在某个页面需要实现对大量图片的浏览,如果考 ...
- centos6.5 lamp 环境 使用yum安装方法
从网上找了一些 最后整理了下 1.安装Apache yum -y install httpd # 开机自启动 chkconfig httpd on # 启动httpd 服务 service httpd ...