CN111291424A - 标识号生成方法、装置、计算机设备及存储介质 - Google Patents

标识号生成方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN111291424A
CN111291424A CN202010102807.1A CN202010102807A CN111291424A CN 111291424 A CN111291424 A CN 111291424A CN 202010102807 A CN202010102807 A CN 202010102807A CN 111291424 A CN111291424 A CN 111291424A
Authority
CN
China
Prior art keywords
identification number
sequence code
queue information
sequence
code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202010102807.1A
Other languages
English (en)
Other versions
CN111291424B (zh
Inventor
史先澳
娄景军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wanghai Kangxin Beijing Technology Co Ltd
Original Assignee
Wanghai Kangxin Beijing Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wanghai Kangxin Beijing Technology Co Ltd filed Critical Wanghai Kangxin Beijing Technology Co Ltd
Priority to CN202010102807.1A priority Critical patent/CN111291424B/zh
Publication of CN111291424A publication Critical patent/CN111291424A/zh
Application granted granted Critical
Publication of CN111291424B publication Critical patent/CN111291424B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/73Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by creating or determining hardware identification, e.g. serial numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2151Time stamp

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Telephonic Communication Services (AREA)

Abstract

本发明实施例公开了一种标识号生成方法、装置、计算机设备及存储介质,包括下述步骤:获取历史队列信息,其中,所述历史队列信息用于记录已生成标识号的时间戳编码与序列码;根据所述历史队列信息确定预设的第一标识号是否符合预设的重复条件,其中,所述第一标识号为时间回拨生成的标识号;当所述第一标识号符合所述重复条件时,根据所述历史队列信息生成第二标识号。通过设置历史队列信息记录使用过的时间戳和序列码,当发生时间回拨产生标识号时以历史队列为依据确定标识号是否出现重复,当标识号重复时以历史队列信息为依据利用之前未被使用的序列码生成新的标识号,有效确保了生成的标识号不重复。

Description

标识号生成方法、装置、计算机设备及存储介质
技术领域
本发明涉及计算机应用技术领域,特别是涉及一种标识号生成方法、装置、计算机设备及存储介质。
背景技术
在分布式系统中,经常需要使用全局唯一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重复的标识号生成方法、装置、计算机设备及存储介质。
为解决上述技术问题,本发明创造的实施例采用的一个技术方案是:提供一种标识号生成方法,包括:
获取历史队列信息,其中,所述历史队列信息用于记录已生成标识号的时间戳编码与序列码;
根据所述历史队列信息确定预设的第一标识号是否符合预设的重复条件,其中,所述第一标识号为时间回拨生成的标识号;
当所述第一标识号符合所述重复条件时,根据所述历史队列信息生成第二标识号。
可选地,所述当所述第一标识号符合所述重复条件时,根据所述历史队列信息生成第二标识号的步骤,包括:
获取所述第一标识号的时间信息,所述时间信息包括所述第一标识号的时间戳编码;
在所述历史队列信息中查找与所述第一标识号的时间戳编码具有映射关系的第一序列码;
根据所述第一序列码生成所述第二标识号。
可选地,所述根据所述第一序列码生成所述第二标识号的步骤,包括:
根据预设的自增规则对所述第一序列码进行自增处理以生成增值序列码;
根据增值序列码确定第二序列码;
根据所述第二序列码生成所述第二标识号。
可选地,所述根据增值序列码确定第二序列码的步骤,包括:
当所述增值序列码大于预设的第一序列阈值时,根据所述历史队列信息中所述第一标识号的时间戳编码的下一个时间戳编码对应的序列码生成所述第二序列码;
当所述增值序列码小于或等于所述第一序列阈值时,确定所述增值序列码为所述第二序列码。
可选地,所述根据所述历史队列信息确定预设的第一标识号是否符合预设的重复条件的步骤,包括:
获取所述第一标识号的序列码信息;
当所述序列码信息小于或等于预设的第二序列阈值时,确定所述第一识别号符合所述重复条件。
可选地,所述当所述第一标识号符合所述重复条件时,根据所述历史队列信息生成第二标识号的步骤之后,包括:
根据所述第二标识号更新所述历史队列信息。
可选地,所述根据所述第二标识号更新所述历史队列信息的步骤之后,包括:
获取历史队列信息的数据容量;
当所述数据容量小于预设的容量阈值时,在所述历史队列信息中插入预设的时间戳编码数据;
当所述数据容量大于或等于所述容量阈值时,根据预设的删除规则删除所述历史队列信息中的数据。
为解决上述技术问题,本发明实施例还提供一种标识号生成装置,包括:
获取模块,用于获取历史队列信息,其中,所述历史队列信息用于记录已生成标识号的时间戳编码与序列码;
处理模块,用于根据所述历史队列信息确定预设的第一标识号是否符合预设的重复条件,其中,所述第一标识号为时间回拨生成的标识号;
执行模块,用于当所述第一标识号符合所述重复条件时,根据所述历史队列信息生成第二标识号。
可选地,所述标识号生成装置,还包括:
第一获取子模块,用于获取所述第一标识号的时间信息,所述时间信息包括所述第一标识号的时间戳编码;
第一查找子模块,用于在所述历史队列信息中查找与所述第一标识号的时间戳编码具有映射关系的第一序列码;
第一处理子模块,用于根据所述第一序列码生成所述第二标识号。
可选地,所述标识号生成装置,还包括:
第二处理子模块,用于根据预设的自增规则对所述第一序列码进行自增处理以生成增值序列码;
第三处理子模块,用于根据增值序列码确定第二序列码;
第四处理子模块,用于根据所述第二序列码生成所述第二标识号。
可选地,所述标识号生成装置,还包括:
第一执行子模块,用于当所述增值序列码大于预设的第一序列阈值时,根据所述历史队列信息中所述第一标识号的时间戳编码的下一个时间戳编码对应的序列码生成所述第二序列码;
第二执行子模块,用于当所述增值序列码小于或等于所述第一序列阈值时,确定所述增值序列码为所述第二序列码。
可选地,所述标识号生成装置,还包括:
第二获取子模块,用于获取所述第一标识号的序列码信息;
第三执行子模块,用于当所述序列码信息小于或等于预设的第二序列阈值时,确定所述第一识别号符合所述重复条件。
可选地,所述标识号生成装置,还包括:
第一更新子模块,用于根据所述第二标识号更新所述历史队列信息。
可选地,所述标识号生成装置,还包括:
第三获取子模块,用于获取历史队列信息的数据容量;
第四执行子模块,用于当所述数据容量小于预设的容量阈值时,在所述历史队列信息中插入预设的时间戳编码数据;
第五执行子模块,用于当所述数据容量大于或等于所述容量阈值时,根据预设的删除规则删除所述历史队列信息中的数据。
为解决上述技术问题,本发明实施例还提供一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行上述所述标识号生成方法的步骤。
为解决上述技术问题,本发明实施例还提供一种存储有计算机可读指令的存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述所述标识号生成方法的步骤。
本发明实施例的有益效果是:通过设置历史队列信息记录使用过的时间戳和序列码,当发生时间回拨产生标识号(ID)时以历史队列为依据确定标识号是否出现重复,当标识号重复时以历史队列信息为依据利用之前未被使用的序列码生成新的标识号,有效确保了生成的标识号不重复,解决了现有技术中因为时间回拨导致产生重复标识号的问题。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例标识号生成方法的基本流程示意图;
图2为本发明实施例根据历史队列信息生成第二标识号的流程示意图;
图3为本发明实施例根据第一序列码生成第二标识号的流程示意图;
图4为本发明实施例确定第二序列码的流程示意图;
图5为本发明实施例判断第一标识号是否重复的流程示意图;
图6为本发明实施例控制历史队列信息的数据容量的流程示意图;
图7为本发明实施例标识号生成装置的基本结构框图;
图8为本发明实施例计算机设备基本结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
在本发明的说明书和权利要求书及上述附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本技术领域技术人员可以理解,这里所使用的“终端”、“终端设备”既包括无线信号接收器的设备,其仅具备无发射能力的无线信号接收器的设备,又包括接收和发射硬件的设备,其具有能够在双向通信链路上,执行双向通信的接收和发射硬件的设备。这种设备可以包括:蜂窝或其他通信设备,其具有单线路显示器或多线路显示器或没有多线路显示器的蜂窝或其他通信设备;PCS(PersonalCommunicationsService,个人通信系统),其可以组合语音、数据处理、传真和/或数据通信能力;PDA(PersonalDigitalAssistant,个人数字助理),其可以包括射频接收器、寻呼机、互联网/内联网访问、网络浏览器、记事本、日历和/或GPS(GlobalPositioningSystem,全球定位系统)接收器;常规膝上型和/或掌上型计算机或其他设备,其具有和/或包括射频接收器的常规膝上型和/或掌上型计算机或其他设备。这里所使用的“终端”、“终端设备”可以是便携式、可运输、安装在交通工具(航空、海运和/或陆地)中的,或者适合于和/或配置为在本地运行,和/或以分布形式,运行在地球和/或空间的任何其他位置运行。这里所使用的“终端”、“终端设备”还可以是通信终端、上网终端、音乐/视频播放终端,例如可以是PDA、MID(MobileInternetDevice,移动互联网设备)和/或具有音乐/视频播放功能的移动电话,也可以是智能电视、机顶盒等设备。
具体地请参阅图1,图1为本实施例标识号生成方法的基本流程示意图。
如图1所示,一种标识号生成方法,包括:
S1100、获取历史队列信息,其中,所述历史队列信息用于记录已生成标识号的时间戳编码与序列码;
利用snowflake算法生成标识号(ID),生成ID的结果是一个64bit的整数,使用其中41位(bit)作为时间戳(单位:毫秒),10bit作为机器编号,12bit作为序列码。除了最高位(bit)标记为不可用以外,其余三组bit占位均可浮动,应具体的业务需求而定。
在本地内存建立一个线程安全的队列,用于存储本机器生成过ID的毫秒值和序列码,将snowflake算法新生成的ID的时间戳和序列码,追加到队列中,例如将每一个新生成的ID对应的时间戳和序列码存储到队列中。
在一些实施方式中,对于同一个时间戳的生成ID时,序列码依次递增,例如从1开始,每生成一个新ID时序列码自增1。历史队列信息中存储对应的时间戳毫秒数以及对应已依次使用的序列码,例如“{1ms:5},{2ms:3},{3ms:16}……”,表示时间戳为1毫秒的序列码使用了5个,即1、2、3、4、5均已被使用,新生成ID时在5的基础上自增1,即“6”作为新ID的序列码,同样的,时间戳为2毫秒的序列码使用了3个,时间戳为3毫秒的序列码使用了16个等等。在生成了新的ID之后,更新历史队列中的信息,例如1毫秒原本使用了5个ID,当时间戳为1毫秒生成一个新的ID之后,历史队列中的{1ms:5}更新为{1ms:6}。
S1200、根据所述历史队列信息确定预设的第一标识号是否符合预设的重复条件,其中,所述第一标识号为时间回拨生成的标识号;
由于机器时间与服务器时间的不一致,当进行时间同步之后,将ID中的时间戳回拨到与服务器的时间戳一致,此时间回拨生成的ID即为第一标识号。将第一标识号中的时间戳和序列码与历史队列中记录的已用时间戳和序列码进行对比,当第一标识号的时间戳和序列码存在于历史队列中时,确定第一标识号符合重复条件。
在一些实施方式中,历史队列信息中存储对应的时间戳毫秒数以及对应已依次使用的最大序列码,最大序列码用于表示该时间戳毫秒数对应的小于该数字的序列码均已被使用,例如{1ms:5}表示表示时间戳为1毫秒的序列码使用了5个,此时,可以将重复条件设置为第一标识号的序列码小于对应时间戳毫秒数记录的最大序列码,例如历史队列信息中记录有{1ms:5},而回拨时产生的ID时间戳毫秒数为1,对应的序列码为3,小于记录中的最大序列码5,本次回拨生成的ID符合重复条件。
S1300、当所述第一标识号符合所述重复条件时,根据所述历史队列信息生成第二标识号;
当第一标识号符合重复条件时,提取第一标识号对应的时间戳毫秒数在历史队列信息中所记录的已用序列码,将已用序列码以外的任意一个序列码作为新的序列码生成第二标识号。
在一些实施方式中,对于同一个时间戳的生成ID时,序列码依次递增,每生成一个新ID时序列码自增1,获取到对应时间戳在历史队列中记录的已用最大序列码,例如5,在已用最大序列码的基础上自增1,例如5+1=6,将自增后的数值作为序列码生成新的标识号(ID)。
如图2所示,步骤S1300具体包括:
S1310、获取所述第一标识号的时间信息,所述时间信息包括所述第一标识号的时间戳编码;
每一个标识号都包含时间戳、机器编号和序列码等,在确定了第一标识号之后,获取到第一标识号的时间戳编码,例如snowflake算法生成标识号(ID)默认情况下第二位到第四十二位共41bit的编码为时间戳编码。
S1320、在所述历史队列信息中查找与所述第一标识号的时间戳编码具有映射关系的第一序列码;
历史队列中记录有已用的时间戳以及对应的序列码,以第一标识号的时间戳编码为依据在历史队列信息中查找对应的已用序列码,将查找得到的已用序列码作为第一序列码。
在一些实施方式中,序列码在生成ID时依次增加,历史队列中记录有已使用的最大序列码,表示该时间戳对应的小于或等于最大序列码的序列码均已被使用,将第一标识码的时间戳编码对应的最大序列码作为第一序列码。
S1330、根据所述第一序列码生成所述第二标识号;
在确定了已用序列码作为第一序列码之后,将第一序列码以外的其他序列码作为新的序列码,生成新的ID,作为第二标识号。
在一些实施方式中,以最大序列码作为第一序列码时,在第一序列码的基础上自增1,以自增后的序列码生成新的ID,作为第二标识号。
以时间信息在历史队列信息中查找对应的已用序列码作为第一序列码,以第一序列码为依据确定未用的序列码并生成新的标识号,可以避免产生重复的标识号,确保标识号的唯一性。
如图3所示,步骤S1330具体包括:
S1331、根据预设的自增规则对所述第一序列码进行自增处理以生成增值序列码;
历史队列信息中存储对应的时间戳毫秒数以及对应已依次使用的最大序列码,最大序列码用于表示该时间戳毫秒数对应的小于该数字的序列码均已被使用,例如{1ms:5}表示表示时间戳为1毫秒的序列码使用了5个。在获取到最大序列码作为第一序列码之后,对第一序列码进行自增处理,自增规则设置为增加相同的数值量(如1),例如最大序列码为5,自增量为1,则增值序列码为6。自增量的数值可以根据实际情况进行调整。
S1332、根据增值序列码确定第二序列码;
每一个毫秒数对应的序列码个数有限,例如snowflake算法生成ID默认利用12bit作为序列码,最大可产生4096(2^12)个序列码,因此,需要判断增值序列码是否小于该毫秒数对应可生成的序列码上限。具体地,将该毫秒数对应的序列码上限作为第一序列阈值,例如4095,当对第一序列码进行自增后,判断增值序列码是否大于第一序列阈值,当大于第一序列阈值时,根据历史队列中对应的下一毫秒数的序列码生成新的序列码,例如历史队列中信息中记录有“{1ms:4095},{2ms:16}”,当生成1ms的新ID时对1ms的序列码自增1,变为4096,大于4095,则将下一毫秒数的序列码,即2ms对应的16进行自增,得到2ms对应的序列码17,作为第二序列码。当增值序列码小于或等于第一序列阈值时,直接将增值序列码作为第二序列码。
S1333、根据所述第二序列码生成所述第二标识号;
当增值序列码大于第一序列阈值,对历史队列信息中下一毫秒数的序列码进行自增然后作为第二序列码时,以下一毫秒数的时间戳编码和第二序列码生成第二标识号,例如历史队列中信息中记录有“{1ms:4095},{2ms:16}”,当生成1ms的新ID时对1ms的序列码自增1,变为4096,大于4095,则将下一毫秒数的序列码,即2ms对应的16进行自增,得到2ms对应的序列码17,根据2ms的时间戳编码对应的序列码17生成第二标识号。
当增值序列码直接作为第二序列码时,以第一标识号原本的时间戳编码及第二序列码生成第二标识号。例如毫秒数为3,历史队列中记录有“{3ms:3},进行自增后处到序列码为4,即根据3ms的时间戳编码及对应的序列码4生成第二标识号。
通过自增的方式对序列码依次进行使用,使历史队列中仅需要记录每个毫秒数对应已使用的最大序列码,表示小于最大序列码的序列码均已被使用,有效减少了历史队列存储所占用的空间,同时提高调用历史队列信息的效率。
如图4所示,步骤S1332具体包括:
S1334、当所述增值序列码大于预设的第一序列阈值时,根据所述历史队列信息中所述第一标识号的时间戳编码的下一个时间戳编码对应的序列码生成所述第二序列码;
每一个毫秒数对应的序列码个数有限,例如snowflake算法生成ID默认利用12bit作为序列码,最大可产生4096(2^12)个序列码,因此,需要判断增值序列码是否小于该毫秒数对应可生成的序列码上限。具体地,将该毫秒数对应的序列码上限作为第一序列阈值,例如4095,当对第一序列码进行自增后,判断增值序列码是否大于第一序列阈值,当大于第一序列阈值时,根据历史队列中对应的下一毫秒数的序列码生成新的序列码,例如历史队列中信息中记录有“{1ms:4095},{2ms:16}”,当生成1ms的新ID时对1ms的序列码自增1,变为4096,大于4095,则将下一毫秒数的序列码,即2ms对应的16进行自增,得到2ms对应的序列码17,作为第二序列码。
S1335、当所述增值序列码小于或等于所述第一序列阈值时,确定所述增值序列码为所述第二序列码;
当增值序列码小于或等于第一序列阈值时,直接将增值序列码作为第二序列码。
通过设置第一序列阈值,当序列码自增后超过该毫秒数的上限时,从历史队列中调取下一毫秒数的序列码用于生成新ID,在同时产生大量ID时也确保了ID的唯一性,避免因为序列码超出可用个数后产生的错误。
如图5所示,步骤S1200具体包括:
S1210、获取所述第一标识号的序列码信息;
在发生时间回拨时,获取回拨生成的标识号的时间戳编码及对应的序列码。
S1220、当所述序列码信息小于或等于预设的第二序列阈值时,确定所述第一识别号符合所述重复条件;
历史队列中记录已使用的最大序列码,表示该时间戳对应的小于或等于最大序列码的序列码均已被使用,在确定了时间回拨生成的标识号的时间戳编码之后,在历史队列信息中查找与时间戳编码具有映射关系的已用最大序列码,将最大序列码作为第二序列阈值,当第一识别号的序列码小于或等于对应时间戳编码之下已使用的最大序列码(即第二序列阈值)时,说明第一识别号与在先生成的识别号重复,符合重复条件。
通过设置第二序列阈值,可以快速地判断第一识别号是否与在先生成的识别号重复,而不需要通过遍历的方式进行重复验证,提高重复条件判断的效率,降低性能损耗。
在一些实施方式中,步骤S1300之后还包括:
S1400、根据所述第二标识号更新所述历史队列信息;
在生成第二标识号之后,将第二标识号存储到历史队列中。当历史队列仅记录对应毫秒数之下使用的最大序列码时,将第二标识号的序列码作为历史队列信息中第二标识号的时间戳毫秒数的最大序列码。
如图6所示,步骤S1400之后还包括:
S1500、获取历史队列信息的数据容量;
由于本地存储历史队列信息的空间不可能无限大,需要对历史队列信息的容量数据进行控制,因此,在根据生成的新ID更新历史队列信息之后,增加或删除队列中的数据,保证队列的大小。
数据容量可以用记录的时间戳数量进行表示,例如100个,表示历史队列信息中已连续记录100个时间戳编码及对应已使用的序列码,即历史队列可表示为“{1ms:2},{2ms:20},{3ms:16},……,{100ms:5}”。
系统中设置有对应的队列大小,即队列中可存储的时间戳数量上限(例如200个),将队列大小作为容量阈值。
队列大小可以根据实际的应用场景进行计算,例如:
队列大小=(每毫秒需要生成的ID个数*回拨毫秒数*预留系数)/每毫秒可生成ID个数
其中,每毫秒需要生成的ID个数为平台预计每毫秒所需要的ID数的最大值,例如10000;回拨毫秒数为系统设定的同步间隔,例如每10ms进行一次同步,即可能产生最大回拨时间为10ms,回拨毫秒数为10;预留系数可以根据实际场景进行调整,用于为产生的ID数量提供一定的预留空间,例如1.5;每毫秒可生成的ID个数为第一毫秒的时间戳可生成的最大ID数量,例如基于snowflake算法,每毫秒可以生成4096(2^12)个不同的ID,即每毫秒可生成ID个数为4096。
在一些实施方式中,也可以通过设置定时任务,增加或删除队列中的数据,保证队列的大小。每隔一定的时间间隔(例如1ms)获取一到历史队列信息的数据容量,时间间隔的设定可以根据实际情况进行调整,例如不需要对历史队列信息进行精确把控时,时间间隔可以适当的增加。
S1600、当所述数据容量小于预设的容量阈值时,在所述历史队列信息中插入预设的时间戳编码数据;
当数据容量小于容量阈值时,说明历史队列信息中存储的内容还未达到上限,此时向队列中插入当前毫秒值的时间戳编码数据,例如历史队列中原本记录为“{1ms:5},{2ms:8}”在第三毫秒时插入{3ms:0},在第四毫秒时插入{4ms:0}。
S1700、当所述数据容量大于或等于所述容量阈值时,根据预设的删除规则删除所述历史队列信息中的数据;
当数据容量大于或等于容量阈值时,需要对历史队列中的数据进行删除,以空出新数据的写入空间,按照队列顺序删除队列最前方一定量的时间戳数据,例如队列上限为200,超出时每次删除3个时间戳数据,队列记录为“{1ms:5},{2ms:8},{3ms:1},{4ms:3},……,{200ms:0}”,将最前方的三个时间戳数据删除,队列记录变为{4ms:3},……,{200ms:0}”。每次删除的时间戳数据数量可以根据实际情况进行调整,例如需要保证空间足够时,可以增加删除的数量。
通过设置容量阈值,保证生成ID数量的同时限制历史队列存储的时间戳数量,及时清除已过期的数据,减少不必要的存储空间浪费,提高数据存储的利用率。
为解决上述技术问题,本发明实施例还提供一种标识号生成装置。具体请参阅图7,图7为本实施标识号生成装置的基本结构框图。
如图7所示,标识号生成装置,包括:获取模块2100、处理模块2200和执行模块2300。其中,获取模块用于获取历史队列信息,其中,所述历史队列信息用于记录已生成标识号的时间戳编码与序列码;处理模块用于根据所述历史队列信息确定预设的第一标识号是否符合预设的重复条件,其中,所述第一标识号为时间回拨生成的标识号;执行模块用于当所述第一标识号符合所述重复条件时,根据所述历史队列信息生成第二标识号。
通过设置历史队列信息记录使用过的时间戳和序列码,当发生时间回拨产生标识号(ID)时以历史队列为依据确定标识号是否出现重复,当标识号重复时以历史队列信息为依据利用之前未被使用的序列码生成新的标识号,有效确保了生成的标识号不重复,解决了现有技术中因为时间回拨导致产生重复标识号的问题。
在一些实施方式中,标识号生成装置还包括:第一获取子模块、第一查找子模块、第一处理子模块。其中第一获取子模块用于获取所述第一标识号的时间信息,所述时间信息包括所述第一标识号的时间戳编码;第一查找子模块用于在所述历史队列信息中查找与所述第一标识号的时间戳编码具有映射关系的第一序列码;第一处理子模块用于根据所述第一序列码生成所述第二标识号。
在一些实施方式中,标识号生成装置还包括:第二处理子模块、第三处理子模块、第四处理子模块。其中,第二处理子模块用于根据预设的自增规则对所述第一序列码进行自增处理以生成增值序列码;第三处理子模块用于根据增值序列码确定第二序列码;第四处理子模块用于根据所述第二序列码生成所述第二标识号。
在一些实施方式中,标识号生成装置还包括:第一执行子模块、第二执行子模块。其中,第一执行子模块用于当所述增值序列码大于预设的第一序列阈值时,根据所述历史队列信息中所述第一标识号的时间戳编码的下一个时间戳编码对应的序列码生成所述第二序列码;第二执行子模块用于当所述增值序列码小于或等于所述第一序列阈值时,确定所述增值序列码为所述第二序列码。
在一些实施方式中,标识号生成装置还包括:第二获取子模块、第三执行子模块。其中,第二获取子模块用于获取所述第一标识号的序列码信息;第三执行子模块用于当所述序列码信息小于或等于预设的第二序列阈值时,确定所述第一识别号符合所述重复条件。
在一些实施方式中,标识号生成装置还包括:第一更新子模块。其中,第一更新子模块用于根据所述第二标识号更新所述历史队列信息。
在一些实施方式中,标识号生成装置还包括:第三获取子模块、第四执行子模块、第五执行子模块。其中,第三获取子模块用于获取历史队列信息的数据容量;第四执行子模块用于当所述数据容量小于预设的容量阈值时,在所述历史队列信息中插入预设的时间戳编码数据;第五执行子模块用于当所述数据容量大于或等于所述容量阈值时,根据预设的删除规则删除所述历史队列信息中的数据。
为解决上述技术问题,本发明实施例还提供一种计算机设备。具体请参阅图8,图8为本实施例计算机设备基本结构框图。
如图8所示,计算机设备的内部结构示意图。如图8所示,该计算机设备包括通过系统总线连接的处理器、非易失性存储介质、存储器和网络接口。其中,该计算机设备的非易失性存储介质存储有操作系统、数据库和计算机可读指令,数据库中可存储有控件信息序列,该计算机可读指令被处理器执行时,可使得处理器实现一种标识号生成方法。该计算机设备的处理器用于提供计算和控制能力,支撑整个计算机设备的运行。该计算机设备的存储器中可存储有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器执行一种标识号生成方法。该计算机设备的网络接口用于与终端连接通信。本领域技术人员可以理解,图中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本实施方式中处理器用于执行图7中获取模块2100、处理模块2200和执行模块2300的具体功能,存储器存储有执行上述模块所需的程序代码和各类数据。网络接口用于向用户终端或服务器之间的数据传输。本实施方式中的存储器存储有标识号生成装置中执行所有子模块所需的程序代码及数据,服务器能够调用服务器的程序代码及数据执行所有子模块的功能。
本发明还提供一种存储有计算机可读指令的存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述任一实施例所述标识号生成方法的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)等非易失性存储介质,或随机存储记忆体(RandomAccessMemory,RAM)等。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种标识号生成方法,其特征在于,包括:
获取历史队列信息,其中,所述历史队列信息用于记录已生成标识号的时间戳编码与序列码;
根据所述历史队列信息确定预设的第一标识号是否符合预设的重复条件,其中,所述第一标识号为时间回拨生成的标识号;
当所述第一标识号符合所述重复条件时,根据所述历史队列信息生成第二标识号。
2.如权利要求1所述的标识号生成方法,其特征在于,所述当所述第一标识号符合所述重复条件时,根据所述历史队列信息生成第二标识号的步骤,包括:
获取所述第一标识号的时间信息,所述时间信息包括所述第一标识号的时间戳编码;
在所述历史队列信息中查找与所述第一标识号的时间戳编码具有映射关系的第一序列码;
根据所述第一序列码生成所述第二标识号。
3.如权利要求2所述的标识号生成方法,其特征在于,所述根据所述第一序列码生成所述第二标识号的步骤,包括:
根据预设的自增规则对所述第一序列码进行自增处理以生成增值序列码;
根据增值序列码确定第二序列码;
根据所述第二序列码生成所述第二标识号。
4.如权利要求3所述的标识号生成方法,其特征在于,所述根据增值序列码确定第二序列码的步骤,包括:
当所述增值序列码大于预设的第一序列阈值时,根据所述历史队列信息中所述第一标识号的时间戳编码的下一个时间戳编码对应的序列码生成所述第二序列码;
当所述增值序列码小于或等于所述第一序列阈值时,确定所述增值序列码为所述第二序列码。
5.如权利要求1所述的标识号生成方法,其特征在于,所述根据所述历史队列信息确定预设的第一标识号是否符合预设的重复条件的步骤,包括:
获取所述第一标识号的序列码信息;
当所述序列码信息小于或等于预设的第二序列阈值时,确定所述第一识别号符合所述重复条件。
6.如权利要求1所述的标识号生成方法,其特征在于,所述当所述第一标识号符合所述重复条件时,根据所述历史队列信息生成第二标识号的步骤之后,包括:
根据所述第二标识号更新所述历史队列信息。
7.如权利要求6所述的标识号生成方法,其特征在于,所述根据所述第二标识号更新所述历史队列信息的步骤之后,包括:
获取历史队列信息的数据容量;
当所述数据容量小于预设的容量阈值时,在所述历史队列信息中插入预设的时间戳编码数据;
当所述数据容量大于或等于所述容量阈值时,根据预设的删除规则删除所述历史队列信息中的数据。
8.一种标识号生成装置,其特征在于,包括:
获取模块,用于获取历史队列信息,其中,所述历史队列信息用于记录已生成标识号的时间戳编码与序列码;
处理模块,用于根据所述历史队列信息确定预设的第一标识号是否符合预设的重复条件,其中,所述第一标识号为时间回拨生成的标识号;
执行模块,用于当所述第一标识号符合所述重复条件时,根据所述历史队列信息生成第二标识号。
9.一种计算机设备,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述权利要求1-7任意一项所述的标识号生成方法。
10.一种非临时性计算机可读存储介质,当所述存储介质中的指令由移动终端的处理器执行时,使得移动终端能够执行一种标识号生成方法,所述方法包括上述权利要求1-7任意一项所述的标识号生成方法。
CN202010102807.1A 2020-02-19 2020-02-19 标识号生成方法、装置、计算机设备及存储介质 Active CN111291424B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010102807.1A CN111291424B (zh) 2020-02-19 2020-02-19 标识号生成方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010102807.1A CN111291424B (zh) 2020-02-19 2020-02-19 标识号生成方法、装置、计算机设备及存储介质

