[发明专利]一种唯一标识符的生成方法及其系统有效
申请号: | 202011471815.X | 申请日: | 2020-12-15 |
公开(公告)号: | CN112243040B | 公开(公告)日: | 2021-03-30 |
发明(设计)人: | 李伟豪;史伟;闵宇 | 申请(专利权)人: | 广东睿江云计算股份有限公司 |
主分类号: | H04L29/08 | 分类号: | H04L29/08 |
代理公司: | 佛山市恒瑞知识产权代理事务所(普通合伙) 44688 | 代理人: | 史亮亮 |
地址: | 528000 广东省佛山市禅*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 唯一 标识符 生成 方法 及其 系统 | ||
本发明公开了一种唯一标识符的生成方法及其系统,生成方法步骤包括:发号器接收取号器发送过来的注册标识因子请求以及取号器的参数信息,记录此取号器的参数信息并发送标识因子给取号器;取号器接收发号器发送过来的标识因子,取号器的缓冲单元对标识因子进行缓冲;取号器的生成单元从缓冲单元获取标识因子,并根据标识因子生成唯一标识符。本发明设计原理可靠且结构清晰明确,采用的双缓存队列保证高可用,生成的唯一标识也不依赖时间,具有广泛应用的前景。
技术领域
本发明涉及标识符技术领域,特别涉及一种唯一标识符的生成方法及其系统。
背景技术
在分布式系统中,经常需要使用全局的唯一标识来定义对应的不同类型的数据,如:订单的唯一标识、消息的唯一标识、数据链路的唯一标识。唯一标识可以方便索引,占用位置相对少,而且方便存储。
目前,现有技术获取唯一标识符方式有多种,主要有以下几种方案:
(1)UUID, UUID实现方式相对简单,是根据括网卡MAC地址、时间戳为基础,生成一串无序的唯一标识,而且没有排序,无法保证趋势递增,存储空间大,查询效率低;
(2) MySQL数据库递增,是采用MySQL的auto_increment(数字自增属性),为适合分布式的系统架构,必须至少两台MySQL数据库,通过区分auto_increment的起始值与步长来生成奇偶数的标识,利用数据库的数字自增序列机制,提高可靠性,但是缺点也明显,就是数据库发生异常时整个系统不可用;
(3) 雪花算法(SnowFlake)使用一个 64bit的long型的数字作为全局唯一标识;在分布式系统中的应用十分广泛,其中1位的不适用位,表示正负,然后用其中的41位作为毫秒数(长度可以用到69年),用10位作为工作机器标识(最多支部部署1024个节点),12位作为序列号(是计数顺序号,支持每个节点每毫秒可以产生4096个标识序号),优点是按照时间有序,存入数据库中,索引效率高,生成时不依赖于数据库,完全在内存中生成,高性能高可用;缺点也很明显,依赖与系统时间的一致性,如果系统时间被回调,或者改变,可能会造成id冲突或者重复。
发明内容
本发明要解决的技术问题在于,提供一种唯一标识符的生成方法及其系统,本发明设计原理可靠且结构清晰明确,采用的双缓存队列保证高可用,生成的唯一标识也不依赖时间,具有广泛应用的前景。
为解决上述技术问题,本发明提供如下技术方案:一种唯一标识符的生成方法,包括以下步骤:
步骤S1、发号器接收取号器发送过来的注册标识因子请求以及取号器的参数信息,记录此取号器的参数信息并发送标识因子给取号器;
步骤S2、取号器接收发号器发送过来的标识因子,取号器的缓冲单元对标识因子进行缓冲;
步骤S3、取号器的生成单元从缓冲单元获取标识因子,并根据标识因子生成唯一标识符。
进一步地,所述步骤S2具体为:缓冲单元检测此时是第一缓冲队列还是第二缓冲队列在向取号器的生成单元提供标识因子;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于广东睿江云计算股份有限公司,未经广东睿江云计算股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011471815.X/2.html,转载请声明来源钻瓜专利网。