当前位置: 首页 > news >正文

中国住房和城乡建设部建造师网站设计工作网站

中国住房和城乡建设部建造师网站,设计工作网站,优化型网站是模板,网站利于搜索1. 分布式ID生成器的使用场景 在分布式系统中,分布式ID生成器的使用场景非常之多: 大量的数据记录,需要分布式ID。大量的系统消息,需要分布式ID。大量的请求日志,如restful的操作记录,需要唯一标识&#x…

1. 分布式ID生成器的使用场景

        在分布式系统中,分布式ID生成器的使用场景非常之多

  • 大量的数据记录,需要分布式ID。
  • 大量的系统消息,需要分布式ID。
  • 大量的请求日志,如restful的操作记录,需要唯一标识,以便进行后续的用户行为分析和调用链路分析。
  • 分布式节点的命名服务,往往也需要分布式ID。
  • ......

        传统的数据库自增主键已经不能满足需求。在分布式系统环境中,需要一种全新的唯一ID系统,这种系统需要满足以下需求:

(1)全局唯一:不能出现重复ID。

(2)高可用:ID生成系统是基础系统,被许多关键系统调用,一旦宕机,就会造成严重影响。

2. 分布式的ID生成器方案

        生成分布式ID的方案有哪些呢? 大概有以下几种方案

  • Java的UUID。
  • 分布式缓存Redis生成ID:利用Redis的原子操作INCR和INCRBY,生成全局唯一的ID。
  • Twitter的SnowFlake算法。
  • ZooKeeper生成ID:利用ZooKeeper的顺序节点,生成全局唯一的ID。
  • MongoDb的ObjectId:MongoDB是一个分布式的非结构化NoSQL数据库,每插入一条记录会自动生成全局唯一的一个“_id”字段值,它是一个12字节的字符串,可以作为分布式系统中全局唯一的ID。

3. Zookeeper实现分布式ID生成器

        接下来,我们可以通过创建ZooKeeper的临时顺序节点的方法,生成全局唯一的ID。

代码:

public class IDMaker {private final static  String CLUSTER_CONNECT_STR="192.168.31.5:2181,192.168.31.176:2181,192.168.31.232:2181";private static String createSeqNode(String pathPefix,CuratorFramework curatorFramework) throws Exception {//创建一个临时顺序节点String destPath = curatorFramework.create().creatingParentsIfNeeded().withMode(CreateMode.EPHEMERAL_SEQUENTIAL).forPath(pathPefix);return destPath;}public static String  makeId(String path,CuratorFramework curatorFramework) throws Exception {String str = createSeqNode(path,curatorFramework);if(null != str){//获取末尾的序号int index = str.lastIndexOf(path);if(index>=0){index+=path.length();return index<=str.length() ? str.substring(index):"";}}return str;}public static void main(String[] args) throws InterruptedException {//构建客户端实例CuratorFramework curatorFramework= CuratorFrameworkFactory.builder().connectString(CLUSTER_CONNECT_STR).retryPolicy(new ExponentialBackoffRetry(1000,3)) // 设置重试策略.build();//启动客户端curatorFramework.start();String pathPrefix = "/idmarker/id-";//模拟5个线程创建idfor(int i=0;i<5;i++){new Thread(()->{for (int j=0;j<10;j++){String id = null;try {id = makeId(pathPrefix,curatorFramework);System.out.println("线程{"+Thread.currentThread().getName()+"}第{"+j+"}次创建id为{"+id+"}");} catch (Exception e) {e.printStackTrace();}}},"thread"+i).start();}Thread.sleep(Integer.MAX_VALUE);}}

运行main方法:运行结果

http://www.yayakq.cn/news/35884/

相关文章:

  • 邢台网站建设公司排名app运营专员
  • 网站建设培训机构秦皇岛吧 百度贴吧
  • 教育网站建设 飞沐做网站接单
  • xampp做网站可以吗wordpress手机单页面
  • 自己做网站申请域名购物网站的设计思路
  • 网站用哪些系统做的好百度权重9的网站
  • 电脑怎么做最新系统下载网站做视频网站要多少钱
  • 卖服务器建网站公司开通网站
  • 杭州企业画册设计公司网站建设优化方法
  • 造价网站如乐网站
  • 建设小说网站小说源从哪方面建设网站
  • 一家做土产网站网站建设对于企业发展的优势
  • 深圳做专业网站天津网站建设方案外包
  • 网站建设的工作视频人的吗网站建设策划公司
  • 青州网站建设qzfuwu绵阳做网站的有哪些
  • 协会网站建设方案书七牛云可以做网站的存储空间吗
  • 合肥公司建设网站做互联网营销一般上什么网站
  • 太原建设北路小学网站百度百科网站怎么做
  • 网站平台搭建要多少钱重庆旅游攻略详细安排
  • 国外有名的设计网站z怎么建设视频网站
  • 哈尔滨做网站收费中国建设很行河北省分行合作网站
  • tp5企业网站开发视频宁津华企动力做网站的电话多少
  • 建造网站需要什么场口一站式建站哪家公司好
  • 北京安慧桥网站建设世界500强排名
  • 关于电视剧的网站设计网页自己做的网站打不开了
  • 招聘网站怎么做吸引人智能网站建设推荐
  • 网站建设在哪里进行心理咨询在线免费咨询
  • 外贸网站建设规划做坏事小视频网站
  • 高端的网站优化公司全网营销网站建设
  • pc网站建设费用湖北网络广播电视台