Zookeeper全局唯一ID生成方案解析
系统唯一ID生成分案有很多种,例如:数据库 auto_increment,UUID,Redis生成ID(Redis原子操作INCR和INCRBY),Twiitter的snowflake算法,ZooKeeper生成ID,MongoDb的ObjectId,下面我们就看一下ZooKeeper实现分布式系统唯一ID。
public int idGen() throws Exception {
String zkAddress = "127.0.0.1:2181";
String idNode = "/id";
//重试策略
RetryPolicy retry = new RetryNTimes(3, 2000);
//创建连接客户端
CuratorFramework client = CuratorFrameworkFactory.builder().
connectString(zkAddress).
sessionTimeoutMs(5000).
connectionTimeoutMs(10000).
retryPolicy(retry).
build();
//启动客户端
client.start();
if (null == client.checkExists().forPath(idNode)) {
client.create().withMode(CreateMode.PERSISTENT)
.forPath(idNode);
}
Stat stat = client.setData().withVersion(-1).forPath(idNode);
return stat.getVersion();
}
注意:换了ZooKeeper,数据就要从0开始,还没有直接可以修改指定数字那里开始,只能写程序一点点的创建,直到达到你要想的数据 ,这是它最大的弊端。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
史上最便捷搭建Zookeeper服务器的方法(推荐)
什么是 ZooKeeper ZooKeeper 是 Apache 的一个顶级项目,为分布式应用提供高效.高可用的分布式协调服务,提供了诸如数据发布/订阅.负载均衡.命名服务.分布式协调/通知和分布式锁等分布式基础服务.由于 ZooKeeper 便捷的使用方式.卓越的性能和良好的稳定性,被广泛地应用于诸如 Hadoop.HBase.Kafka 和 Dubbo 等大型分布式系统中. Zookeeper 有三种运行模式:单机模式.伪集群模式和集群模式. 单机模式:这种模式一般适用于开发测试环境,一方面
-
viper配置框架的介绍支持zookeeper的读取和监听
viper作为配置框架,其功能非常的强大,我们没有理由不去了解一下.我们先看官网对它的功能简介: viper是完整配置解决方案,他可以处理所有类型和格式的配置文件,他有如下功能: 设置默认配置 支持读取 JSON TOML YAML HCL 和 Java 属性配置文件 监听配置文件变化,实时读取读取配置文件内容 读取环境变量值 读取远程配置系统 (etcd Consul) 和监控配置变化 读取命令 Flag 值 读取 buffer 值 读取确切值 乍一看,未免有相见恨晚之感,可仔细一想,不免脑袋
-
2020最新IDEA SpringBoot整合Dubbo的实现(zookeeper版)
首先,要在电脑上安装配置好zookeeper哦~ 这是我云服务器上的zookeeper状态 接下来,开始整合 1. 准备一个dubbo-api的SpringBoot项目 用来存储Entity类和Server接口的项目,配置文件无须改动. entity – User // Lombok注解 相当于Setter Getter toString() @Data public class User implements Serializable { // 序列化很重要!!! private static
-
在Java中操作Zookeeper的示例代码详解
依赖 <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.6.0</version> </dependency> 连接到zkServer //连接字符串,zkServer的ip.port,如果是集群逗号分隔 String connectStr = "192.
-
Docker下安装zookeeper(单机和集群)
启动Docker后,先看一下我们有哪些选择. 有官方的当然选择官方啦~ 下载: [root@localhost admin]# docker pull zookeeper Using default tag: latest Trying to pull repository docker.io/library/zookeeper ... latest: Pulling from docker.io/library/zookeeper 1ab2bdfe9778: Already exists 7a
-
Docker搭建Zookeeper&Kafka集群的实现
最近在学习Kafka,准备测试集群状态的时候感觉无论是开三台虚拟机或者在一台虚拟机开辟三个不同的端口号都太麻烦了(嗯..主要是懒). 环境准备 一台可以上网且有CentOS7虚拟机的电脑 为什么使用虚拟机?因为使用的笔记本,所以每次连接网络IP都会改变,还要总是修改配置文件的,过于繁琐,不方便测试.(通过Docker虚拟网络的方式可以避免此问题,当时实验的时候没有了解到) Docker 安装 如果已经安装Docker请忽略此步骤 Docker支持以下的CentOS版本: CentOS 7 (64
-
SpringBoot系列教程之dubbo和Zookeeper集成方法
今日学习新的内容:dubbo dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,一款高性能.轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现. zookeeper zooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护.域名服务.分布式同步.组服务等. SpringBoot整合dubbo和Zookeeper 1.了解Dubbo基本
-
Python通过zookeeper实现分布式服务代码解析
借助zookeeper可以实现服务器的注册与发现,有需求的时候调用zookeeper来发现可用的服务器,将任务均匀分配到各个服务器上去. 这样可以方便的随任务的繁重程度对服务器进行弹性扩容,客户端和服务端是非耦合的,也可以随时增加客户端. zk_server.py import threading import json import socket import sys from kazoo.client import KazooClient # TCP服务端绑定端口开启监听,同时将自己注册到z
-
Java zookeeper图形化工具ZooInspector用法详解
一.在window,使用我们先打开Zookeeper,目录bin下的zkServer.cmd,把Zookeeper运行起来 二.可以使用目录bin下的zkCli.cmd,查询Zookeeper数据的方式,但是不够直观,比较乱 三.ZooInspector的使用 1.下载https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip: 2.运行zookeeper-dev-ZooInspector.jar 1 >解
-
SpringBoot中dubbo+zookeeper实现分布式开发的应用详解
总体实现思路是启动一个生产者项目注册, 将所含服务注册到zookeeper的注册中心, 然后在启动一个消费者项目,将所需服务向zookeeper注册中心进行订阅, 等待注册中心的通知 注册中心基于负载均衡算法给消费者匹配到合适的生产者主机,然后通知消费者可以使用 实现生产者 导入zookeeper依赖包 <!-- Dubbo Spring Boot Starter --> <dependency> <groupId>org.apache.dubbo</groupI
随机推荐
- 在html中插入mpg格式视频文件的代码
- IOS实战之自定义转场动画详解
- 如何远程读取数据库页面?
- vue项目中做编辑功能传递数据时遇到问题的解决方法
- java实现将ftp和http的文件直接传送到hdfs
- phpmyadmin提示The mbstring extension is missing的解决方法
- python进阶教程之词典、字典、dict
- 关于jsp中cookie丢失问题(详解)
- c语言算术运算符越界问题解决方案
- 原生js实现addClass,removeClass,hasClass方法
- PHP聊天室技术
- JavaScript获取URL汇总
- Python中你应该知道的一些内置函数
- 解决Windows 10家庭版安装SQL Server 2014出现.net 3.5失败问题
- 使用JS代码实现点击按钮下载文件
- Javascript中的getUTCDay()方法使用详解
- Flash(xml)友情连接提供 下载
- python目录与文件名操作例子
- ASP.NET实现多域名多网站共享Session值的方法
- C#实现向函数传递不定参数的方法
