zookeeper学习 (一)

12 篇文章 0 订阅

Zookeeper概念:

Zookeeper本身是一个开源的分布式的为别的分布式框架提供协调服务

它是基于观察者模式的,它负责存储和管理数据,接收观察者的注册,一旦数据的状态发生变化,zookeeper就将负责通知在zookeeper上注册的那些观察者做出相应的反应

Zookeeper=文件系统+通知机制

  • 文件系统: 就是用于存储服务器的上下线信息
  • 通知机制:客户端可以注册到zookeeper,然后zookeeper会及时通知客户端关于服务端的信息

zookeeper特点:

在这里插入图片描述

  • zookeeper由一个领导者(Leader)和多个跟随者(Follower)组成的集群
  • 需要有 半数以上的节点存活,zookeeper集群才能正常服务,比如5个和6个,都是需要三个节点存活才能正常服务(6/2=3,不大于3),所以第六个节点对于提高可用性没有任何用处,所以zookeeper推荐使用奇数个节点
  • 全局数据一致:数据一致性
  • 对于每个客户端发来的顺序请求,是按照顺序依次执行
  • 数据更新原子性,要么整体成功,要么整体失败
  • 实时性,在一定时间范围内,client能读到最新数据, 都知道数据同步是需要时间的,而zookeeper同步的时间非常短,所以可以到达实时性

存储的数据结构

在这里插入图片描述
整体上看是一棵树,每个节点称作一个Znode,每个ZNode默认能够存储1MB的数据,所以zookeeper是不能用于存储大量数据的,最多用于存储一些配置信息

通过路径进行唯一标识

zookeeper的应用场景:

统一命名服务:

在分布式环境下,经常需要对应用和服务进行统一命名,便于识别

在这里插入图片描述

如图,使用zookeeper就可以实现对IP的统一命名

统一配置管理:

各服务统一从 zookeeper中获取配置,并监听配置的变化

  1. 将配置信息写到zookeeper上的一个ZNode里
  2. 各个客户端服务器监听这个ZNode
  3. 一旦ZNode中的数据被修改,zookeeper将通知各个客户端服务器

在这里插入图片描述

统一集群管理:

分布式环境中,实时掌握每个节点的状态是必要的,可以根据节点实时状态做出一些跳转

zookeeper可以实现实时监控节点状态变化

  1. 可将节点信息写入zookeeper上的一个ZNode
  2. 其他节点监听这个ZNode可获取它的实时状态变化

也就是说每个节点都注册并监听

服务器动态上下线:

在这里插入图片描述

服务器下线时,zookeeper会立即向监听了该服务器的客户端发送下线通知,然后客户端会重新去zookeeper获取服务器列表,得到最新的上下线通知

软负载均衡:

在zookeeper中记录每台服务器的访问数,让访问数最少的服务器去处理最新的客户端请求

在这里插入图片描述

如图,当前记录的服务器中访问数最少的是50,那么这三个客户端请求将会被50这个服务器进行接受

下载安装:

链接: Apache ZooKeeper

在这里插入图片描述

使用的版本是 zookeeper3.5.7。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

下载第一个。

然后需要将zookeeper安装到 Linux上,我这里下载到阿里云服务器上

  • tar -zxvf apache-zookeeper-3.5.7- bin.tar.gz

  • mv apache-zookeeper-3.5.7-bin/ zookeeper-3.5.7 重命名

  • 然后进入 apache-zookeeper-3.5.7-bin/conf目录找到zoo_sample.cfg

  • 将 zoo_sample.cfg 重命名 zoo.cfg : mv zoo_sample.cfg zoo.cfg

  • 进入 zoo.cfg文件,修改dataDir ,目录改成自己创建的文件夹目录,比如我这里就修改成dataDir=/envir/zookeeper/zookeeper-3.5.7/zkData

这篇文章先介绍到这

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值