初步认识zookeeper(1)--背景

1、什么是 zookeeper?
zookeeper 是一个开源的分布式协调服务,由雅虎公司创
建,是 google chubby 的开源实现。zookeeper 的设计目
标是将哪些复杂且容易出错的分布式一致性服务封装起来,
构成一个高效可靠的原语集(由若干条指令组成的,完成
一定功能的一个过程),并且以一些列简单一用的接口提供
给用户使用
2、为什么要用zookeeper?
在分布式架构下,当服务越来越多,规模越来越大时,对
应的机器数量也越来越大,单靠人工来管理和维护服务及
地址的配置地址信息会越来越困难,单点故障的问题也开
始凸显出来,一旦服务路由或者负载均衡服务器宕机,依
赖他的所有服务均将失效。
此时,需要一个能够动态注册和获取服务信息的地方。
来统一管理服务名称和其对应的服务器列表信息,称之为
服务配置中心,服务提供者在启动时,将其提供的服务名
称、服务器地址注册到服务配置中心,服务消费者通过服
务配置中心来获得需要调用的服务的机器列表。通过相应
的负载均衡算法,选取其中一台服务器进行调用。当服务
器宕机或者下线时,相应的机器需要能够动态地从服务配
置中心里面移除,并通知相应的服务消费者,否则服务消
费者就有可能因为调用到已经失效服务而发生错误,在这
个过程中,服务消费者只有在第一次调用服务时需要查询
服务配置中心,然后将查询到的信息缓存到本地,后面的
调用直接使用本地缓存的服务地址列表信息,而不需要重
新发起请求道服务配置中心去获取相应的服务地址列表,
直到服务的地址列表有变更(机器上线或者下线)。这种无
中心化的结构解决了之前负载均衡设备所导致的单点故障
问题,并且大大减轻了服务配置中心的压力
3、常用名词解释

  • 集群角色
    leader、follower、observe
    只有leader才能处理事务请求(添加、修改、删除)
    observe不参与leader选举投票
  • 数据模型
  • 会话状态
  • stat信息
[zk: localhost:2181(CONNECTED) 16] get /ws
ww
cZxid = 0x4  //创建id
ctime = Sun Jul 14 11:03:23 CST 2019 //创建时间
mZxid = 0x4 //修改id
mtime = Sun Jul 14 11:03:23 CST 2019 //修改时间
pZxid = 0x4 //子节点最后一次修改的id(默认与cZxid相等,只有子节点变更才会改变)
cversion = 0  //(乐观锁) 当前节点的子节点版本号,修改时版本号变更
dataVersion = 0 //当前数据的版本号
aclVersion = 0 // 当前节点权限ACL变更的版本号
ephemeralOwner = 0x0 //临时节点才有意义, ephemeralOwner值表示与该节点绑定的session id. 
dataLength = 2
numChildren = 0 //子节点的数量
  • Watcher机制
    getData、exists、getChildren
  • 应用场景
    注册中心、配置中心、负载均衡(知道机器状态以及选举leader)
发布了20 篇原创文章 · 获赞 32 · 访问量 5601

猜你喜欢

转载自blog.csdn.net/shuai8624/article/details/96213710