美文网首页
Zookeeper-基础知识

Zookeeper-基础知识

作者: 麦大大吃不胖 | 来源:发表于2020-12-18 10:04 被阅读0次

by shihang.mai

zookeeper用作分布式协调服务

1. zk节点

zk节点
  • zk是目录树结构

  • node大小只能为1m,这是为了减少网络传输的数据,服务协调快。

  • 节点有临时节点和持久节点两类型,它们都可以作为序列化节点。

  • 临时节点可配合session使用做分布式锁

1.1 节点属性详解

当执行命令

get /ooxx

结果

"hello";(二进制安全的)
cZxid = 0x20000002;(增加的事务id.事务id单调递增,c代表create。低32位代表事务id,高32位代表第几个leader,leader切换高32位增加1)
cTime = 时间;(创建时间)
mZxid = 0x20000004;(修改的事务id。)
mTime = 时间;(修改时间)
pZxid = 0x20000003;(当前节点下,最后创建节点的事务id)
ephemeralOwner = 0x0;(临时持有者,即创建临时节点的sessionid)

连接和消除session都要增加事务id

下面命令解决多线程下同一节点命名,zk会自动在节点后加上id

create -s /abc/xxx "ssss"

结果

/abc/xxx00000000

2. zk的特性

  • Sequential Consistency:顺序性。
    因为所有写操作都在leader,leader单节点,保证顺序.
  • Atomicity:原子性。
    因为所有写操作都在leader,leader和follower主从模式,要不成功要不失败,没中间状态.
  • Single System Image:统一视图.
    因为是主从模型,客户端无论连接那个zk都一样。
  • Reliability:可靠性/持久性。
  • Timeliness:及时性/最终一致性。
zk的特点 zk特性
node可存放1m数据,并且所有客户端无论连接那个zk,都读取到一样的数据 统一配置管理
path结构 分组管理
sequential(create -s /abc/xxx "ssss") 统一命名
临时节点 同步

3. zk集群状态

zk集群状态
  • zk集群中只有一个leader,其他是follower和Observer(主从),只有follower参与选举。

  • leader会存在单点故障。

但是zk是高可用的,证明有一种方式就算故障了也可以让其快速恢复。就是ZAB协议

如果连接的zk突然down了,在设置的timeout时间内恢复zk集群,那么连接会切换到另外一个zk上,session还是同一个

4. zk配置说明

zk并没有像redis一样的发布订阅,所以下面的配置需要配置这个集群所有zk。

如集群下有4个zk

#3888:在leader down了或者在刚启动时还没leader时用这个端口通信。选leader投票用的。
#2888:leader启动端口,leader接受write请求的端口。
#4台,过半(3台)就可以根据id谁大谁是leader了。例如启动1 2 3,3已经是leader
server.1=ip地址:2888:3888
server.2=ip地址:2888:3888
server.3=ip地址:2888:3888
server.4=ip地址:2888:3888:observer

5. zk的脑裂

假死:由于心跳超时(网络原因导致的)认为leader死了,但其实leader还存活着。
脑裂:由于假死会发起新的leader选举,选举出一个新的leader,但旧的leader网络又通了,导致有两个leader

5.1 zk脑裂解决

zookeeper采用过半策略+zab协议来解决脑裂

  1. 假设某个leader假死,其余的followers选举出了一个新的leader。这时,旧的leader复活并且仍然认为自己是leader
  2. 这个时候旧leader向其他followers发出写请求也是会被拒绝的。因为每当新leader产生时,会生成一个epoch标号(标识当前属于那个leader的统治时期),这个epoch是递增的,followers如果确认了新的leader存在,知道其epoch,就会拒绝epoch小于现任leader epoch的所有请求。
  3. 那有没有follower不知道新的leader存在呢,有可能,但肯定不是大多数,否则新leader无法产生。旧leader即使各种认为自己是leader,然并卵

相关文章

  • Zookeeper-基础知识

    基础知识 by shihang.mai zookeeper用作分布式协调服务 zk节点 zk是目录树结构 node...

  • RequestProcessor相关

    参考 响应客户端请求解析[https://github.com/liwanghong/ZooKeeper-/blo...

  • zookeeper-测试

    python脚本测试 压测 1.运行一个zk的压力测试容器 2.编辑配置文件 3.运行测试工具 robot脚本

  • zookeeper-安装

    2020-1020 1、zookeeper ZooKeeper:分布式应用程序的分布式协调服务 2181:对c...

  • Zookeeper-请了解下

    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是...

  • (1)zookeeper-快速入门

    目录 1,介绍2,集群搭建3,快速入门 介绍 Zookeeper 高可用、高性能且一致的开源协调服务,它提供了一项...

  • zookeeper-官方文档笔记

    定义 ZooKeeper是用于维护配置信息,命名,提供分布式同步以及提供组服务的集中式服务。 ZooKeeper与...

  • Zookeeper-服务注册与发现

    最近在学习zookeeper,作为一个分布式协调服务,它的用途挺多,服务注册与发现、分布式锁、集群选举、配置中心等...

  • Zookeeper-数据同步源码分析

    zookeeper 集群在选举结束之后,leader 节点将进入 LEADING 状态,follower 节点将进...

  • Zookeeper-分布式协调服务

    分布式协调服务的角色 担任协调者 leader选举 负载均衡 服务发现 将多级协调的职责从服务中分离出来 比如ka...

网友评论

      本文标题:Zookeeper-基础知识

      本文链接:https://www.haomeiwen.com/subject/mratwktx.html