java sequence 生成器_分布式高效唯一ID生成器(sequence)
分布式高效唯一ID生成器(sequence)
简介
高效GUID产生算法(sequence),基于Snowflake实现64位自增ID算法。
Twitter-Snowflake算法产生的背景相当简单,为了满足Twitter每秒上万条消息的请求,每条消息都必须分配一条唯一的id,这些id还需要一些大致的顺序(方便客户端排序),并且在分布式系统中不同机器产生的id必须不同。
性能测试数据:
Snowflake算法核心
把时间戳,工作机器id,序列号组合在一起。
除了最高位bit标记为不可用以外,其余三组bit占位均可浮动,看具体的业务需求而定。默认情况下41bit的时间戳可以支持该算法使用到2082年,10bit的工作机器id可以支持1023台机器,序列号支持1毫秒产生4095个自增序列id。下文会具体分析。
Snowflake – 时间戳
这里时间戳的细度是毫秒级,具体代码如下,建议使用64位linux系统机器,因为有vdso,gettimeofday()在用户态就可以完成操作,减少了进入内核态的损耗。
Snowflake – 工作机器id
严格意义上来说这个bit段的使用可以是进程级,机器级的话你可以使用MAC地址来唯一标示工作机器,工作进程级可以使用IP+Path来区分工作进程。如果工作机器比较少,可以使用配置文件来设置这个id是一个不错的选择,如果机器过多配置文件的维护是一个灾难性的事情。
Snowflake – 序列号
序列号就是一系列的自增id(多线程建议使用atomic),为了处理在同一毫秒内需要给多条消息分配id,若同一毫秒把序列号用完了,则“等待至下一毫秒”。
获取
cn.izern
sequence
${version}
使用
import cn.izern.sequence.Sequence;
Sequence sequence = new Sequence();
sequence.nextId();
线程安全,生成唯一序列ID
hibernate/jpa 使用Sequence作为ID生成方式
private Long id;
// other
@Id
@GeneratedValue(generator = "idGenerator")
@GenericGenerator(name = "idGenerator", strategy = "cn.izern.hibernate.id.IDSequenceGenerator")
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
java sequence 生成器_分布式高效唯一ID生成器(sequence)相关推荐
- java id生成器 分布式_分布式高效唯一ID生成器(sequence)
分布式高效唯一ID生成器(sequence) 简介 高效GUID产生算法(sequence),基于Snowflake实现64位自增ID算法. Twitter-Snowflake算法产生的背景相当简单, ...
- java 唯一id生成算法_分布式全局唯一ID生成方案之snowflake算法
已有的方案: 可大致分为: 完全依赖关系/非关系型数据库递增的方案 完全不依赖数据源作为生成因子的UUID 半依赖数据源作为生成因子的snowflake 为什么推荐snowflake? 这个问题,可以 ...
- 分布式全局唯一 ID生成器(百度UidGenerator)
文章目录 为什么要使用全局ID生成器? 使用UUID作为主键? 使用数据库主键自增? UidGenerator简介 雪花算法snowflake SpringBoot整合百度UidGenerator 为 ...
- 分布式「唯一ID生成器」的几种生成方案
前言 在互联网的业务系统中,涉及到各种各样的ID,如在支付系统中就会有支付ID.退款ID等.那一般生成ID都有哪些解决方案呢?特别是在复杂的分布式系统业务场景中,我们应该采用哪种适合自己的解决方案是十 ...
- 雪花算法之唯一ID生成器理解
雪花算法基本情况 雪花算法是一个分布式的唯一ID生成器. 它应该具有高并发,以及高性能优点. 基于时间戳,ID具有有序性,同时分布式下机器间时间差异过大(类似同一台机器时间回拨,一定会重复),会导致重 ...
- 唯一ID生成器snowflake
分布式全局唯一ID生成器 很多场景需要使用全局唯一ID,用来标识唯一一条消息,唯一一笔交易,唯一一个用户,唯一一张图片等等. 传统数据库表的自增主键是很简单的一种实现方式,前提是你没有分库,也没有分表 ...
- 百度开源的分布式唯一ID生成器UidGenerator,解决了时钟回拨问题
转载自 百度开源的分布式唯一ID生成器UidGenerator,解决了时钟回拨问题 UidGenerator是百度开源的Java语言实现,基于Snowflake算法的唯一ID生成器.而且,它非常适 ...
- php id 生产器,Laravel 分布式唯一 ID 生成器运用_PHP开发框架教程
在运用程序中,常常须要全局唯一的ID作为数据库主键.怎样生成全局唯一ID? 起首,须要肯定全局唯一ID是整型照样字符串?假如是字符串,那末现有的UUID就完整满足需求,不须要分外的事情.瑕玷是字符串作 ...
- 百度开源的一款分布式高性能的唯一ID生成器,非常强大!
来源:https://lilinchao.com/archives/1226.html 一.UidGenerator是什么 UidGenerator是百度开源的一款分布式高性能的唯一ID生成器,是基于 ...
- SnowFlake唯一ID生成器
写在前面 架构是权衡的结果,架构也是一层层的组件拼接起来的,如果没有好用的组件,架构势必会做阉割,架构的理想态是建立在一堆友好.易用.标准化的组件之上的.在我过去的经验中,有两类组件经常会出现在我的架 ...
最新文章
- 【设计模式】三大类:创建型模式、结构型模式、行为型模式
- IE二级链接无法打开
- 从3个科技公司里学到的57条经验(转)
- jquery 进行dom操作
- docker 之volume
- 35岁老半路程序员的Python从0开始之路
- 简单的C语言开源软件,自己写的一个简单的数据库...完整开源...
- List<T>和List<?>的区别
- Java基础篇:加入带自变量的方法
- 深掘工业互联网大数据五大维度
- 基于Systemview的巴克码识别器设计
- 预卷积HDR环境贴图
- sd卡驱动分析 linux,linux下SD卡驅動分析(一)
- NAT技术及NAT ALG
- 单片空间后方交会程序c语言,摄影测量实习报告-单片空间后方交会
- windows笔记本查看电池损耗
- CTFweb篇——html源代码签到题
- 《数据库系统概论》知识整理
- webService--java
- 好嗨游戏:战火重燃!2019LPL夏季赛精彩看点全盘点! || 附夏季赛赛程表
热门文章
- 基于python版本的谷歌GEE云计算平台使用,以DEM数据下载为例(GEE系列1)
- SQL server 2017安装教程
- 电脑虎牙,虎牙助手主播版电脑版
- [算法]PRML学习笔记1.2.3贝叶斯概率论
- ktv娱乐收银系统java_美萍餐饮娱乐管理系统(歌厅管理软件,管理软件,收银系统,管理系统,娱乐收银软件)...
- 会计计算机学什么软件有哪些,会计一般要学什么软件
- 2021大树分享收集的网盘搜索站给兄弟们
- 计算思维在计算机科学中的应用,计算思维在离散数学中的应用.pdf
- AI电话机器人源码买断 后私有云部署如何上线?
- java jpa面试题_jpa面试题解析,java面试题