[发明专利]全局唯一ID结构及生成方法在审
申请号: | 201711094095.8 | 申请日: | 2017-11-08 |
公开(公告)号: | CN107864233A | 公开(公告)日: | 2018-03-30 |
发明(设计)人: | 张国勇;蒋文倩 | 申请(专利权)人: | 千寻位置网络有限公司 |
主分类号: | H04L29/12 | 分类号: | H04L29/12 |
代理公司: | 上海市海华永泰律师事务所31302 | 代理人: | 包文超 |
地址: | 200433 上海市杨浦*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 全局 唯一 id 结构 生成 方法 | ||
技术领域
本发明涉及数据处理技术领域,具体涉及一种全局唯一ID生成方法。
背景技术
全局唯一ID值产生的背景是为了满足记录全局唯一订单、支付的流水号。每个流水号必须分配一条唯一的ID,而且需要有一定的顺序,方便客户端排序;并且在分布式系统中不同的机器产生的ID必须唯一,支持高并发,每秒能产生足够多的全局唯一ID;全局唯一ID要带有时间标识,方便判断序号的生成时间。
电商系统中通常需要生成如订单号、支付的流水号等这样的全局唯一ID,要求毫秒级的快速响应,生的的ID有连续性且体积小(8字节为最佳),且不同的机房,服务器,同一时间仍然能够保持全局唯一。常规的生成方式如java自带的生成全局唯一ID的方式UUID(Universally Unique IDentifier,通用唯一识别码)有16字节,占用空间大。本发明借鉴twitter的策略,但摒弃ZK等机制,单机启动时初始化,从数据库/配置中心获取属于自己的工作机器ID(即,机房ID和机器ID),此后再也无须和配置中心打交道,完全基于本机的算法生产序号。
Twitter Snowflake生成的唯一ID为8字节,其中包括1bit的符号位,41bit的毫秒时间,10bit的机房ID和机器ID,12bit的时间戳,把时间戳,工作机器ID,序列号组合在一起,虽然可用性强,速度快,但其中的机房ID和机器ID需要要worker启动时从zookeeper中获取,需要引入zookeeper和独立的snowflake专用的服务器。
Twitter Snowflake方案中为保证机器ID的唯一性,在Worker启动的时候对外部有依赖(需要从Zookeeper获取唯一Worker号),因此使用Twitter Snowflake获取唯一序列号,需要搭建Zookeeper集群。
发明内容
本发明解决了以下技术问题:
1、产生的ID全局唯一,不同的机器产生的ID也不能重复;
2、分布式;
3、支持高并发,每秒能产生足够多的ID;
4、ID有序,方便客户端排序等;
5、可扩展,支持生成策略调整;
6、可持续,能支撑未来数年的全局唯一ID的生成;
7、高性能;
8、带有时间标识,能定位全局唯一ID的生成时间。
为了解决上述技术问题,本发明采用以下技术方案:
一种全局唯一ID结构,包括首位、时间戳、工作机器ID和序号,其中首位有1位,时间戳有41位,工作机器ID有10位,序号有12位,所述工作机器ID包括机房ID和机器ID。
进一步地,所述首位为0,为保持产生用户ID的自增特性。
进一步地,所述10位工作机器ID中5位保存机房ID,5位保存机器ID。
一种全局唯一ID生成方法,包括以下步骤:
步骤1,工作ID分配器提前录入机器IP;
步骤2,单机启动初始化时,从工作ID分配器获取当前机器IP以及机器IP与机房ID、机器ID的对应列表,得到当前机器唯一的机房ID和机器ID;
步骤3,基于单机的算法生成序号;
步骤4,获取当前毫秒数,减去基准时间,得到时间毫秒数;
步骤5,生成当前毫秒数下的序号,如果序号超过当前最大数,则获取下一毫秒数;
步骤6,将获取的下一毫秒数左移22位,机房ID左移17位,机器ID左移12位之后再与序号按位或,生成全局唯一ID。
进一步地,所述工作ID分配器包括数据库或者配置中心。
进一步地,通过调整机房ID和机器ID来调整所述全局唯一ID生成方法。
本发明的有益效果在于,单机启动初始化时,从数据库/配置中心获取属于自己的工作机器ID,此后再也无须和配置中心打交道,完全基于本机的算法生产序号。考虑到数据库/配置中心在业务中一定会使用到,因此本发明并不需要额外的开销。
附图说明
图1是全局唯一ID结构图。
图2是工作ID分配器分配工作机器ID示意图。
具体实施方式
本发明提供了一种全局唯一ID结构及生成方法,单机启动初始化时,从数据库/配置中心获取属于自己的机房ID和机器ID,此后再也无须和配置中心打交道,完全基于本机的算法生产序号。此方式不需要搭建Zookeeper集群,减少了生成全局唯一ID的成本。下文中,结合附图和实施例对本发明作进一步阐述。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于千寻位置网络有限公司,未经千寻位置网络有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711094095.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:表项处理方法及装置
- 下一篇:地址续约时间的获取方法及装置