zookeeper学习(一)

  • 中间件提供协调服务
  • 作用于分布式文系统 ,支持java

特性:

  1. 一致性:数据一致性,数据按照顺序分批入库
  2. 原子性:事务要么成功要么失败,不会局部化
  3. 单一视图:客户端连接任一集群中的节点,数据都是一致的
  4. 可靠性:每次对zk的操作状态都会保存在服务端
  5. 实时性:客户端可以读取到zk服务端的最新数据

zk特性之watch机制

针对每个节点的操作,都会有一个监督者,watcher

当监控的某个对象发生了变化,则触发watcher事件

zk中的watcher是一次性的,触发后立即销毁

父节点子节点,增删改都能触发watcher

zuu.cfg配置

tickTime:用于计算的时间单元,比如session超时= N*tickTime\

initTime:用于集群,允许从节点连接并同步到master节点的初始化连接时间,以tickTime的倍数来表示

syncLimt:用于集群,master主节点与从节点之间发送消息,请求和应答的时间长度。(心跳机制 )

zookeeper基本数据模型

一个树形结构,每一个节点都称为znode,它可以有子节点,也可以有数据

每一个节点分为临时节点和永久节点,临时数据在客户端断开后消失

每个节点都有各自的版本号,可以通过命令行来显示节点的信息

每当数据发送变化的时候,那么该节点的版本号会累加(乐观锁)。

删除/修改过时节点,版本号不匹配会报错

每个zk节点的数据不宜过大,几k即可

节点可以设置权限acl,通过权限来限制用户的访问

zookeeper的作用

  • 提供分布式锁,防止分布式环境中不同进程之间的资源的争夺
  • master节点选举,主节点挂掉以后,j从节点就会接受工作,并且保证这个节点是唯一的,从而保证集群的高可用
  • 集群管理,集群中保证数据的强一致性
  • 统一配置文件管理,只需要部署一台服务器,则可以把相同的配置文件同步更新到其它所有服务器

zookeeper的acl权限控制

针对节点可以设置相关读写权限,可以指定不同的权限范围以及角色

zk的acl通过[scheme:id:permissions]来构成权限列表

scheme:代表采用的某种权限机制        id 代表允许访问的用户        permissions 权限字符串组合

scheme

  • world:world下只有一个id,即只有一个用户也就是anyone,写法world:anyone:[permissions]
  • auth :代表认证登录,需要注册用户有权限就行,写法 auth:user:password[permissions]
  • digest :需要对密码加密才能访问,写法为diegest:username:BASE64(SHA1(password)):[permissions]
  • ip :当设置为ip访问地址,写法ip:123.456.789:[permissions]
  • super : 代表超级管理员拥有所有权限

permissions cdrwa

CREATE : 创建子节点   READ : 获取节点、子节点  WRITE : 设置节点数据  DELETE : 删除子节点

acl的使用场景

  • 开发/测试环境隔离,开发者无权操作测试库的节点
  • 生产环境上控制指定ip的服务可以访问相关节点,防止混乱

zk四字命令 The Four Letter Words

yum install nc

echo [command]  | nc [ip] [port]

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值