zookeeper原理

[转帖]【ZOOKEEPER系列】Paxos、Raft、ZAB

点点圈 提交于 2019-12-05 16:27:32
【ZOOKEEPER系列】Paxos、Raft、ZAB 2018-07-11 12:09:49 wangzy-nice 阅读数 2428 更多 分类专栏: zookeeper 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/qq_34370153/article/details/80998622 ZOOKEEPER系列 Paxos、Raft、ZAB Paxos算法 莱斯利·兰伯特(Leslie Lamport)这位大牛在1990年提出的一种基于消息传递且具有高度容错特性的一致性算法。如果你不知道这个人,那么如果你发表过Paper,就一定用过Latex,也是这位大牛的创作, 具体背景直接维基百科就可以,不深入讲解,直接讲Paxos算法。 分布式系统对fault tolorence 的一般解决方案是state machine replication。准确的描述Paxos应该是state machine replication的共识(consensus)算法。 Leslie Lamport写过一篇Paxos made simple的paper,没有一个公式,没有一个证明,这篇文章显然要比Leslie Lamport之前的关于Paxos的论文更加容易理解,但是

ZooKeeper

筅森魡賤 提交于 2019-12-05 08:45:39
一、简介 Zookeeper是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务——分布式同步(Distributed Synchronization)、命名服务(Naming Service)、集群维护(Group Maintenance)等,简化分布式应用协调及其管理的难度,提供高性能的分布式服务 1、zk原理 1、数据结构类似于xml的树状结构 2、每个节点称为znode,包含节点名称(唯一),节点数据,子节点 2、znode类型   临时节点:连接关闭后失效   临时顺序节点:   持久节点:节点信息持久化   持久顺序节点: 二、zk环境搭建 1、windows环境 1、启动   问题:点击zkServer.cmd后一闪而过   原因:conf目录下不存在zoo.cfg文件,将实例文件改名      3.5.5版本启动一闪而过问题,除了上述那个,需下载带bin的tar包,否则只是源码 2、客户端连接   点击zkCli.cmd 3、客户端常用命令   ls /:查看根节点信息   create /mytest znode_content:创建mytest节点,节点内容为znode_content ,默认创建的是持久节点   set /mytest test_content_other:修改mytest节点内容 来源: https://www

zookeeper原理学习

孤街浪徒 提交于 2019-12-05 04:24:27
zookeeper: 1、 定义: zookeeper是一个分布式、开源的分布式应用程序协调服务。 2、 zookeeper的信息记录方式: 1). zk采用树形结构目录结构记录信息。树的深度没有限制(但实际中,不可能建立很深的树结构),每一个节点称为node 2). 每个znode都有一个名称,为了避免出现字符集编码问题,不要使用中文作为znode的名称,另外,同一个znode下的子级znode名称不允许重复 3). 一个znode允许存储最多1MB大小的数据信息 4). znode根据创建性质的不一样,可分为四种行为类型不一样的znode。它们是PERSISTENT、PERSISTENT_SEQUENTIAL、EPHEMARAL、EPHEMARAL_SEQUENTIAL 5). PERSISTENT:持久化节点,创建这个节点的客户端在与zk服务的连接断开后,这个节点也不会被删除(除非使用api强制删除) 6). PERSISTENT_SEQUENTIAL:持久化顺序编号节点,当客户端请求创建这个节点A后,zk会根据parent-znode的zxid的状态,为这个A节点编写一个全目录唯一的编号(这个编号只会一直增长)。当客户端与zk服务的连接断开后,这个节点也不会被删除 7). EPHEMARAL:临时目录节点,创建这个节点的客户端在与zk服务的连接断开后,这个节点会被删除 8)

Zookeeper原理介绍

喜你入骨 提交于 2019-12-05 04:23:32
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。Zookeeper是hadoop的一个子项目,其发展历程无需赘述。在分布式应用中,由于工程师不能很好地使用锁机制,以及基于消息的协调机制不适合在某些应用中使用,因此需要有一种可靠的、可扩展的、分布式的、可配置的协调机制来统一系统的状态。Zookeeper的目的就在于此。本文简单分析zookeeper的工作原理,对于如何使用zookeeper不是本文讨论的重点。 1 Zookeeper的基本概念 1.1 角色 Zookeeper中的角色主要有以下三类,如下表所示: 系统模型如图所示: 1.2 设计目的 1.最终一致性:client不论连接到哪个Server,展示给它都是同一个视图,这是zookeeper最重要的性能。 2 .可靠性:具有简单、健壮、良好的性能,如果消息m被到一台服务器接受,那么它将被所有的服务器接受。 3 .实时性:Zookeeper保证客户端将在一个时间间隔范围内获得服务器的更新信息,或者服务器失效的信息。但由于网络延时等原因,Zookeeper不能保证两个客户端能同时得到刚更新的数据,如果需要最新数据,应该在读数据之前调用sync()接口。 4 .等待无关(wait-free)

