[发明专利]标识号生成方法、装置、计算机设备及存储介质有效
申请号: | 202010102807.1 | 申请日: | 2020-02-19 |
公开(公告)号: | CN111291424B | 公开(公告)日: | 2023-03-24 |
发明(设计)人: | 史先澳;娄景军 | 申请(专利权)人: | 望海康信(北京)科技股份公司 |
主分类号: | G06F21/73 | 分类号: | G06F21/73 |
代理公司: | 北京市立方律师事务所 11330 | 代理人: | 张筱宁 |
地址: | 100176 北京市大兴区北京经济*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 标识 生成 方法 装置 计算机 设备 存储 介质 | ||
本发明实施例公开了一种标识号生成方法、装置、计算机设备及存储介质,包括下述步骤:获取历史队列信息,其中,所述历史队列信息用于记录已生成标识号的时间戳编码与序列码;根据所述历史队列信息确定预设的第一标识号是否符合预设的重复条件,其中,所述第一标识号为时间回拨生成的标识号;当所述第一标识号符合所述重复条件时,根据所述历史队列信息生成第二标识号。通过设置历史队列信息记录使用过的时间戳和序列码,当发生时间回拨产生标识号时以历史队列为依据确定标识号是否出现重复,当标识号重复时以历史队列信息为依据利用之前未被使用的序列码生成新的标识号,有效确保了生成的标识号不重复。
技术领域
本发明涉及计算机应用技术领域,特别是涉及一种标识号生成方法、装置、计算机设备及存储介质。
背景技术
在分布式系统中,经常需要使用全局唯一ID(GUID)定义对应的数据。为了满足Twitter每秒上万条消息的请求,每条消息都必须分配一条唯一的ID,这些ID还需要一些大致的顺序(方便客户端排序),并且在分布式系统中不同机器产生的ID必须不同,对此,Twitter研发了snowflake生成ID方案.其核心思想是:产生一个long型的ID,使用其中41位(bit)作为时间戳(单位:毫秒),10bit作为机器编号,12bit作为序列码。除了最高位(bit)标记为不可用以外,其余三组bit占位均可浮动,应具体的业务需求而定。默认情况下41bit的时间戳可以支持该算法使用69.7年,10bit的工作机器id可以支持1024台机器,序列码支持1毫秒产生4096个序列id。
在分布式环境下,每台机器上的时钟不可能完全同步。由于机器时间不一致,需要同步各个服务器的时间,可能导致服务器时间回退。如果恰巧回退前生成过一些ID,而时间回退后,生成的ID就有可能重复。
发明内容
本发明实施例能够提供一种避免时间回拨导致ID重复的标识号生成方法、装置、计算机设备及存储介质。
为解决上述技术问题,本发明创造的实施例采用的一个技术方案是:提供一种标识号生成方法,包括:
获取历史队列信息,其中,所述历史队列信息用于记录已生成标识号的时间戳编码与序列码;
根据所述历史队列信息确定预设的第一标识号是否符合预设的重复条件,其中,所述第一标识号为时间回拨生成的标识号;
当所述第一标识号符合所述重复条件时,根据所述历史队列信息生成第二标识号。
可选地,所述当所述第一标识号符合所述重复条件时,根据所述历史队列信息生成第二标识号的步骤,包括:
获取所述第一标识号的时间信息,所述时间信息包括所述第一标识号的时间戳编码;
在所述历史队列信息中查找与所述第一标识号的时间戳编码具有映射关系的第一序列码;
根据所述第一序列码生成所述第二标识号。
可选地,所述根据所述第一序列码生成所述第二标识号的步骤,包括:
根据预设的自增规则对所述第一序列码进行自增处理以生成增值序列码;
根据增值序列码确定第二序列码;
根据所述第二序列码生成所述第二标识号。
可选地,所述根据增值序列码确定第二序列码的步骤,包括:
当所述增值序列码大于预设的第一序列阈值时,根据所述历史队列信息中所述第一标识号的时间戳编码的下一个时间戳编码对应的序列码生成所述第二序列码;
当所述增值序列码小于或等于所述第一序列阈值时,确定所述增值序列码为所述第二序列码。
可选地,所述根据所述历史队列信息确定预设的第一标识号是否符合预设的重复条件的步骤,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于望海康信(北京)科技股份公司,未经望海康信(北京)科技股份公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010102807.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种石墨烯导热硅脂及其制备方法
- 下一篇:一种射频信号传输方法及系统