Zookeeper入门学习(一)--Zookeeper的特点

本文介绍了Zookeeper的特点及其在数据发布/订阅、负载均衡等场景的应用,并详细解释了Zookeeper的基本概念,如集群角色、会话、数据节点等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Zookeeper的特点
1、开放源代码
2、分布式的协调服务,可以解决分布式数据一致性问题:
  • (1) 顺序一致性
  • (2) 原子性
  • (3) 单一视图
  • (4) 可靠性
  • (5) 实时性
3、高性能
二、Zookeeper应用场景(包含但不限于下列场景)
1、数据发布/订阅
zk采用了推模式和拉模式相结合的方式
2、负载均衡
  • (1)首先DB在启动时,将自己在zk上注册成一个临时节点(zk包含临时节点和永久节点两种,临时节点在服务器出现问题的时候,节点会自动从zk上删除,能够保证zk上的服务器列表是最新的可用列表)
  • (2)客户端在需要读写数据的时候去zookeeper上得到所有可用的DB的链接信息
  • (3)客户端随机选择一个DB与之建立连接
  • (4)当客户端发现连接不可用时可以再次从zk上获取可用的DB连接信息,也可以从之前获得的列表中删除这个不可用的连接后再随机选择一个DB与之连接
3、命名服务
传统命名有两种,第一种是数据库表的自增长ID,但是不可用于分布式系统,第二种则是UUID,可以用于分布式系统,但是没有规则,不利于理解。
zk可以生成一个用于分布式环境下的顺序增长且便于理解的ID
4、分布式协调\通知
心跳检测,在zk中我们可以将所有机器都注册成一个临时节点(根据临时节点的特点),当需要判断一个机器是否可用时,只需要判断这个节点在zk中是否存在即可,从而降低了系统的复杂度
三、Zookeeper的基本概念
1、集群角色
  • Leader服务器是整个zookeeper集群工作机制中的核心
  • Follower服务器是zookeeper集群状态的跟随者
  • Observer 服务器充当一个观察者的角色
2、会话
客户端与zookeeper服务器的连接,zookeeper中的会话叫session。客户端在启动的时候会与服务器建立一个TCP的长连接来维持一个Session,通过这个连接,客户端能够通过心跳检测与服务器保存有效的会话,也能像zk服务器发送请求并获得响应。
3、数据节点
  • (1)集群中的一台机器称为一个节点
  • (2)数据模型中的数据单元Znode,分为持久节点和临时节点

    zookeeper的数据模型是一棵树,其中树的节点就是Znode,Znode中可以保存信息

4、版本
用来记录节点数据或节点或子节点列表或权限信息的修改次数
  • (1) version : 当前数据节点内容的版本号
  • (2) cversion : 当前数据节点子节点的版本号
  • (3) aversion : 当前数据节点ACL变更版本号
5、watcher
Zookeeper允许用户在指定节点上注册一些watcher,当数据节点发生变化的时候,zookeeper服务器会把这个变化的通知发送给感兴趣的客户端
6、ACL(Access Control Lists)权限控制

ZooKeeper采用ACL策略来进行权限控制,有如下权限:

  • (1)CREATE : 创建子节点的权限
  • (2)READ : 获取节点数据和节点列表的权限
  • (3)WRITE : 更新节点数据的权限
  • (4)DELETE : 删除子节点的权限
  • (5)ADMIN : 设置节点ACL的权限
ZooKeeper开源分布式协调服务,它为分布式应用程序提供了种高效、可靠的协调机制。以下是ZooKeeper入门介绍和初体验: ### ZooKeeper的基本概念 1. **节点(Znode)**:ZooKeeper的数据模型类似于文件系统,由系列的节点(Znode)组成。每个节点可以包含数据,也可以包含子节点。 2. **会话(Session)**:客户端与ZooKeeper服务器之间的连接称为会话。会话用于维护客户端的状态和连接。 3. **观察者(Watcher)**:客户端可以设置观察者来监听节点的变化。旦节点发生变化,观察者会触发相应的回调函数。 ### ZooKeeper的应用场景 1. **配置管理**:将配置信息存储在ZooKeeper的节点中,应用程序可以通过监听这些节点的变化来动态更新配置。 2. **分布式锁**:利用ZooKeeper的节点机制来实现分布式锁,确保多个客户端对共享资源的互斥访问。 3. **集群管理**:通过ZooKeeper来管理集群中的节点状态,确保集群的高可用性和致性。 ### 初体验 #### 安装ZooKeeper 1. **下载ZooKeeper**: 从[ZooKeeper官网](https://zookeeper.apache.org/releases.html)下载最新版本的ZooKeeper。 2. **解压安装**: ```bash tar -zxvf zookeeper-3.7.0.tar.gz cd zookeeper-3.7.0 ``` 3. **配置环境变量**: 在`~/.bashrc`或`~/.zshrc`中添加: ```bash export ZOOKEEPER_HOME=/path/to/zookeeper-3.7.0 export PATH=$PATH:$ZOOKEEPER_HOME/bin ``` 4. **启动ZooKeeper**: ```bash zkServer.sh start ``` #### 使用ZooKeeper 1. **连接ZooKeeper**: ```bash zkCli.sh -server 127.0.0.1:2181 ``` 2. **创建节点**: ```bash create /test "Hello, ZooKeeper" ``` 3. **读取节点数据**: ```bash get /test ``` 4. **设置观察者**: ```bash get /test watch ``` 5. **修改节点数据**: ```bash set /test "Hello, 优快云" ``` 6. **删除节点**: ```bash delete /test ``` ### 总结 ZooKeeper个强大的分布式协调服务,适用于各种分布式应用场景。通过简单的命令和API,开发者可以轻松地实现配置管理、分布式锁、集群管理等功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值