zookeeper
崔世勋
这个作者很懒,什么都没留下…
展开
-
Zookeeper acl超级用户
总体来说,ZK的节点有5种操作权限:CREATE、READ、WRITE、DELETE、ADMIN也就是增、删、改、查、管理权限,这5种权限简写为crwda。注:delete是指对子节点的删除权限,其它4种权限指对自身节点的操作权限。 Cli命令行下可这样测试:create /test 'test-data' getAcl /test通过getAcl命令可以发现,刚创建的...转载 2017-07-07 09:52:43 · 3394 阅读 · 0 评论 -
org.I0Itec.zkclient.exception.ZkTimeoutException: Unable to connect to zookeeper server within timeo
问题:org.I0Itec.zkclient.exception.ZkTimeoutException: Unable to connect to zookeeper server within timeout当工程启时,抛出错误,由错误看来是zkclient连接不上zookeeper服务器。 最后发现是:工程引用的zookeeper jar包版本不对导致的。 最后欢迎大家访问...原创 2017-09-12 08:58:51 · 11605 阅读 · 0 评论 -
Zookeeper客户端
客户端组成Zookeeper客户端主要由如下核心部件构成:(1)Zookeeper实例,客户端入口(2)ClientWatchManager,客户端Watcher管理器(3)HostProvider,客户端地址列表管理器。(4)ClientCnxn,客户端核心线程,内部包含了SendThread和EventThread两个线程,SendThread为IO线程,主要负责Zooke...转载 2017-09-20 09:31:04 · 426 阅读 · 0 评论 -
Zookeeper会话
会话状态在Zookeeper客户端与服务端与功完成连接创建后,就创建一个会话,Zookeeper会话在整个运行期间的生命周期中,会在不同的会话状态之间切换,这些状态可以分为Connecting connected reconnecting reconnected close等。会话创建1.sessionID,会话ID2. TimeOut,会话超时时间。Zookeeper客户端向服务...转载 2017-09-20 10:50:23 · 442 阅读 · 0 评论 -
Zookeeper系统模型
数据模型Zookeeper的数据节点称为ZNode,ZNode是Zookeeper中数据的最小单元,每个ZNode都可以保存数据,同时还可以挂载子节点,因此构成了一个层次化的命名空间,称为树。在Zookeeper中,事务是指能改变Zookeeper服务器状态的操作,一般包括节点创建与删除,数据节点内容更新和客户端会话创建与失效,对于每个事务请求,Zookeeper都会为其分配一个全局唯一的...转载 2017-09-20 13:35:17 · 322 阅读 · 0 评论 -
Zookeeper序列化及通信协议
juteJute是Zookeeper底层序列化组件。通信协议基于TCP/IP协议,Zookeeper实现了自己的通信协议。1.请求协议 从zookeeper.jute中可知RequestHeader包含了xid和type,xid用于记录客户端请求发起的先后序号,用来确保单个客户端请求的响应顺序,type代表请求的操作类型。不同的请求类型请求体不同。2.响应协议...转载 2017-09-20 14:14:35 · 593 阅读 · 0 评论 -
Zookeeper的Leader选举
概述1.服务器启动时期的Leader选举。若进行Leader选举,则至少需要两台机器,这里选取3台机器组成的服务器集群为例。在集群处理阶段,当有一台服务器Server1启动时,其单独无法进行和完成Leader选举,当第二台服务器Server2启动时,此时两台机器可以相互通信,每台机器都试图找到Leader,于是进入Leader选举过程。(1)每个Server发出一个投票。由于初始情况,...转载 2017-09-21 11:00:12 · 341 阅读 · 0 评论 -
zookeeper 核心思想
核心思路,架构 zookeeper的核心思想是提供一个非锁机制的Wait Free的用于分布式系统同步的核心服务,提供简单的文件创建读写操作接口,其系统核心本身对文件读写并不提供加锁互斥的服务,但是提供基于版本比对的更新操作,客户端可以基于此自己实现加锁逻辑。客户端可以连接任意zookeeper服务节点来读写数据,zookeeper内部会分为Leader和Follower角色。所谓wait...转载 2017-09-26 17:31:07 · 648 阅读 · 0 评论 -
Zookeeper数据与存储
数据与存储1.内存数据Zookeeper的数据模型是树结构,在内存数据库中,存储了整棵树的内容,Zookeeper会定时将这个数据存储到磁盘上。(1)DataTreeDataTree是内存数据存储的核心,是一个树结构,代表了内存中一份完整的数据。DataTree不包含任何与网络、客户端连接及请求处理相关的业务逻辑,是一个独立的组件。(2)DataNodeDataNode是数...转载 2017-09-20 14:30:14 · 926 阅读 · 0 评论 -
Zookeeper请求处理
会话创建请求Zookeeper服务端对会话创建的处理,大体可以分为请求接收、会话创建、预处理、事务处理、事务应用和会话响应。 1.请求接收(1)IO层接收到来自客户端的请求。NIOServerCnxn维护每一个客户端连接,客户端与服务器端的所有通信都是由NIOServerCnxn负责,其负责统一接收来自客户端的所有请求,并将请求内容从底层网络IO中完整地读取出来。(2)判断...转载 2017-09-20 16:31:18 · 748 阅读 · 0 评论 -
Apache Jute
在看ZooKeepr的实现是,发现了有几个包缺失了(e.g. data, proto)。以为是code下载错了,后来发现,其实这些包的code都是由Jute自动生成的。Jute主要用到了JavaCC。以前还总是想着使用Bison和JNI来做一个编译器,最近看了ZooKeeper,才发现,原来java早就有个类似的解析器生成工具了JavaCC, 决定使用它来继续之前的项目。简单梳理一下ZooKeep...转载 2017-09-29 16:25:33 · 2253 阅读 · 0 评论 -
Zookeeper与Paxos
Zookeeper分布式一致性1.顺序一致性:从同一个客户端发起的事务请求,最终将会严格地按照其发起顺序被应用到Zookeeper中去。2.原子性:整个集群要么都成功应用了某个事务,要么都没有应用。3.单一视图:无论客户端连接的是啊个Zookeeper服务器,其看到的服务端数据模型都是一致的。4.可靠性:一旦服务端成功地应用了一个事务,并完成对客户端的响应,那么该事务所引起的服...转载 2017-09-21 13:43:25 · 335 阅读 · 0 评论 -
Zookeeper watcher机制 所涉及的类
Watcher是接口类型,具体的实现类需实现其process方法。 Event是接口类型,Watcher的内部类。 KeeperState是枚举类型,Event的内部类,表示Zookeeper所处的状态。 EventType是枚举类型,Event的内部类。 WatchedEvent表示对Zookeeper上发生变化后的反馈 ClientWatchManager是接口类型,...转载 2017-09-21 14:59:25 · 290 阅读 · 0 评论 -
zkServer.sh 分析
#!/usr/bin/env bash# Licensed to the Apache Software Foundation (ASF) under one or more# contributor license agreements. See the NOTICE file distributed with# this work for additional informatio...原创 2017-09-22 17:10:03 · 903 阅读 · 0 评论 -
zookeeper 源码编译
问题:'<>' operator is not allowed for source level below 1.7这是eclipse的编译环境与项目的要求不对造成的。解决:右键项目--属性--勾选Enable project specific settings--Compiler compliance level--选择1.7--OKorg.apache.zooke...转载 2017-04-07 10:44:58 · 2289 阅读 · 10 评论 -
hbase 伪分布式安装
hbase安装模式介绍1.单机模式(1)不使用hdfs,仅使用本地文件系统。(2)zookeeper与hbase运行在同一个jvm中。2.伪分布式模式(1)所有进程运行在同一个切点上,不同进程运行在不同的jvm当中。3.完全分布式模式(1)进程运行在多个服务器集群中(2)分布式依赖于HDFS系统,因此部署hbase之前一定要有一个正常工作的hdfs集群。 L...转载 2017-11-17 10:02:55 · 425 阅读 · 0 评论 -
zookeeper运维
网络不能在一台物理机器、一个机柜或一个交换机挂掉后影响整个集群,所以节点的网络结构也要考虑。分Group,保护核心Group要确保zookeeper整个集群可靠运行,就是要确保投票集群可靠。那在我们这里,将一个zookeeper集群划分为多个小的Group,我们称Leader+Follower为核心Group,核心Group我们一般是不向外提供服务的,然后我们会根据不同的业务再加一些O...转载 2017-12-21 16:21:25 · 379 阅读 · 0 评论 -
zookeeper服务端
Zookeeper服务器的启动过程,大致可以分为以下五个步骤1.配置文件解析。2.初始化数据管理器。3.初始化网络IO管理器。4.数据恢复。5.对外服务。单机版服务器启动 1.预启动1.1 统一由QuorumPeeroMain作为启动类。无论单机或集群,在zkServer.cmd和zkServer.sh中都配置了QuorumPeerMain作为启动入口类...转载 2017-09-19 16:55:55 · 580 阅读 · 0 评论 -
zookeeper启动选举过程分析
1.startLeaderElection在这个函数中生成选票(myid,zxid,epoch),生成选举算法FastLeaderElection。2. QuorumPeer线程的run方法执行。 updateThreadName更新QuorumPeeer线程名称。 通过jmx注册QuorumBean。 通过选举算法进行选举FastLeaderElection::lookFor...转载 2017-09-26 14:34:59 · 581 阅读 · 0 评论 -
ServercnxnFactory启动
在runFromConfig时,初始化了客户端与服务端的网络通信类ServerCnxnFactory,默认是NIOServerCnxnFactory,另外还有NettyServerCnxnFactory提供Netty通信方式。在启动QuorumPeer时内部会调用之前初始化好ServerCnxnFactory的start函数。 public void start() { ...原创 2017-09-26 11:20:19 · 652 阅读 · 0 评论 -
zookeeper根据用户名密码生成digest
java -cp zookeeper-3.4.6.jar:lib/slf4j-api-1.6.1.jar:lib/slf4j-log4j12-1.6.1.jar:lib/log4j-1.2.16.jar org.apache.zookeeper.server.auth.DigestAuthenticationProvider user:password 最后欢迎大家访问我的个人网站:102...转载 2017-07-05 17:06:36 · 4238 阅读 · 0 评论 -
zookeeper使用acl进行访问控制
Zookeeper不具有znode的拥有者的概念,相反,ACL指定id集以及与之对应的权限。还要注意的是一条ACL仅针对一个特定的节点,不适用于子节点,例如:如果/app只对ip:172.16.16.1可读,而/app/status是对任何人可读,acl不是递归的。ACL是由scheme:expression,perms构成,例如:ip:19.2.0.0./16, READ zoo...转载 2017-07-04 16:59:57 · 2053 阅读 · 0 评论 -
Zookeeper 配置-不安全的选项
forceSync决定了写进去的数据是否应该sync到磁盘,yes或者no。默认值为yes,在数据被sync到磁盘之前,事务对应的ack不会被发送回leader。sync系统调用很昂贵,且是事务处理中耗时最大的步骤。如果设置为no,那么数据是一旦写到操作系统时,事务的ack马上会被发送,通常在数据真正落到磁盘前操作系统会把数据缓存起来。设置为no会提高性能,你是不是当server崩溃或者机器...转载 2017-07-04 16:34:08 · 791 阅读 · 0 评论 -
Zookeeper : session超时设置
(1)tickTime,这是个时间单位定量。(2)minSessionTimeout, maxSessionTimeout:一般,客户端连接zookeeper的时候,都会设置一个session timeout,如果超过这个时间client没有zookeeper server有联系,则这个session被设置为过期(如果这个session上有临时节点,则会被全部删除),但是这个时间不是客户端可以...转载 2017-06-05 11:10:39 · 21510 阅读 · 0 评论 -
ZKClient
zkClient的组件说明从上述结构上看,IZKConnection是一个ZkClient与Zookeeper之间的一个适配器。在代码里直接使用的是ZKClient,其实质还是委托了zookeeper来处理。ZkEventThread是专门用来处理事件的线程。 启动ZKClient在创建ZKClient对象时,就完成了到Zookeeper服务器连接的建立。(1)启动时,指定...转载 2017-02-15 15:47:18 · 1357 阅读 · 0 评论 -
zookeeper:Invalid session id 引起客户端不停地自动重连
场景重现:场景1:不停止clients,删除datadirs场景2:不停止clients,删除一些snapshots或者重启quorum 2017-07-17 18:19:19,338 [myid:0] - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:28421:NIOServerCnxnFactory@197] - Accepted ...转载 2017-07-18 15:31:54 · 2944 阅读 · 0 评论 -
Zookeeper常用命令
启动ZK服务:bin/zkServer.sh start 查看ZK服务状态: bin/zkServer.sh status 停止ZK服务: bin/zkServer.sh stop 重启ZK服务:bin/zkServer.sh restart 连接服务器:zkCli.sh -server 127.0.0.1:2181 查看根目录: ls / 创建testnode节点,关联字符串“zz”...转载 2017-02-20 17:29:41 · 398 阅读 · 0 评论 -
curator zkclient
原生api的不足:(1)连接的创建是异步的,需要开发人员自行编码实现等待。(2)连接没有自动的超进重连机制。(3)zk本身没提供序列化机制,需要开发人员自行指定,从而实现数据的序列化和反序列化。(4)Watcher注册一次只会生效一次,需要不断的重复注册。(5)不支持递归创建树形节点。 使用Java操作zookeeper时,一般有两种方式:zkclient和curato...转载 2017-02-17 14:50:26 · 1710 阅读 · 0 评论 -
ZooKeeper 会话超时
1、会话概述在ZooKeeper中,客户端和服务端建立连接后,会话随之建立,生成一个全局唯一的会话ID(Session ID)。服务器和客户端之间维持的是一个长连接,在SESSION_TIMEOUT时间内,服务器会确定客户端是否正常连接(客户端会定时向服务器发送heart_beat,服务器重置下次SESSION_TIMEOUT时间)。因此,在正常情况下,Session一直有效,并且ZK集群所有...转载 2017-08-14 16:14:57 · 644 阅读 · 0 评论 -
local session for zookeeper
1.一个local session没有正常session的所有功能。2.local session不能创建临时节点。3.一旦local session断开,就不能再用session-id/password重建这个session,session本身和它的watchers都会消失。4.当创建了一个local session,它的维护只由连接的zookeeper server管理 最...翻译 2017-09-25 13:25:04 · 718 阅读 · 0 评论 -
Zookeeper启动解析配置文件QuorumPeerConfig
1. parseProperties参数配置,除了下面这些配置项,其它属性会以zookeeper.为前缀,放入System中。 datadir目录创建,存储snapshot的目录,默认情况下,事务日志也会存储在这里。 dataLogDir目录创建,事务日志输出目录,尽量给事务日志的输出配置单独的磁盘或挂载点。 clientPort设置,一般为2181。 localSessionE...原创 2017-09-25 11:24:47 · 1725 阅读 · 0 评论 -
Zookeeper启动之QuorumPeerMain
1. 通过zkServer.sh启动zookeeper时,正常指定的QuorumPeerMain作为启动主类。2.QuorumPeerMain执行main方法,里面主要逻辑是执行initializeAndRun方法。 public static void main(String[] args) { QuorumPeerMain main = new Quo...原创 2017-09-25 10:50:22 · 11221 阅读 · 0 评论 -
zookeeper 删除日志文件任务
最后欢迎大家访问我的个人网站:1024s原创 2017-09-25 15:04:17 · 1202 阅读 · 0 评论 -
zookeeper以集群方式启动
核心的类为QuorumPeer,所以把分析的重点放在它身上。 public class QuorumPeer extends ZooKeeperThread implements QuorumStats.Provider public class ZooKeeperThread extends Thread public class QuorumStats ...原创 2017-09-25 15:44:18 · 537 阅读 · 0 评论 -
zookeeper 变量含义
zxid:zookeeper transaction id,64位的数字,为了保证事务顺序一致性,高32位是epoch,低32位用于递增计数。epoch:每一次建立一个新的leader-follower关系,都会有一个唯一的epoch值去标识。 最后欢迎大家访问我的个人网站:1024s ...原创 2017-09-26 09:36:39 · 461 阅读 · 0 评论 -
QuorumPeer启动恢复数据
1. QuorumPeer::loadDataBase函数体内主要是调用ZKDatabase::loadDataBase函数,然后就是验证调用loadDataBase函数返回的zxid中包含的epoch的正确性。2.ZKDatabase::loadDataBase函数主要调用FileTxnSnapLog::restore函数,并调用的过程中,传递一个PlayBackListener参数,进行事...原创 2017-09-26 10:20:04 · 388 阅读 · 0 评论 -
Consul
介绍Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置。Consul使用Go语言编写。优势1、它使用Raft算法来保证一致性,比复杂的Paxos算法更直接。2、支持多数据中心。Consul角色(1)client:客户端,无状态,将HTTP和DNS接口请求转发给局域网内的服务端集群。(2)server:服务端,保存配置信息,高可用集...转载 2018-11-13 11:25:30 · 953 阅读 · 0 评论