对于Thrift服务化的改造,主要是客户端,可以从如下几个方面进行: 1.服务端的服务注册,客户端自动发现,无需手工修改配置,这里我们使用zookeeper,但由于zookeeper本身提供的客户端使用较为复杂,因此采用curator-recipes工具类进行处理服务的注册与发现。 2.客户端使用连 ...
分类:
数据库 时间:
2016-04-06 15:15:28
阅读次数:
810
curator是Netflix公司开源的一套ZooKeeper客户端,Curator解决了很多ZooKeeper客户端非常底层的细节开发工作。包括连接重连,反复注册Watcher等。实现了Fluent风格的API接口,目前已经为Apache的顶级项目,是全世界使用最广泛的ZooKeeper客户端之一
ZooKeeper(3.4.5) 使用Curator监听事件package com.huey.dream.demo;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import org...
分类:
其他好文 时间:
2016-01-18 17:31:14
阅读次数:
180
Curator也提供ZK Recipe的分布式队列实现。利用ZK的 PERSISTENTSEQUENTIAL节点,可以保证放入到队列中的项目是按照顺序排队的。如果单一的消费者从队列中取数据,那么它是先入先出的,这也是队列的特点。如果你严格要求顺序,你就得使用单一的消费者,可以使用leader选举只让...
分类:
其他好文 时间:
2015-11-10 00:18:05
阅读次数:
954
使用Curator也可以简化Ephemeral Node (临时节点)的操作。临时节点驻存在ZooKeeper中,当连接和session断掉时被删除。比如通过ZooKeeper发布服务,服务启动时将自己的信息注册为临时节点,当服务断掉时ZooKeeper将此临时节点删除,这样client就不会得到服...
分类:
其他好文 时间:
2015-11-06 15:59:22
阅读次数:
1446
这一篇文章我们将学习使用Curator来实现计数器。顾名思义,计数器是用来计数的,利用ZooKeeper可以实现一个集群共享的计数器。只要使用相同的path就可以得到最新的计数器值,这是由ZooKeeper的一致性保证的。Curator有两个计数器,一个是用int来计数,一个用long来计数。1.S...
分类:
其他好文 时间:
2015-11-06 11:12:48
阅读次数:
247
分布式Barrier是这样一个类: 它会阻塞所有节点上的等待进程,知道某一个被满足, 然后所有的节点继续进行。 比如赛马比赛中, 等赛马陆续来到起跑线前。 一声令下,所有的赛马都飞奔而出。1.栅栏Barrier1.DistributedBarrier类说明DistributedBarrier类实现了...
分类:
其他好文 时间:
2015-11-04 22:48:50
阅读次数:
362
锁:分布式的锁全局同步,这意味着任何一个时间点不会有两个客户端都拥有相同的锁。1.可重入锁Shared Reentrant Lock 首先我们先看一个全局可重入的锁(可以多次获取,不会被阻塞)。Shared意味着锁是全局可见的,客户端都可以请求锁。Reentrant和JDK的ReentrantLoc...
分类:
其他好文 时间:
2015-11-02 23:10:25
阅读次数:
451
在分布式计算中,leader election是很重要的一个功能,这个选举过程是这样子的:指派一个进程作为组织者,将任务分发给各节点。在任务开始前,哪个节点都不知道谁是leader或者coordinator。当选举算法开始执行后,每个节点最终会得到一个唯一的节点作为任务leader。除此之外,选举还...
分类:
其他好文 时间:
2015-11-02 17:34:35
阅读次数:
1540
Recipes组件包含了丰富的Curator应用的组件。但是这些并不是ZooKeeper Recipe的全部。大量的分布式应用已经抽象出了许许多多的的Recipe,其中有些还是可以通过Curator来实现。 如果不断都将这些Recipe都增加到Recipes中,Recipes会变得越来越大。为了避免...
分类:
其他好文 时间:
2015-11-02 00:10:21
阅读次数:
357