java 中使用zookeeper

权限控制模式

schema:授权对象

ip     : 192.168.1.1

Digest  : username:password

world  : 开放式的权限控制模式,数据节点的访问权限对所有用户开放。 world:anyone

super  :超级用户,可以对zookeeper上的数据节点进行操作

 

连接状态

KeeperStat.Expired  在一定时间内客户端没有收到服务器的通知, 则认为当前的会话已经过期了。

KeeperStat.Disconnected  断开连接的状态

KeeperStat.SyncConnected  客户端和服务器端在某一个节点上建立连接,并且完成一次version、zxid同步

KeeperStat.authFailed  授权失败

事件类型

NodeCreated  当节点被创建的时候,触发

NodeChildrenChanged  表示子节点被创建、被删除、子节点数据发生变化

NodeDataChanged    节点数据发生变化

NodeDeleted        节点被删除

None   客户端和服务器端连接状态发生变化的时候,事件类型就是None

 

curator

Curator本身是Netflix公司开源的zookeeper客户端;

curator提供了各种应用场景的实现封装

curator-framework  提供了fluent风格api

curator-replice     提供了实现封装

 

curator连接的重试策略

ExponentialBackoffRetry()  衰减重试

RetryNTimes 指定最大重试次数

RetryOneTime 仅重试一次

RetryUnitilElapsed 一直重试知道规定的时间

 

zookeeper的实际应用场景

zookeeper能够实现哪些场景

订阅发布

   watcher机制

   统一配置管理(disconf)

分布式锁

   redis  

   zookeeper

   数据库   

负载均衡

ID生成器

分布式队列

统一命名服务

master选举

 

 

 

数据发布订阅/ 配置中心


实现配置信息的集中式管理和数据的动态更新

实现配置中心有两种模式:push 、pull。

长轮训

zookeeper采用的是推拉相结合的方式。 客户端向服务器端注册自己需要关注的节点。一旦节点数据发生变化,那么服务器端就会向客户端

发送watcher事件通知。客户端收到通知后,主动到服务器端获取更新后的数据

  1. 数据量比较小
  2. 数据内容在运行时会发生动态变更
  3. 集群中的各个机器共享配置

 

负载均衡

请求/数据分摊多个计算机单元上

 

分布式锁

通常实现分布式锁有几种方式

  1. redis。 setNX 存在则会返回0, 不存在
  2. 数据方式去实现

创建一个表, 通过索引唯一的方式

create table (id , methodname …)   methodname增加唯一索引

insert 一条数据XXX   delete 语句删除这条记录

mysql  for update

  1. zookeeper实现

排他锁

共享锁(读锁)

实现共享锁,使用java api的方式 使用有序节点的特性进行处理

 

命名服务

 

master选举

7*24小时可用, 99.999%可用

master-slave模式

使用zookeeper解决

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值