[发明专利]全局单调递增ID生成方法、装置、系统及设备在审
申请号: | 201811421041.2 | 申请日: | 2018-11-27 |
公开(公告)号: | CN109639775A | 公开(公告)日: | 2019-04-16 |
发明(设计)人: | 陈海文;王晓斌;李志 | 申请(专利权)人: | 湖南蚁为软件有限公司 |
主分类号: | H04L29/08 | 分类号: | H04L29/08;H04J3/06 |
代理公司: | 长沙心智力知识产权代理事务所(普通合伙) 43233 | 代理人: | 谢如意 |
地址: | 410000 湖南省长沙市高新*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 时间戳 单调递增 系统及设备 生成器 全局 数据处理技术 系统可扩展性 服务器接收 生成序列号 被服务器 存储介质 循环队列 暂停服务 符号位 应用端 构建 并发 重复 应用 | ||
本发明公开了一种全局单调递增ID生成方法、装置、系统及设备,属于数据处理技术领域。所述方法包括:服务器接收应用端的ID获取请求,判断当前时间戳是否小于上次生成ID的时间戳,是,暂停服务;否,根据当前时间戳,以及序列号生成器生成的序列号生成ID,并发送给应用端;其中,所述的序列号生成器被服务器构建在用于生成序列号的循环队列内,所述ID包括符号位、时间戳和序列号。还包括对应的装置和系统、设备及存储介质。它可以生成全局单调递增的ID,可以避免生成重复ID,ID的生成效率高,系统可扩展性好。
技术领域
本发明涉及数据处理技术领域,尤其涉及一种全局单调递增ID生成方法、装置、系统及设备。
背景技术
随着互联网的发展,需要计算处理的数据呈爆炸性增长,软件系统也随之越来越复杂,分布式计算变成了一个普遍性的需求。在分布式计算系统中,全局递增ID的应用场景非常多,如分布式任务ID、消息ID、事务日志ID、订单ID等等。
一般来说,分布式系统对全局ID设计有几个要求:1)全局唯一性:不能出现重复的ID号,这个是最基本的要求。2)信息安全:不能完全连续或有规律,防止恶意用户通过规律获取ID。3)数据递增:保证下一个ID一定大于上一个ID。针对上述要求,现有生成全局递增ID的方法有以下几种:1)使用UUID。2)使用关系数据库的自增长字段。3)使用中间件(Mongodb、Redis等)生成。4)使用Twitter的Snowflake算法。这些方法或存在性能问题,或存在单点故障,或存在扩展性问题,都不太完美。比如使用Redis生成ID需要预先设定每个节点的初始值和步长,当节点增加或减少时又要重新设定初始值和步长,扩展性差,影响系统可用性,同时还存在ID有规律且不是单调递增的问题。而使用Twitter的Snowflake算法则存在时钟倒拨导致ID重复的问题,同时所生成的ID也不是单调递增的。
目前有一些相关基于这些传统方法的专利技术,但这些技术或多或少也还存在一些缺陷。如《一种业务ID生成方法及装置》(申请号:201810228829.5)在Snowflake算法的基础上增加了业务号,仍然存在时钟同步和倒拨的问题,同一毫秒服务器之间所生成的ID也不是单调递增的。《一种分布式唯一ID生成方法》(申请号:201610918689.5)所生成的ID只有32位,范围不够大,而且完全是随机的,有重复的可能性,也无法保证单调递增。《分布式全球唯一ID生成方法》(申请号:201310684624.5)是针对特定游戏设计的,不具有普适性。《一种基于分布式系统的唯一性ID生成方法》(申请号:201810068918.8)也是基于Snowflake算法实现的,但对于Snowflake算法所存在的问题并没有改进,即仍然存在时钟倒拨和ID非单调递增的问题。
发明内容
1.发明要解决的技术问题
为了克服上述技术问题,本发明提供了一种全局单调递增ID生成方法、装置、系统及设备。它可以避免生成重复ID,可以生成全局单调递增的ID,生成ID的效率高,系统可扩展性好。
2.技术方案
为解决上述问题,本发明提供的技术方案为:
一种全局单调递增ID生成方法,包括:服务器接收应用端的ID获取请求,判断当前时间戳是否小于上次生成ID的时间戳,是,暂停服务直到时钟正常;否,根据当前时间戳,以及序列号生成器生成的序列号生成ID,并发送给应用端;
其中,所述的序列号生成器被服务器构建在用于生成序列号的循环队列内,所述ID包括符号位、时间戳和序列号。
优选地,所述的根据当前时间戳,以及序列号生成器生成的序列号生成ID,并发送给应用端的步骤中还包括以下内容:记录当前时间戳、ID。
优选地,所述的服务器接收应用端的ID获取请求还包括记录最新ID生成时间戳。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于湖南蚁为软件有限公司,未经湖南蚁为软件有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811421041.2/2.html,转载请声明来源钻瓜专利网。