
zookeeper
文章平均质量分 58
sam-fat-chang
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
zookeeper的典型应用
1、统一命名服务(Name Service)分布式应用中,通常需要有一套完整的命名规则,既能够产生唯一的名称又便于人识别和记住,通常情况下用树形的名称结构是一个理想的选择,树形的名称结构是一个有层次的目录结构,既对人友好又不会重复。说到这里你可能想到了 JNDI,没错 Zookeeper 的 Name Service 与 JNDI 能够完成的功能是差不多的,它们都是将有层次的目录结构关联到原创 2014-12-29 16:20:55 · 547 阅读 · 0 评论 -
zookeeper分布式锁(七)
zookeeper分布式锁(六)针对创建节点的非“幂等”性操作提供了解决方案,下面,为了避免“羊群效应”,可以用以下的解决方案execute()方法是前边介绍过的ZookeeperOperation类中的执行方法,在某一个进程申请“锁”的时候会执行这个方法,这个方法返回“boolean”,用来判断申请成功或者失败,方法访问权限是“public”,没有参数。方法首先判断当原创 2015-01-19 16:13:01 · 544 阅读 · 0 评论 -
zookeeper分布式锁(四)
zookeeper分布式锁(三)中,在重试操作方法里有一个retryDelay()方法,用来确定重试间隔的时间,子安在把这个方法的代码发布:retryDelay()方法的访问权限是“protected”,返回时“void”,参数是一个int值:protected void retryDelay(int attemptCount) { if (attemptCou原创 2015-01-19 14:47:03 · 508 阅读 · 0 评论 -
zookeeper分布式锁(十)
ZooKeeperOperation:public interface ZooKeeperOperation { /** * Performs the operation - which may be involved multiple times if the connection * to ZooKeeper closes during thi原创 2015-01-19 16:24:46 · 541 阅读 · 0 评论 -
zookeeper分布式锁(九)
ProtocolSupport:class ProtocolSupport { private static final Logger LOG = LoggerFactory.getLogger(ProtocolSupport.class); protected final ZooKeeper zookeeper; private AtomicBoolean原创 2015-01-19 16:22:18 · 455 阅读 · 0 评论 -
zookeeper分布式锁(五)
为了编写可靠的分布式锁操作,我们阐述下两个概念:1、非“幂等”操作:“幂等”操作指操作的结果不会因重复执行同样操作的次数不同而不同。不如http的get方法;而非“幂等”操作如http的post方法;2、“羊群效应”所谓的羊群效应指服务器集群的大部分节点都接收消息,而只有小部分节点才进行响应。当然,“羊群效应”最直接的结果就是增加了集群的载荷。因此我们在定义“分布式锁”的时原创 2015-01-19 15:00:00 · 530 阅读 · 0 评论 -
zookeeper分布式锁(十二)
WriteLock:public class WriteLock extends ProtocolSupport { private static final Logger LOG = LoggerFactory.getLogger(WriteLock.class); private final String dir; private String id;原创 2015-01-19 16:27:07 · 652 阅读 · 0 评论 -
zookeeper分布式锁
zookeeper作为一个高可用的分布式服务(hadoop in action),可以被借助用来快捷的构建企业级的“分布式锁”服务。“分布式锁”服务可以被用来实现“领导者选举”等服务。持有锁的进程作为领导者,可以进行写操作,在领导者“死亡”后系统能快速的选举出新的“领导者”。原创 2015-01-19 14:10:33 · 510 阅读 · 0 评论 -
zookeeper分布式锁(二)
重试操作在捕捉到“可恢复”异常的时候,往往需要delay后重试操作。这里我们定义一个方法:retryOperation()这个方法的访问级别是"protected",参数是ZooKeeperOperation对象,ZookeeperOperation对象的定义如下:public interface ZooKeeperOperation { public bool原创 2015-01-19 14:26:09 · 855 阅读 · 1 评论 -
zookeeper分布式锁(十一)
ZNodeName:class ZNodeName implements Comparable { private final String name; private String prefix; private int sequence = -1; private static final Logger LOG = LoggerFactory.get原创 2015-01-19 16:26:01 · 543 阅读 · 0 评论 -
zookeeper分布式锁(八)
从本节,我将分五章贴出相应的源码:业务回调接口(LockListener)、协议支持父类(ProtocolSupport)、节点操作接口(ZookeeperOperation)、节点(ZNodeName)、锁(WriteLock)LockListener:public interface LockListener { /** * call back cal原创 2015-01-19 16:20:49 · 594 阅读 · 0 评论 -
zookeeper分布式锁(六)
非“幂等”操作:创建节点zookeeper分布式锁(五)我们讲解了“幂等”和“非幂等”操作。本节,我们将通过创建节点这个非“幂等”操作来创建对应方法。我们通过在节点名称中添加UUID来标示唯一节点,这里我们用zookeeper的sessionid代替。我们定义方法findPrefixInChildren()。findPrefixInChildren()方法的访问权限是“priv原创 2015-01-19 15:13:54 · 570 阅读 · 0 评论 -
zookeeper分布式锁(三)
我们在写程序的时候往往假设“网络是可靠的”,这是不可靠的。因此我们才在上一章节定义了“retryOperation()”方法,当在执行操作的时候,假如遇到了类似于“lossConnection”等异常的时候能够在区分“幂等”和“非幂等”操作的前提下执行相应的措施。本节我们将讲解“retryOperation()”方法的第一次应用:创建节点我们定义“ensureExists()”方法原创 2015-01-19 14:36:38 · 506 阅读 · 0 评论 -
zookeeper——分布式锁
我们可以把zookeeper看做是一个高可用的分布式文件系统。借助于zookeeper的特性,我们可以很方便的实现分布式的一些服务其中典型的应用场景有:服务配置、分布式锁和分布式队列。本节,我会讲解分布式锁的实现。我们借助于zk的短暂有序节点(EPHEMERAL_SEQUENTIAL)和zk的消息通知机制实现分布式锁。分布式锁的一般实现算法是:1、在锁znode节点下创建名为l原创 2015-04-02 10:35:16 · 1287 阅读 · 1 评论