curator 分布式计数器功能

分布式计数器功能:

一说到分布式计数器,你可能脑海里想到了AtomicInteger这种经典的方式如果针对于一个ivm的场景当然没有问题,但是我们现在是分布式场景下,就需要利用Curator框架的DistributedAtomicInteger了 (例如统计访问网站的人数,从不同的Tomcat访问)

package bjsxt.curator.atomicinteger;

import org.apache.curator.RetryPolicy;

import org.apache.curator.framework.CuratorFramework;

import org.apache.curator.framework.CuratorFrameworkFactory;

import org.apache.curator.framework.recipes.atomic.AtomicValue;

import org.apache.curator.framework.recipes.atomic.DistributedAtomicInteger;

import org.apache.curator.retry.ExponentialBackoffRetry;

import org.apache.curator.retry.RetryNTimes;

public class CuratorAtomicInteger {

/** zookeeper地址 */

static final String CONNECT_ADDR = "192.168.1.171:2181,192.168.1.172:2181,192.168.1.173:2181";

/** session超时时间 */

static final int SESSION_OUTTIME = 5000;//ms

public static void main(String[] args) throws Exception {

//1 重试策略:初试时间为1s 重试10次

RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 10);

//2 通过工厂创建连接

CuratorFramework cf = CuratorFrameworkFactory.builder()

.connectString(CONNECT_ADDR)

.sessionTimeoutMs(SESSION_OUTTIME)

.retryPolicy(retryPolicy)

.build();

//3 开启连接

cf.start();

//cf.delete().forPath("/super");

//4 使用DistributedAtomicInteger  这个值不随着对象的实例化而实例化的,

//

//RetryPolicy:这个时定义重试机制,上面设置可以解析为重试3次,重试的间隔时间1s

DistributedAtomicInteger atomicIntger =

new DistributedAtomicInteger(cf, "/super", new RetryNTimes(3, 1000));

// atomicIntger.offset(0) 重置 0

//atomicIntger.increament(); 加1

//atomicIntger.decreament(); 减 1

AtomicValue<Integer> value = atomicIntger.add(1);

System.out.println(value.succeeded());

System.out.println(value.postValue()); //最新值

System.out.println(value.preValue()); //原始值

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JAVA代码搬运工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值