部署
单机、伪集群、集群
问题
Zookeeper会因为服务器存储空间不足而停掉本进程
权限控制ACL
为了避免存储在Zookeeper服务器上的数据被其他进程或人为修改
Zookeeper客户端
客户端脚本
Java客户端API(原生API)
ZkClient
解决Watcher反复注册,session重连,节点操作异常等
Curator
不紧解决上述的问题,还为开发者提供更便利的Api接口。例如:递归创建、使用线程池
适用场景
事件监听:Curator通过Cache来实现Zookeeper服务器事件的监听,可以看做是本地缓存视图和远程Zookeeper服务器视图进行对比。两种监听方式,分别为节点监听和子节点监听(无法对二级子节点进行监听)
Master选举:仅需要集群中一台机器进行处理,封装在LeaderSelector类中
分布式锁:通过封装的接口InterProcessMutex中,通过lock和release控制同步
分布式计数器:基于分布式锁,封装在DistributedAtomicInteger类中
分布式Barrier(栅栏):JDK中 CycleBarrier控制多个线程已经就绪之后,同时执行,解决了同一个JVM中多个线程同步的问题(比如:赛跑,预备一起跑)。Curator提供了DistributedBarrier来实现分布式Barrier,通过setBarrier,waitOnBarrier,removeBarrier(释放Barrier,出发同步执行)进行控制;另一种通过阈值(例如5),调用enter达到阈值,就开始同步执行,
工具:提供一些操作节点的工具类,ZKPaths和EnsurePath等
网友评论