zookeeper入门(一)

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: Zookeeper 是一个开源的分布式的,为分布式应用提供协调服务的 Apache 项目

一、概述


Zookeeper 是一个开源的分布式的,为分布式应用提供协调服务的 Apache 项目


zookeeper的工作机制


Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据(状态数据而非实际业务数据),然后接受观察者(Client)的注册, 一旦这些数据的状态发生变化 ,Zookeeper就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应。


Zookeeper  = 文件系统 + 通知机制

20200228105629683.png

二、特点


zookeeper的特点

20200228110020369.png

1、Zookeeper:一个leader,多个follower组成的集群


2、全局数据一致:每个server保存一份相同的数据副本,client无论连接到哪个server,数据都是一致的


3、分布式读写,更新请求转发,由leader实施


4、更新请求顺序进行,来自同一个client的更新请求按其发送顺序依次执行


5、数据更新原子性,一次数据更新要么成功,要么失败


6、实时性,在一定时间范围内,client能读到最新数据


7、集群中只要有半数以上节点存活,zk集群就能正常服务。<因此常见到zk集群中很少有偶数台服务器,除非是土豪>

三、数据结构


ZooKeeper数据模型的结构与Unix文件系统很类似,整体上可以看作是一棵树,每个节点称做一个ZNode。 每一个ZNode默认能够存储1MB的数据,每个ZNode都可以通过其路径唯一标识。

20200228134529774.png

四、应用场景


统一命名服务


在分布式环境下,经常需要对应用/服务进行统一命名,便于识别。例如:IP不容易记住,而域名容易记住。

20200228134755740.png

统一配置管理


1)分布式环境下,配置文件同步非常常见

  • 一般要求一个集群中,所有节点的配置信息是一致的,比如 Kafka 集群
  • 对配置文件修改后,希望能够快速同步到各个节点上。

2)配置管理可交由ZooKeeper实现

  • 可将配置信息写入ZooKeeper上的一个Znode
  • 各个客户端服务器监听这个Znod
  • 一旦Znode中的数据被修改,ZooKeeper将通知各个客户端服务器。

20200228135112308.png

统一集群管理


1)分布式环境中,实时掌握每个节点的状态是必要的。

(1)可根据节点实时状态做出一些调整。

2)ZooKeeper可以实现实时监控节点状态变化

(1)可将节点信息写入ZooKeeper上的一个ZNode。

(2)监听这个ZNode可获取它的实时状态变化

20200228135303843.png

有两点特别重要:

· 客户端如果对Zookeeper的数据节点注册Watcher监听,那么当该数据及诶单内容或是其子节点列表发生变更时,Zookeeper服务器就会向订阅的客户端发送变更通知。

 · 对在Zookeeper上创建的临时节点,一旦客户端与服务器之间的会话失效,那么临时节点也会被自动删除。

bin]# ps -ef|grep 2181
root      5777     1  0 Mar26 ?        00:16:48 /usr/local/codis/src/github.com/CodisLabs/codis/bin/codis-fe --ncpu=2 --log=/var/log/fe.log --log-level=WARN --zookeeper=10.50.10.153:2181 --listen=10.50.10.153:8090
相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
目录
相关文章
|
5月前
|
存储 消息中间件 负载均衡
Zookeeper基础入门与安装部署
Zookeeper基础入门与安装部署
47 0
|
4月前
|
NoSQL 中间件 API
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)(下)
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)
84 2
|
4月前
|
NoSQL Java API
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)(上)
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)
74 0
|
3月前
|
NoSQL Java API
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)
301 0
|
9月前
|
Dubbo Java 应用服务中间件
springboot + dubbo + zookeeper入门到实战超级详解
springboot + dubbo + zookeeper入门到实战超级详解
128 0
|
5月前
|
存储 Shell Linux
ZooKeeper【部署 01】单机版安装+配置+添加到service服务+开机启动配置+验证+chkconfig配置+shell自动部署脚本(一篇入门zookeeper)
ZooKeeper【部署 01】单机版安装+配置+添加到service服务+开机启动配置+验证+chkconfig配置+shell自动部署脚本(一篇入门zookeeper)
123 0
|
5月前
|
Dubbo Java 应用服务中间件
分布式应用简单入门及SpringBoot整合Dubbo+Zookeeper
分布式应用简单入门及SpringBoot整合Dubbo+Zookeeper
46 1
|
10月前
|
存储
zookeeper入门(二)
接触zookeeper也有一段时间了,一直有一个问题困扰着我,那就是zookeeper在codis中扮演什么角色,zookeeper中到底存储了哪些数据。
43 0
|
12月前
zookeeper入门到精通08——服务器节点动态上下线案例实战
zookeeper入门到精通08——服务器节点动态上下线案例实战
|
12月前
|
API
zookeeper入门到精通07——zookeeper客户端API节点操作与原理
zookeeper入门到精通07——zookeeper客户端API节点操作与原理