Publications (2)

Publication Number Publication Date
CN111291424A true CN111291424A (zh) 2020-06-16
CN111291424B CN111291424B (zh) 2023-03-24

Family

ID=71026179

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010102807.1A Active CN111291424B (zh) 2020-02-19 2020-02-19 标识号生成方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN111291424B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112000886A (zh) * 2020-08-14 2020-11-27 北京百度网讯科技有限公司 用户行为记录方法、装置、设备和可读存储介质
CN112202662A (zh) * 2020-09-23 2021-01-08 北京达佳互联信息技术有限公司 一种生成即时通讯标识信息的方法及装置
CN112380208A (zh) * 2020-10-21 2021-02-19 珠海许继芝电网自动化有限公司 配电自动化系统的实时数据id生成方法、系统及介质
CN112423149A (zh) * 2020-11-19 2021-02-26 百果园技术(新加坡)有限公司 内容标识的生成方法、装置、设备及存储介质
CN112613081A (zh) * 2020-12-10 2021-04-06 深圳市时创意电子有限公司 一种存储芯片序列码生成方法、装置、电子设备及存储介质
CN112632347A (zh) * 2021-01-14 2021-04-09 加和(北京)信息科技有限公司 数据筛选控制方法及装置、非易失性存储介质
CN112860661A (zh) * 2021-01-20 2021-05-28 上海悦易网络信息技术有限公司 一种数据序列标识的生成方法及设备

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105072160A (zh) * 2015-07-17 2015-11-18 联动优势科技有限公司 一种流水号生成方法、装置及服务器
CN105468718A (zh) * 2015-11-18 2016-04-06 腾讯科技(深圳)有限公司 数据一致性处理方法、装置和系统
US20160359872A1 (en) * 2015-06-05 2016-12-08 Cisco Technology, Inc. System for monitoring and managing datacenters
CN106572165A (zh) * 2016-10-26 2017-04-19 宜人恒业科技发展(北京)有限公司 一种分布式全局唯一id应用方法
CN107229555A (zh) * 2017-05-04 2017-10-03 北京小度信息科技有限公司 标识生成方法和装置
CN108243264A (zh) * 2016-12-27 2018-07-03 中国移动通信有限公司研究院 一种序列号生成方法及系统
CN108804545A (zh) * 2018-05-18 2018-11-13 深圳市彬讯科技有限公司 分布式全局唯一id生成方法及设备
CN109240848A (zh) * 2018-07-27 2019-01-18 阿里巴巴集团控股有限公司 一种数据对象标识生成方法及装置
CN109902127A (zh) * 2019-03-07 2019-06-18 腾讯科技(深圳)有限公司 历史态数据处理方法、装置、计算机设备及存储介质
CN109951541A (zh) * 2019-03-11 2019-06-28 中国银联股份有限公司 一种流水号生成方法及服务器
CN110554732A (zh) * 2019-08-22 2019-12-10 北京奇艺世纪科技有限公司 一种标识号生成方法、生成装置、电子设备及存储介质
CN110647409A (zh) * 2019-09-23 2020-01-03 深圳市网心科技有限公司 消息写入方法、电子设备、系统及介质
CN110750506A (zh) * 2019-09-17 2020-02-04 苏宁云计算有限公司 数据对象标识生成方法、装置、计算机设备和存储介质

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160359872A1 (en) * 2015-06-05 2016-12-08 Cisco Technology, Inc. System for monitoring and managing datacenters
CN105072160A (zh) * 2015-07-17 2015-11-18 联动优势科技有限公司 一种流水号生成方法、装置及服务器
CN105468718A (zh) * 2015-11-18 2016-04-06 腾讯科技(深圳)有限公司 数据一致性处理方法、装置和系统
CN106572165A (zh) * 2016-10-26 2017-04-19 宜人恒业科技发展(北京)有限公司 一种分布式全局唯一id应用方法
CN108243264A (zh) * 2016-12-27 2018-07-03 中国移动通信有限公司研究院 一种序列号生成方法及系统
CN107229555A (zh) * 2017-05-04 2017-10-03 北京小度信息科技有限公司 标识生成方法和装置
CN108804545A (zh) * 2018-05-18 2018-11-13 深圳市彬讯科技有限公司 分布式全局唯一id生成方法及设备
CN109240848A (zh) * 2018-07-27 2019-01-18 阿里巴巴集团控股有限公司 一种数据对象标识生成方法及装置
CN109902127A (zh) * 2019-03-07 2019-06-18 腾讯科技(深圳)有限公司 历史态数据处理方法、装置、计算机设备及存储介质
CN109951541A (zh) * 2019-03-11 2019-06-28 中国银联股份有限公司 一种流水号生成方法及服务器
CN110554732A (zh) * 2019-08-22 2019-12-10 北京奇艺世纪科技有限公司 一种标识号生成方法、生成装置、电子设备及存储介质
CN110750506A (zh) * 2019-09-17 2020-02-04 苏宁云计算有限公司 数据对象标识生成方法、装置、计算机设备和存储介质
CN110647409A (zh) * 2019-09-23 2020-01-03 深圳市网心科技有限公司 消息写入方法、电子设备、系统及介质

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
TIMESTATIC: "《简单有效地解决SnowFlake的时钟回拨问题》", 《HTTPS://BLOG.CSDN.NET/JIANGQIAN6481/ARTICLE/DETAILS/102888944》 *
史先澳: "《基于OpenGL的栅状图的绘制方法的研究与实现》", 《中国优秀硕士学位论文全文数据库(电子期刊)》 *
王雷寒: "《面向企业用户的即时通讯系统的设计与实现》", 《中国优秀硕士学位论文全文数据库(电子期刊)》 *

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112000886A (zh) * 2020-08-14 2020-11-27 北京百度网讯科技有限公司 用户行为记录方法、装置、设备和可读存储介质
CN112000886B (zh) * 2020-08-14 2024-02-02 北京百度网讯科技有限公司 用户行为记录方法、装置、设备和可读存储介质
CN112202662A (zh) * 2020-09-23 2021-01-08 北京达佳互联信息技术有限公司 一种生成即时通讯标识信息的方法及装置
CN112380208A (zh) * 2020-10-21 2021-02-19 珠海许继芝电网自动化有限公司 配电自动化系统的实时数据id生成方法、系统及介质
CN112423149A (zh) * 2020-11-19 2021-02-26 百果园技术(新加坡)有限公司 内容标识的生成方法、装置、设备及存储介质
CN112423149B (zh) * 2020-11-19 2022-11-15 百果园技术(新加坡)有限公司 内容标识的生成方法、装置、设备及存储介质
CN112613081A (zh) * 2020-12-10 2021-04-06 深圳市时创意电子有限公司 一种存储芯片序列码生成方法、装置、电子设备及存储介质
CN112613081B (zh) * 2020-12-10 2022-02-11 深圳市时创意电子有限公司 一种存储芯片序列码生成方法、装置、电子设备及存储介质
CN112632347A (zh) * 2021-01-14 2021-04-09 加和(北京)信息科技有限公司 数据筛选控制方法及装置、非易失性存储介质
CN112632347B (zh) * 2021-01-14 2024-01-23 加和(北京)信息科技有限公司 数据筛选控制方法及装置、非易失性存储介质
CN112860661A (zh) * 2021-01-20 2021-05-28 上海悦易网络信息技术有限公司 一种数据序列标识的生成方法及设备
CN112860661B (zh) * 2021-01-20 2022-11-08 上海万物新生环保科技集团有限公司 一种数据序列标识的生成方法及设备

