ZooKeeper
Jaymeng8848
攀爬每一个巨人,站在他们肩膀上看一看
展开
-
DistributedBarrier和DistributedDoubleBarrier源码分析
Barrier在分布式系统中,可以使用栅栏,对多个节点上的任务进行阻塞等待;直到满足某个定制的条件,所有的节点才可以继续执行下一步任务。关键 APIorg.apache.curator.framework.recipes.barriers.DistributedBarrier机制说明控制多节点上的多任务执行步进。类似java中的java.util.concurrent.CyclicBarrier分布式实现。3. 用法3.1 创建public DistributedBarrier转载 2020-08-15 17:06:23 · 210 阅读 · 0 评论 -
zookeeper开源客户端Curator典型应用场景之-Barrier屏障
什么是BarrierBarrier是这样的:Barrier是一个同步点,每一个进程到达此点都要等待,直到某一个条件满足,然后所有的节点继续进行。比如:赛跑大家都知道,所有比赛人员都会在起跑线外等待,直到教练员的枪响之后,所有参赛者立刻开始赛跑。JDK的并发包下有CyclicBarrier,它看起来和CountDownLatch有很大的相似之处:CountDownLatch:是一个同步的辅助类,允许一个或多个线程,等待其他一组线程完成操作,再继续执行。CountDownLatch是通过一个计数器来实现转载 2020-08-15 15:53:44 · 92 阅读 · 0 评论 -
zookeeper开源客户端Curator典型应用场景之-服务注册与发现
着业务增加,以前简单的系统已经变得越来越复杂,单纯的提升服务器性能也不是办法,而且代码也是越来越庞大,维护也变得越来越困难,这一切都催生了新的架构设计风格 – 微服务架构的出现。微服务给我们带来了很多好处,例如:独立可扩展、易维护。但是随着应用的分解,微服务的引入,服务越来越多,业务系统与服务系统之间的调用,该架构的问题暴露出来:最明显的问题是所有的请求都需要nginx来转发,随着内部服务的越来越多,服务上线都需要修改nginx的配置。一旦内部网络调整,nginx upstream也需要做对应的配置调整,转载 2020-08-15 15:44:00 · 239 阅读 · 0 评论 -
Leader Election 的使用与分析
Zookeeper在分布式系统中,常常被用于选主。在执行某个任务时,让所有的节点都知道有一个特别的,唯一的节点是任务的主节点,由主节点进行任务的执行,其他节点作为备用节点。通过这种热备方式,为分布式系统中任务执行的可控性,以及系统高可用性。而Curator提供了两种选主机制,可以根据实际情况进行选用。1. 关键APIorg.apache.curator.framework.recipes.leader.LeaderLatch2. 机制说明LeaderLatch的方式,就是以一种抢占的方式来决定选主转载 2020-08-15 15:24:41 · 972 阅读 · 0 评论 -
LeaderLatch的使用与分析
Leader LatchZookeeper在分布式系统中,常常被用于选主。在执行某个任务时,让所有的节点都知道有一个特别的,唯一的节点是任务的主节点,由主节点进行任务的执行,其他节点作为备用节点。通过这种热备方式,为分布式系统中任务执行的可控性,以及系统高可用性。而Curator提供了两种选主机制,可以根据实际情况进行选用。关键APIorg.apache.curator.framework.recipes.leader.LeaderLatch2. 机制说明LeaderLatch的方式,就是以转载 2020-08-15 15:03:06 · 3694 阅读 · 0 评论 -
zookeeper开源客户端Curator典型应用场景之-Master选举
在生产环境中 ,一般要保证服务的高可用,有时候只需要选出一台机器来执行,其余机器处于备用状态,比如,在分布式系统中很常见的一个问题就是定时任务的执行。如果多台机器同时执行相同的定时任务,业务复杂则可能出现灾难性的后果。我使用的是当当网的elastic-job分布式定时任务框架,分一片,部署两台机器,其中一台处于备用状态,只有一台机器是工作的,当这台机器宕机了,备用机器才开始工作。分布式锁和Master选举相似点上一篇博客讲了curator的分布式锁应用,分布式锁和 Master选举有几种相似点,实际上其转载 2020-08-15 11:34:05 · 242 阅读 · 0 评论 -
zookeeper开源客户端Curator典型应用场景之-分布式锁
在分布式环境中 ,为了保证数据的一致性,经常在程序的某个运行点(例如,减库存操作或者流水号生成等)需要进行同步控制。以一个"流水号生成"的场景为例,普通的后台应用通常都是使用时间戳来生成流水号,但是在用户访问量很大的情况下,可能会出现并发问题。下面通过示例程序就演示一个典型的并发问题:public static void main(String[] args) throws Exception { CountDownLatch down = new CountDownLatch(1);转载 2020-08-15 09:41:51 · 96 阅读 · 0 评论 -
zookeeper开源客户端Curator典型应用场景之-事件监听
事件监听Zookeeper原生就支持通过注册Watcher来进行事件监听,但是其使用并不是特别方便,需要开发人员反复注册Watcher,比较繁琐。Curator引入了Cache来实现对zookeeper服务端事件的监听,Cache是Curator中对事件的包装,其对事件的监听其实可以近似的看做是一个本地缓存视图和远程Zookeeper视图的对比过程。同时Curator能够自动为开发人员处理反复注册监听,从而大大简化原生API开发的繁琐过程。Cache分为NodeCache,PathChildrenCach转载 2020-08-15 07:55:57 · 190 阅读 · 0 评论 -
zookeeper开源客户端Curator异步API和事务API
我们知道了如何使用Curator来创建会话,创建节点,删除节点,读取数据,更新数据和判断节点是否存在等操作在前面都使用了Curator框架提供的同步接口,原生API中基本上所有的操作都有提供异步操作,Curator也有提供异步操作的API。异步操作在使用以上针对节点的操作API时,我们会发现每个接口都有一个inBackground()方法可供调用。此接口就是Curator提供的异步调用入口。对应的异步处理接口为BackgroundCallback。此接口指提供了一个processResult的方法,用转载 2020-08-14 20:52:34 · 134 阅读 · 0 评论 -
zookeeper开源客户端Curator
之前使用的客户端是3.4.6,后来换成了3.5.3-beta 版本,前面的知识中也有对3.5.x一些知识点的补充,往后的客户端版本都使用该版本,下面的介绍也是基于3.5.3-beta的。参考官网添加链接描述java操作zookeeperpom添加依赖<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId>转载 2020-08-14 14:26:06 · 123 阅读 · 0 评论 -
Zookeeper节点ACL权限设置
概述ACL全称为Access Control List(访问控制列表),用于控制资源的访问权限。ZooKeeper使用ACL来控制对其znode(ZooKeeper数据树的数据节点)的访问。ACL实现与UNIX文件访问权限非常相似:它使用权限位来允许/禁止针对节点的各种操作以及位应用的范围。与标准UNIX权限不同,ZooKeeper节点不受用户(文件所有者),组和world(其他)的三个标准范围的限制。zk利用ACL策略控制节点的访问权限,如节点数据读写、节点创建、节点删除、读取子节点列表、设置节点权限转载 2020-08-14 11:57:52 · 964 阅读 · 0 评论 -
zookeeper常用命令
常用shell脚本操作命令shell脚本在zookeeper安装根目录的bin/路径下。启动zk : bin/zkServer.sh start查看ZK服务状态: bin/zkServer.sh status停止ZK服务: bin/zkServer.sh stop重启ZK服务: bin/zkServer.sh restart连接服务器 : bin/zkCl转载 2020-08-14 10:23:27 · 165 阅读 · 0 评论 -
ZooKeeper简介
介绍ZooKeeper(后面称为zk)是一种用于分布式应用程序的分布式开源协调服务。主要是用来解决分布式应用中经常遇到的一些问题,假如你公司的项目还是处于单机状态,那可能用不到zk,一旦涉及到分布式应用,很多问题都可以利用zk解决。官网地址:http://zookeeper.apache.org/doc/current/zookeeperOver.html1.设计目标简单高可靠有序高性能下面一一介绍:简单的数据模型zk允许各分布式应用通过一个共享的命名空间相互联系,该命名空间类似于一个转载 2020-08-14 10:15:09 · 920 阅读 · 0 评论