1、Zookeeper原理、结构——Kuring 经典

房东的猫 提交于 2019-12-05 04:20:29
1、Zookeeper原理、结构——Kuring 经典 本文会从zookeeper的基础原理出发,整个服务的组成与实现,对于相关技术会有说明,为提升阅读效率不做过多解释。 zookeeper组成: 注:观察者(类似redis的备份)只接受INFORM消息,不包括提议proposal,可用于不同数据中心的数据交换,简单的说,主要用于读取,转发请求给Leader,且不处理事务,不会增加高可用性。 Zookeeper作为 分布式文件同步监听系统。 Zookeeper的核心是 原子广播(Zab),这个机制保证了各个Server之间的同步。 实现这个机制的协议叫做Zab协议。Zab协议有两种模式,它们分别是恢复模式(选主)和广播模式(同步)。当服务启动或者在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数Server完成了和leader的状态同步以后,恢复模式就结束了。状态同步保证了leader和Server具有相同的系统状态。 为了保证事务的顺序一致性, zookeeper采用了递增的事务id号(zxid)来标识事务 。 一、请求、事务、标识符 zookeeper 服务器会在本地处理只读请求,exists、getData、getChildren。 更改change类型请求,create、delete、setData,会发送给群首leader,由群首 执行相应的请求

zookeeper原理 使用场景

不羁岁月 提交于 2019-12-05 04:20:01
ZooKeeper是 Hadoop Ecosystem中非常重要的组件,它的主要功能是为分布式系统提供一致性协调(Coordination)服务,与之对应的Google的类似服务叫Chubby。今天这篇文章分为三个部分来介绍ZooKeeper,第一部分介绍ZooKeeper的基本原理,第二部分介绍ZooKeeper提供的Client API的使用,第三部分介绍一些ZooKeeper典型的应用场景。 ZooKeeper基本原理 1. 数据模型 如上图所示,ZooKeeper数据模型的结构与Unix文件系统很类似,整体上可以看作是一棵树,每个节点称做一个ZNode。每个ZNode都可以通过其路径唯一标识,比如上图中第三层的第一个ZNode, 它的路径是/app1/c1。在每个ZNode上可存储少量数据(默认是1M, 可以通过配置修改, 通常不建议在ZNode上存储大量的数据),这个特性非常有用,在后面的典型应用场景中会介绍到。另外,每个ZNode上还存储了其Acl信息,这里需要注意,虽说ZNode的树形结构跟Unix文件系统很类似,但是其Acl与Unix文件系统是完全不同的,每个ZNode的Acl的独立的,子结点不会继承父结点的,关于ZooKeeper中的Acl可以参考之前写过的一篇文章《 说说Zookeeper中的ACL 》。 2.重要概念 2.1 ZNode 前文已介绍了ZNode

Zookeeper工作原理(详细)

独自空忆成欢 提交于 2019-12-05 04:19:36
转: http://www.cnblogs.com/raphael5200/p/5285583.html 1、Zookeeper的角色   » 领导者(leader),负责进行投票的发起和决议,更新系统状态   » 学习者(learner),包括跟随者(follower)和观察者(observer),follower用于接受客户端请求并想客户端返回结果,在选主过程中参与投票   » Observer可以接受客户端连接,将写请求转发给leader,但observer不参加投票过程,只同步leader的状态,observer的目的是为了扩展系统,提高读取速度   » 客户端(client),请求发起方               • Zookeeper的核心是原子广播,这个机制保证了各个Server之间的同步。实现这个机制的协议叫做Zab协    议。Zab协议有两种模式,它们分别是恢复模式(选主)和广播模式(同步)。当服务启动或者在领导者    崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数Server完成了和leader的状态同步以后    ,恢复模式就结束了。状态同步保证了leader和Server具有相同的系统状态。   • 为了保证事务的顺序一致性,zookeeper采用了递增的事务id号(zxid)来标识事务。所有的提议(    proposal