Also Published As

Publication number Publication date
CN111291424B (zh) 2023-03-24

Similar Documents

Publication Publication Date Title
CN111291424B (zh) 标识号生成方法、装置、计算机设备及存储介质
US20120084255A1 (en) Method and apparatus for synchronizing databases connected by wireless interface
CN112486915B (zh) 数据存储方法及装置
CN112732717A (zh) 数据处理方法、装置、计算机设备及存储介质
CN104636477A (zh) 一种信息推送前推送列表的去重方法
CN110968730A (zh) 音频标记处理方法、装置、计算机设备及存储介质
CN114125050A (zh) 消息调度方法、装置、设备及存储介质
CN112069195A (zh) 基于数据库的消息传输方法、装置、电子设备及存储介质
CN111158999A (zh) 一种格式化时间的计算方法和装置
CN112003976A (zh) 硬编硬解测试方法及装置
CN105915636B (zh) 一种联系人信息的同步方法和装置
US8184787B2 (en) System and method for generating a personalized bill using a personal address book
CN103034632A (zh) 一种信息传送方法和系统
CN114647618A (zh) 信令数据查询方法、信令数据索引库的构建方法及服务器
CN111190871A (zh) 日志生成方法、装置、计算机设备及存储介质
CN111681295B (zh) 一种基于超分图像重建的瓦片地图切片与服务方法及系统
CN113722152B (zh) 一种数据增量备份方法、装置、设备及存储介质
CN111198807A (zh) 数据流分析方法、装置、计算机设备及存储介质
CN115022263A (zh) 一种延时消息的投递方法、装置、设备及存储介质
CN114143486A (zh) 视频流同步方法、装置、计算机设备和存储介质
EP2584479B1 (en) Synchronization method and associated apparatus
CN112615869B (zh) 音频数据的处理方法、装置、设备及存储介质
CN115276777B (zh) 一种基于数据摘要和时间戳的tdma组网参数管理方法
CN116881247A (zh) 业务标识生成方法、装置、计算机设备和存储介质
CA2615561C (en) Method and apparatus for synchronizing databases connected by wireless interface

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant