package cc.zeelan.framework;

import java.lang.management.ManagementFactory;

import java.net.InetAddress;

import java.net.NetworkInterface;

/**

*

名称:IdWorker.java

*

描述:分布式自增长ID

*

* Twitter的 Snowflake JAVA实现方案

*

* 核心代码为其IdWorker这个类实现,其原理结构如下,我分别用一个0表示一位,用—分割开部分的作用:

* 1||0---0000000000 0000000000 0000000000 0000000000 0 --- 00000 ---00000 ---000000000000

* 在上面的字符串中,第一位为未使用(实际上也可作为long的符号位),接下来的41位为毫秒级时间,

* 然后5位datacenter标识位,5位机器ID(并不算标识符,实际是为线程标识),

* 然后12位该毫秒内的当前毫秒内的计数,加起来刚好64位,为一个Long型。

* 这样的好处是,整体上按照时间自增排序,并且整个分布式系统内不会产生ID碰撞(由datacenter和机器ID作区分),

* 并且效率较高,经测试,snowflake每秒能够产生26万ID左右,完全满足需要。

*

* 64位ID (42(毫秒)+5(机器ID)+5(业务编码)+12(重复累

java id自增_Java分布式自增长ID实现方案相关推荐

  1. snowflake分布式自增长id的java实现

    snowflake(雪花算法)是Twitter开源的分布式ID生成算法,结果是一个long型的ID.这种方案把64-bit分别划分成多段,分开来标示机器.时间等.如图: 其核心思想是:使用41bit作 ...

  2. java 唯一id生成算法_分布式全局唯一ID生成方案之snowflake算法

    已有的方案: 可大致分为: 完全依赖关系/非关系型数据库递增的方案 完全不依赖数据源作为生成因子的UUID 半依赖数据源作为生成因子的snowflake 为什么推荐snowflake? 这个问题,可以 ...

  3. java 字母自增_java创建字母自增的方法

    前言:不知咋的脑袋抽筋的想到数字可以直接自增成序列要是字母呢该怎么增加 aaa aab aac aad aae aaf aag aah aai aaj aak??于是就有了下面的代码 要是大神们有简介 ...

  4. mybatis-plus设置id自增,插入数据。

    mybatis-plus设置id自增,插入数据 没修改前 没修改前 这是我的实体类. @Data @AllArgsConstructor @NoArgsConstructor @ToString pu ...

  5. MyBatis获取自增长ID

    官方文档:http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html#insert_update_and_delete 在使用关系型数据库MySQL.SQL ...

  6. java id主键_JAVA主键ID生成工具类:改自twitter的分布式ID算法snowflake

    祝大家新年快乐,有任何问题可与我联系: 关于snowflake算法的介绍和原理这里不过多说明了,网上有很多. 这里简单描述下SnowflakeUtil的优点: 1.做为底层工具使用,可用于数据库主键. ...

  7. 最新高频Java面试题目分享,分布式ID(数据库多主模式

    三.号段模式 我们可以使用号段的方式来获取自增ID,号段可以理解成批量获取,比如DistributIdService从数据库获取ID时,如果能批量获取多个ID并缓存在本地的话,那样将大大提供业务应用获 ...

  8. java 自定义自增_自定义全局自增ID生成器

    看了网上很多生成自增ID的策略,最终给出的都是雪花算法,leaf算法.但是却没有满足咱们对于自定义生成规则的需求. 在业务上有一部分ID往往是有规则的,比如某个产品的订单号往往是"产品标志+ ...

  9. java id生成器 分布式_分布式高效唯一ID生成器(sequence)

    分布式高效唯一ID生成器(sequence) 简介 高效GUID产生算法(sequence),基于Snowflake实现64位自增ID算法. Twitter-Snowflake算法产生的背景相当简单, ...

最新文章

  1. 我们期待的TensorFlow 2.0还有哪些变化?
  2. iKair:放弃硬件制造,切入上游去“送水”的逻辑
  3. 【hiho】38 二分·二分答案【二分答案】
  4. 【JAVA并发编程实战】1、对象的共享
  5. 统计HDFS文件数量,大小,以及在某范围大小的文件数量
  6. 51nod1255【贪心-栈的应用】
  7. jQuery控制表单重置
  8. 重磅︱R+NLP:text2vec包——New 文本分析生态系统 No.1(一,简介)
  9. matplotlib -plt.rcparams.update
  10. linux修改ip配置文件_SSH连接Linux主机进行开发
  11. 什么是BT1120协议
  12. 解决FireFox(火狐浏览器)占用资…
  13. JavaScript基础入门
  14. [FineReport]高级条件分组、斜线、自动查询、控件编辑属性、条件属性
  15. python控制手机模拟器_Appium+python自动化之连接模拟器并启动淘宝APP(超详解)...
  16. cygwin 使用 zsh
  17. 腾讯企业邮箱OpenApi调用说明
  18. 【Multisim仿真】TL494电路仿真 DC转DC 5V 1A输出
  19. win7 64位系统PSD缩略图补丁预览PSD Mystic Thumbs免费版
  20. 【连载】《linux入门很简单》电子版——作者:刘金鹏(第一章初来乍到——抵达)...

热门文章

  1. android静态动画,LayoutAnimation给ListView中的item设置动态出场效果(实例)
  2. [JSOI2008]Blue Mary的战役地图
  3. C# 序列化技术详解《转》
  4. 推荐一个很好的富文本web编辑器UEditor
  5. 1.4 Arithmetic Progressions
  6. asp.net中通过HyperLinkField传值
  7. oracle给表赋清空权限,oracle建表赋权限
  8. 微课|中学生可以这样学Python(例4.2):打印九九乘法表
  9. 封装Python列表实现多下标访问
  10. java迷宫_java实现迷宫算法--转