分布式架构 CAP 与 BASE 理论 一致性协议 初识 Zookeeper Zookeeper 介绍 Zookeeper 工作机制 Zookeeper 特点 Zookeeper 数据结构 Zookeeper 应用场景 统一命名服务 统一配置管理 统一集群管理 服务上下线 软负载均衡 Zookeeper 内部原理 选举机制 节点类型 监听器原理 写数据流程 自我小结 分布式架构 CAP 与 BASE 理论 cap 定理: 一个分布式系统不可能同时满足一致性 (C:Consistency).可用性…
ZooKeeper 笔记(1) 安装部署及hello world   先给一堆学习文档,方便以后查看 官网文档地址大全: OverView(概述) http://zookeeper.apache.org/doc/r3.4.6/zookeeperOver.html Getting Started(开始入门) http://zookeeper.apache.org/doc/r3.4.6/zookeeperStarted.html Tutorial(教程) http://zookeeper.apach…
$ZOOKEEPER_HOME/bin下的zkCli.sh进入命令行界面,使用help可查看支持的所有命令: 一.节点相关操作 create [-s] [-e] path data acl create用于创建新的节点: create [-s] [-e] path data acl 使用create创建一个节点: 创建节点时的一些选项详解: -s和-e都是可选的,用来指定节点的类型,节点的类型有四种: 临时节点 临时顺序节点 永久节点 永久顺序节点 -s用于指定创建的节点是否是顺序的,顺序节点就…
title: zookeeper笔记(一) zookeeper 安装简记 解压文件 $ tar -zxvf zookeeper-3.4.10.tar.gz -C 安装目录 创建软连接(进入安装目录) $ ln -s zookeeper-3.4.10/ zookeeper 配置环境变量 $ export ZK_HOME=安装目录/zookeeper $ export PATH=$PATH:$ZK_HOME/bin source $ source ~/.bashrc 创建所需目录 $ mkdir -…
title: zookeeper笔记(二) zookeeper ALC权限控制 getAcl path 可以查看某个node的权限 设置权限: 2. world方式 setAcl <path> world:anyone:<acl> # 例如 setAcl /node1 world:anyone:cdrwa ip方式 setAcl <path> ip:<ip>:<acl> #例如 设置IP:192.168.100.1 拥有所有权限, ip可用通配符…
Zookeeper到底能干什么? 1.配置管理:这个好理解.分布式系统都有好多机器,Zookeeper提供了这样的一种服务:一种集中管理配置的方法,我们在这个集中的地方修改了配置,所有对这个配置感兴趣的都可以获得变更.这样就省去手动拷贝配置了,还保证了可靠和一致性. 在分布式系统中,常会遇到这样的场景: 某个Job的很多个实例在运行,它们在运行时大多数配置项是相同的,如果想要统一改某个配置,一个个实例去改,是比较低效,也是比较容易出错的方式.通过ZooKeeper可以很好的解决这样的问题,下面的…
目前分布式锁,比较成熟.主流的方案有基于redis及基于zookeeper的二种方案. 大体来讲,基于redis的分布式锁核心指令为SETNX,即如果目标key存在,写入缓存失败返回0,反之如果目标key不存在,写入缓存成功返回1,通过区分这二个不同的返回值,可以认为SETNX成功即为获得了锁. redis分布式锁,看上去很简单,但其实要考虑周全,并不容易,网上有一篇文章讨论得很详细:http://blog.csdn.net/ugg/article/details/41894947/,有兴趣的可…
本文主要学习ZooKeeper的体系结构.节点类型.节点监听.常用命令等基础知识,最后还学习了ZooKeeper的高可用集群的搭建与测试.希望能给想快速掌握ZooKeeper的同学有所帮助. ZooKeeper简介与安装 ZooKeeper是一个分布式协调服务框架,通常用于解决分布式项目中遇到的一些管理协调的问题,如统一命名服务.分布式配置管理,分布式锁.集群节点状态协调等等. 下载 到http://apache.fayea.com/zookeeper/下载zookeeper-3.4.9,ftp…
先给一堆学习文档,方便以后查看 官网文档地址大全: OverView(概述) http://zookeeper.apache.org/doc/r3.4.6/zookeeperOver.html Getting Started(开始入门) http://zookeeper.apache.org/doc/r3.4.6/zookeeperStarted.html Tutorial(教程) http://zookeeper.apache.org/doc/r3.4.6/zookeeperTutorial.…
zk做为分布式架构中的重要中间件,通常会在上面以节点的方式存储一些关键信息,默认情况下,所有应用都可以读写任何节点,在复杂的应用中,这不太安全,ZK通过ACL机制来解决访问权限问题,详见官网文档:http://zookeeper.apache.org/doc/r3.4.6/zookeeperProgrammers.html#sc_ZooKeeperAccessControl 总体来说,ZK的节点有5种操作权限: CREATE.READ.WRITE.DELETE.ADMIN 也就是 增.删.改.查…
关键节点的单点故障(Single Point of Failure)在大型的架构中,往往是致命的.比如:SOA架构中,服务注册中心(Server Register)统一调度所有服务,如果这个节点挂了,基本上整个SOA架构也就崩溃了,另外hadoop 1.x/2.x中的namenode节点,这是hdfs的核心节点,如果namenode宕掉,hdfs也就废了.ZooKeeper的出现,很好的解决了这一难题,其核心原理如下: 1. 关键节点的运行实例(或服务器),可以跑多个,这些实例中的数据完全是相同…
大型应用通常会按业务拆分成一个个业务子系统,这些大大小小的子应用,往往会使用一些公用的资源,比如:需要文件上传.下载时,各子应用都会访问公用的Ftp服务器.如果把Ftp Server的连接IP.端口号.用户名.密码等信息,配置在各子应用中,然后这些子应用再部署到服务器集群中的N台Server上,突然有一天,Ftp服务器要换IP或端口号,那么问题来了?不要紧张,不是问 挖掘机哪家强:),而是如何快速的把这一堆已经在线上运行的子应用,通通换掉相应的配置,而且还不能停机. 要解决这个问题,首先要从思路…
http://www.biaodianfu.com/zookeeper.html ======= ---- zookeeper这种数据结构有如下这些特点: 1,每个子目录如NameService都被作为znode,这个znode是被她所在的路径唯一标示, 如果Server1这个zndoe的标示为/NameService/Server1 2,znode可以有字节点目录,每个znode可以存储数据,注意ephemeral类型的目录节点不能有字节点目录 3,znode是有版本的,每个znode中存储的…
Zookeeper在Dubbo中的应用 Dubbo的架构 节点角色说明: Provider: 暴露服务的服务提供方.Consumer: 调用远程服务的服务消费方.Registry: 服务注册与发现的注册中心.Monitor: 统计服务的调用次调和调用时间的监控中心.Container: 服务运行容器.调用关系说明: 0. 服务容器负责启动,加载,运行服务提供者.1. 服务提供者在启动时,向注册中心注册自己提供的服务.2. 服务消费者在启动时,向注册中心订阅自己所需的服务.3. 注册中心返回服务提…
zookeeper用于分布式配置管理,读写锁等等..后续补充.…
ZooKeeper是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务——分布式同步(Distributed Synchronization).命名服务(Naming Service).集群维护(Group Maintenance)等,简化分布式应用协调及其管理的难度,提供高性能的分布式服务.ZooKeeper本身可以以Standalone模式安装运 行,不过它的长处在于通过分布式ZooKeeper集群(一个Leader,多个Follower),基于一定的策略来保证…
Spark集群基于ZooKeeper的搭建:http://www.dataguru.cn/thread-333245-1-1.html Spark需要修改的地方: 进入spark的配置目录,参照下面代码修改spark-env.sh export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node4:2181,node3:2181 -Dspark.deploy…
目录 · ZooKeeper安装 · 分布式一致性理论 · 一致性级别 · 集中式系统 · 分布式系统 · ACID特性 · CAP理论 · BASE理论 · 一致性协议 · ZooKeeper概况 · ZooKeeper API · 命令 · Java API · Curator · ZooKeeper应用场景 · 数据发布/订阅 · 配置管理 · 命名服务 · 集群管理 · Master选举 · 分布式锁 · 分布式队列 · Hadoop · HBase · Kafka ZooKeeper安…
zookeeper中,znode的ACL是没有继承关系的,是独立控制的,zookeeper的acl可以从3个维度理解,一是scheme,二是user,三是permission,通常表示为scheme:id:permissions scheme: world: 它下面只有一个 id, 叫 anyone, world:anyone 代表任何人,zookeeper 中对所有人有权限的结点就是属于 world:anyone 的 auth: 它不需要 id, 只要是通过 authentication 的…
1.zookeeper为分布式应用设计的分布式开源协调服务 2.分布式应用可以建立在同步配置管理,选举,分布式锁,分组和命名等服务的更高级别的实现基础上 3.znode维护数据,ACL时间戳等交换版本号等数据结构,它通过这些数据结构的管理让缓存生效并且令协调更新 4.每当znode中的数据更新后它维护的版本号将增加,这非常类似数据库中计数器时间戳的操作方式 5.znode具有原子操作特点:命名空间中,每一个znode的数据将被原子地读写,读操作将读取与znode相关的所有数据,写操作将替换所有的…
zookeeper的getData(),getChildren()和exists()方法都可以注册watcher监听.而监听有以下几个特性: 一次性触发(one-time trigger) 当数据改变的时候,那么一个Watch事件会产生并且被发送到客户端中.但是客户端只会收到一次这样的通知,如果以后这个数据再次发生改变的时候,之前设置Watch的客户端将不会再次收到改变的通知,因为Watch机制规定了它是一个一次性的触发器. 当设置监视的数据发生改变时,该监视事件会被发送到客户端,例如,如果客户…
ZooKeeper对Watch提供了什么保障 对于watch,ZooKeeper提供了这些保障: Watch与其他事件.其他watch以及异步回复都是有序的. ZooKeeper客户端库保证所有事件都会按顺序分发. 客户端会保障它在看到相应的znode的新数据之前接收到watch事件.//这保证了在process()再次利用zk client访问时数据是存在的 从ZooKeeper接收到的watch事件顺序一定和ZooKeeper服务所看到的事件顺序是一致的. 关于Watch的一些值得注意的事情…
leader:提供读写服务,负责投票的发起和决议,更新系统状态 follower:为客户提供读服务,如果写服务则转发给leader,选举过程参与投票 observer:为客户端提供读服务,如果是写服务则转发给leader,不参与选举过程的投票和过半写成功策略,在不影响写性能的情况下提升集群读性能 client:连接zookeeper服务器的使用者,请求的发起者 tickTime=2000 initLimit=5 syncLimit=2 dataDir=/Users/apple/zookeeper…
应用场景:数据发布,订阅:分布式应用配置项:分布式计数器:统一命名服务:状态同步服务:集群管理:Master选举:分布式锁:定时任务争夺:分布式队列:分布式协调通知 特点:顺序一致性,原子性,单一视图,可靠性,实时性 设计目标: 简单数据模型,zookeeper使得分布式程序可以通过一个共享换树形结构的名字空间协调,组成树形结构的数据节点被称作ZNode,它们关系像文件系统的目录结构一样 构建集群,一般3-5台机器可以构建一个zookeeper集群,只要确保一半以上的服务器能够正常工作,整个机器…
我们知道Zookeeper的一致性是解决分布式事务的. 那么分布式事务代表的是强一致性. 强一致性解决的代表有以下协议(注意这几个协议跟zookeeper是没任何关系的,这是分布式的理论基础): 1. 2PC(二阶提交),顾名思义它分成两个阶段,先由一方进行提议(propose)并收集其他节点的反馈(vote),再根据反馈决定提交(commit)或中止(abort)事务.我们将提议的节点称为协调者(coordinator),其他参与决议节点称为参与者(participants, 或cohorts…
分布式系统八大谬论: 1.网络相当可靠 2.延迟为0 3.传输带宽是无限的 4.网络相当安全. 5.拓扑结构不会改变 6.必须要有一名管理员 7.传输成本为0 8.网络同质化. 分布式最常出现的问题: 1.通信异常.表现为网络通信成功,失败,超时这三种. 2.节点故障.表现为宕机,OOM 因此我们不要秀技术而分布式.特殊场景特殊使用. Zookeeper设计目的1.最终一致性:client不论连接到哪个Server,展示给它都是同一个视图,这是zookeeper最重要的性能. 2.可靠性:具有简…
下载zookeeper安装包 去Zookeeper官网,下载地址http://zookeeper.apache.org/releases.html,建议下载稳定版本,我下载的是zookeeper-3.4.6.tar.gz,解压到合适的目录,就可以进行配置和启动. 为了操作简便,配置环境变量:#Set ZooKeeper Enviromentexport ZK_HOME=/data/zookeeper-3.4.6export PATH=$PATH:$ZK_HOME/bin:$ZK_HOME/con…
Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目, 它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置项的管理等. paxos算法 Zookeeper 采用paxos一致性算法保证了数据的一致性,Paxos算法是一种基于消息传递且具有高度容错特性的一致性算法. 具体的算法不多作介绍,可以查看维基百科Paxos算法. 想要更好的理解Paxos算法,可以关注知乎的这个问题 如何浅显易懂地解说 Paxos 的算…
为什么需要Zookeeper Zookeeper是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它实现诸如数据发布/订阅.负载均衡.命名服务.分布式协调/通知.集群管理.Master选举.分布式锁和分布式队列等功能.在解决分布式数据一致性上,Zookeeper已经成为了目前唯一一个比较成熟的方案. Zookeeper致力于提供一个高性能.高可用,且具有严格的顺序访问控制能力的分布式协调服务. 设计目标 简单的数据结构冗余,可以构建集群有序访问高性能 系统角色 Zookeeper没有…
一.分布式锁概述 Java中基于AQS框架提供了一系列的锁,但是当需要在集群中的多台机器上互斥执行一段代码或使用资源时Java提供的这种单机锁就没了用武之地,此时需要使用分布式锁协调它们.分布式锁有很多实现,基于redis.基于数据库等等,本次讨论的是基于zk实现分布式锁. 免责声明:下面的分布式锁是本人学习zk时根据其特性摸索出来的实现,并不代表业内权威做法,仅作为不同的思想碰撞出灵感的小火花之用,如有错误之处还望多多指教. 二.不可重入的分布式锁(有羊群效应,不公平锁) 首先比较容易想到的就…