zookeeper:zk 保证高可靠、高可用的协同服务 集中式服务,用于配置信息,名称服务,分布式同步处理 ZK组件 1.Client 向Server周期性发送信息,表明自己还活着,Server向Client回应确认消息。 Client没有收到响应,自动重定向消息到其他的Server 2.Server 一个ZK节点,向Client提供所有服务,通知Client,Server是Alive的。 3.Ensemble 全体,一组ZK节点,需要最小值为3 4.Leader 领袖,特殊的ZK节点,ZK集群启动时,推选Leader 5.Follower 随从,听命于Leader的指令 ZK的namespace等级结构 1.驻留在内存的 2.树上的每个节点都是Znode 3.每个Znode都有name,而且用/分割 4.每个Znode存放的数据不能超过1M 5.每个节点都有Stat对象 a.Version:与之关联的数据发生改变时,版本增加。 b.ACL:Action Control List c.Timestamp d.Datalength ZK Znode节点类型 1.持久节点 2.临时节点 3.顺序节点 ZK安装 1.下载ZK 2.安装JDK 3.tar开 4.配置环境变量 ZOOKEEPER_HOME= PATH=.. 部署ZK 1.单机版 a.创建配置conf/zoo.cfg配置 tickTime=2000 dataDir=/path/to/zookeeper/data clientPort=2181 initLimit=5 syncLimit=2 b.启动zkServer $>bin/zkServer.sh start c.启动zkClient $>zkCli.sh 2.完全分布式 a.确定主机 s101 s102 s103 b.配置${datadir}/myid文件 101 c.配置zoo.cfg,默认的配置文件 ... server.101=192.168.88.101:2888:3888 server.102=192.168.88.102:2888:3888 server.103=192.168.88.103:2888:3888 ... 配置ZK 1.配置文件 [conf/zoo_sample.conf] #每次心跳的毫秒数 tickTime=2000 #开始同步阶段的心跳数 initLimit=10 #发送请求和得到确认之间可以传递的心跳个数。 syncLimit=5 #存放ZK的快照目录,不要存在/tmp下 dataDir=/tmp/zookeeper 客户端连接的端口 clientPort=2181 通过ZK的API访问ZK集群 ... leader选举过程 1.所有节点在相同的path下创建各自的临时序列化节点 每个ZK都有自己对应的ZNODE 2.拥有最小编号的ZK是Leader,其他的ZK是Follower 3.每个Follower观察仅比自己小的那个node 008->007, 007->006,... 4.如果Leader下线了,则他对应的节点会删除。 5.观察者会发现Leader被删除了。 6.观察者查找是否还有最小的节点,如果有,最小值节点成为Leader,否则,观察者了Leader。
转载请注明:MitNick » zookeeper部署