前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >zookeeper是什么?(下)

zookeeper是什么?(下)

原创
作者头像
陈不成i
修改2021-07-07 10:23:43
3450
修改2021-07-07 10:23:43
举报
文章被收录于专栏:ops技术分享

四.Zookeeper优势

  • 源代码开放
  • 高性能,易用稳定,该优势已在众多分布式系统中得到验证
  • 有着广泛的应用,并且与众多大数据相关技术能实现良好的融合开发。

五.zk中的名词

Zk的集群角色

Leader:该角色是整个zookeeper集群工作机制中的核心

Follower:该角色是zookeeper集群状态的跟随者

Observer:在集群中充当观察者的角色

会话

会话是指客户端与zookeeper服务器的连接,zookeeper中的会话叫session,客户端靠与服务器建立一个TCP长连接来维持一个session,通过这个连接,客户端能够与zookeeper服务器保持有效的通话,也能向zookeeper集群发起请求并得到响应。

数据节点

zookeeper主要有两种节点 (1)集群中的一台机器称为一个节点

(2)数据模型中的数据单元Znode,分为持久节点和临时节点。zookeeper的数据模型就是一棵树,树的节点是Znode,Znode中可以保存信息(和文件系统的目录树一样,ZooKeeper树中的每个节点可以拥有子节点)

file
file

版本

zookeeper对于版本的概念主要有以下三种:

file
file

悲观锁:悲观锁又叫悲观并发锁,是数据库中一种非常严格的锁策略,具有强烈的排他性,能够避免不同事务对同一数据并发更新造成的数据不一致性,在上一个事务对数据的操作没有完成之前,下一个事务不能访问相同的资源。悲观锁适合数据更新竞争非常激烈的场景。

乐观锁:相比悲观锁,乐观锁应用的场景更加广泛。悲观锁简单的认为两个事务访问同一笔数据的时候一定会互相干扰,所以粗暴的采用了强烈排他的形式来控制并发操作。而乐观锁认为多个事务访问相同资源的场景是很少见的,不必在事务操作期间进行严格的并发控制。

但是乐观锁也是一种锁,也是一种机制,肯定会有对并发的其他处理方式,那这个方式是怎样的呢?对于数据库来说,通常的做法是在每个表中增加一个version字段,事务修改数据前首先读出数据,当然也会把版本号读出来,然后把这个读出来的version字段的值,加入到更新语句的where条件中。

比如:读出来的version值为1,则可以将更新语句这样写,update 表名 set 字段=xxx where id = 1 and version = 1,如果更新失败了说明其他事务已经对该资源做了修改,那么系统需要抛出异常给客户端,客户端通过一定的机制进行重试处理。

watcher

watcher(事件监听器):zookeeper允许用户在指定的节点上去注册事件监听器watcher,在服务端数据节点发生变化时,zookeeper会把该变化通知给感兴趣的客户端(即订阅了该服务端节点的客户端)

ACL权限控制

ACL(Access Control Lists):zookeeper集群中支持各种类型的权限控制,主要有以下几种:

file
file

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 四.Zookeeper优势
  • 五.zk中的名词
    • Zk的集群角色
      • 会话
        • 数据节点
          • 版本
            • watcher
              • ACL权限控制
              相关产品与服务
              数据库
              云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档