ZooKeeper原理及使用

让人想犯罪 __ 提交于 2019-12-05 04:19:24
ZooKeeper是Hadoop Ecosystem中非常重要的组件,它的主要功能是为分布式系统提供一致性协调(Coordination)服务,与之对应的Google的类似服务叫Chubby。今天这篇文章分为三个部分来介绍ZooKeeper,第一部分介绍ZooKeeper的基本原理,第二部分介绍ZooKeeper提供的Client API的使用,第三部分介绍一些ZooKeeper典型的应用场景。 ZooKeeper基本原理 1. 数据模型 如上图所示,ZooKeeper数据模型的结构与Unix文件系统很类似,整体上可以看作是一棵树,每个节点称做一个ZNode。每个ZNode都可以通过其路径唯一标识,比如上图中第三层的第一个ZNode, 它的路径是/app1/c1。在每个ZNode上可存储少量数据(默认是1M, 可以通过配置修改, 通常不建议在ZNode上存储大量的数据),这个特性非常有用,在后面的典型应用场景中会介绍到。另外,每个ZNode上还存储了其Acl信息,这里需要注意,虽说ZNode的树形结构跟Unix文件系统很类似,但是其Acl与Unix文件系统是完全不同的,每个ZNode的Acl的独立的,子结点不会继承父结点的,关于ZooKeeper中的Acl可以参考之前写过的一篇文章《 说说Zookeeper中的ACL 》。 2.重要概念 2.1 ZNode 前文已介绍了ZNode,

Zookeeper原理架构

跟風遠走 提交于 2019-12-05 04:19:08
本文纯属个人笔记,通俗易懂,转载请附上原文链接!部分资料摘自网络,如有雷同,纯属巧合! 更多资料见个人博客 https://www.rabbitai.cn Zookeeper到底是什么!? 学一个东西,不搞明白他是什么东西,哪还有心情学啊!! 首先,Zookeeper是Apache的一个java项目,属于Hadoop系统,扮演管理员的角色。 然后看到官网那些专有名词,实在理解不了。 在Zookeeper的官网上有这么一句话:ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services. 那么我们来仔细研究一下这个东西吧! ###Zookeeper能干嘛?! ####1. 配置管理 这个好理解。分布式系统都有好多机器,比如我在搭建hadoop的HDFS的时候,需要在一个主机器上(Master节点)配置好HDFS需要的各种配置文件,然后通过scp命令把这些配置文件拷贝到其他节点上,这样各个机器拿到的配置信息是一致的,才能成功运行起来HDFS服务。Zookeeper提供了这样的一种服务:一种集中管理配置的方法,我们在这个集中的地方修改了配置

ZooKeeper学习(一)认识ZooKeeper

≯℡__Kan透↙ 提交于 2019-12-05 02:27:40
一、 什么是ZooKeeper ZooKeeper主要 服务于分布式系统 ,可以用ZooKeeper来做:统一配置管理、统一命名服务、分布式锁、集群管理。 使用分布式系统就无法避免对节点管理的问题(需要实时感知节点的状态、对节点进行统一管理等等),而由于这些问题处理起来可能相对麻烦和提高了系统的复杂性,ZooKeeper作为一个能够 通用 解决这些问题的中间件就应运而生了。 二、 ZooKeeper的数据结构   ZooKeeper和Redis一样,也是C/S结构(分成客户端和服务端)。   ZooKeeper的数据结构,跟Unix文件系统非常类似,可以看做是一颗树,每个节点叫做ZNode。每一个节点可以通过路径来标识,结构图如下:   如图所示,Znode分为两种类型: 短暂/临时(Ephemeral) :当客户端和服务端断开连接后,所创建的Znode(节点)会 自动删除 持久(Persistent) :当客户端和服务端断开连接后,所创建的Znode(节点) 不会删除 三、 ZooKeeper的监听器   前面了解了,我们可以通过ZooKeeper去通用的实现很多功能,那么实现原理是怎么样的呢?ZooKeeper配合了监听器,才能够做那么多事的。   常见的监听场景有以下两项: 监听Znode节点的 数据变化 监听子节点的 增减变化   通过 监听+Znode节点(持久/短暂