[发明专利]一种生成及使用分布式唯一ID的方法在审
申请号: | 201810039637.X | 申请日: | 2018-01-16 |
公开(公告)号: | CN108322222A | 公开(公告)日: | 2018-07-24 |
发明(设计)人: | 李熊发 | 申请(专利权)人: | 四川斐讯信息技术有限公司 |
主分类号: | H03M7/40 | 分类号: | H03M7/40;G06F17/30 |
代理公司: | 上海硕力知识产权代理事务所(普通合伙) 31251 | 代理人: | 郭桂峰 |
地址: | 610100 四川省成*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 数据中心 时间戳区间 存储空间 数值区间 压缩算法 应用场景 字符转换 压缩 映射 预设 拼接 转换 | ||
本公开涉及一种ID生成的方法,特别是一种生成分布式唯一ID的方法。一种生成分布式唯一ID的方法,包括:步骤S100将数字ID的bit位划分为n个区间,n>=4的整数,其中n个区间至少包括:时间戳区间、数据中心ID区间、数据中心中节点ID区间和毫秒内自增数值区间;步骤S200获取n个区间的值,拼接n个区间的值,生成数字ID;步骤S300压缩数字ID的长度,生成分布式唯一ID。本公开通过压缩算法生成长度较短的ID,节省存储空间;根据预设数字和字符转换映射,提高生成分布式唯一ID的性能;适应更多的应用场景,特别是对ID长度有严格限制的情况;同时实现数字ID和压缩的分布式唯一ID之间相互转换。
技术领域
本公开涉及一种ID生成的方法,特别是一种生成及使用分布式唯一ID的方法。
背景技术
所有的业务系统都有生成ID的需求,根据这个ID建立索引。在分布式系统中,在数据在分片场景下,系统中组件间或组件与第三方接口交互时,如何快速高效的生成系统唯一ID是经常遇到的问题。
现有技术中生成ID的方法主要有以下两种:1、UUID:算法的核心思想是结合机器的网卡、当地时间、一个随即数来生成UUID。2、基于Redis的分布式ID生成器:使用41bit来存放时间,精确到毫秒,可以使用41年;使用12bit来存放逻辑分片ID,最大分片ID是4095;使用10bit来存放自增长ID,意味着每个节点,每毫秒最多可以生成1024个ID。其中,UUID的缺点:无法保证趋势递增,同时若UUID过长,往往用字符串表示,作为主键建立索引查询效率低,常见优化方案为“转化为两个uint64整数存储”或者“折半存储”(折半后不能保证唯一性)。基于Redis的分布式ID生成器的缺点:需要单独部署Redis且性能较差。
综上,上述现有生成系统唯一ID的技术均适用于ID长度有限、性能要求不高场景。
发明内容
为了克服分布式唯一数字ID长度过长,解决现有生成系统唯一ID的技术均适用于ID长度有限、性能要求不高场景的问题,本公开提供了一种生成分布式唯一ID的方法,该方法是一种高性能的生成分布式唯一、保证趋势递增、同时长度较短的ID方法,以满足对ID长度有限制的应用场景。
为了实现本公开以上发明目的,本公开是通过以下技术方案实现的:
步骤S100将数字ID的bit位划分为n个区间,n>=4的整数,其中,所述n个区间至少包括:时间戳区间、数据中心ID区间、数据中心中节点ID区间和毫秒内自增数值区间;
步骤S200获取所述n个区间的值后,拼接所述n个区间的值,生成数字ID;
步骤S300压缩所述数字ID的长度,生成分布式唯一ID。
上述技术方案中,采用将数字ID分区间赋值,再通过压缩算法控制分布式唯一ID的长度,从而克服分布式唯一ID长度过长,生成分布式唯一ID性能不高的问题。
进一步,所述步骤S300压缩所述数字ID的长度,生成分布式唯一ID,具体包括:
步骤S310设定数字和字符的映射关系;
步骤S320将所述数字ID映射为M进制字符串,所述M进制字符串为所述分布式唯一ID,其中M>10的整数。
在上述技术方案中,通过设定数字和字符的映射关系确定生成分布式唯一ID的压缩算法,即将数字ID映射为M进制字符串,这种映射转换提升了生成分布式唯一ID算法的性能。
进一步,在所述步骤S100和步骤S200中间,进一步包括:
步骤S110定义每一所述区间的长度。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于四川斐讯信息技术有限公司,未经四川斐讯信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810039637.X/2.html,转载请声明来源钻瓜专利网。