CN110830608A - 一种全局唯一标识符生成方法、装置、设备及存储介质 - Google Patents
一种全局唯一标识符生成方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN110830608A CN110830608A CN201911114276.1A CN201911114276A CN110830608A CN 110830608 A CN110830608 A CN 110830608A CN 201911114276 A CN201911114276 A CN 201911114276A CN 110830608 A CN110830608 A CN 110830608A
- Authority
- CN
- China
- Prior art keywords
- time
- timeline
- clock
- target
- rollback
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/30—Managing network names, e.g. use of aliases or nicknames
- H04L61/3015—Name registration, generation or assignment
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04J—MULTIPLEX COMMUNICATION
- H04J3/00—Time-division multiplex systems
- H04J3/02—Details
- H04J3/06—Synchronising arrangements
- H04J3/0635—Clock or time synchronisation in a network
- H04J3/0638—Clock or time synchronisation among nodes; Internode synchronisation
- H04J3/0658—Clock or time synchronisation among packet nodes
- H04J3/0661—Clock or time synchronisation among packet nodes using timestamps
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
Abstract
本申请公开了一种全局唯一标识符生成方法、装置、设备及存储介质,所述方法包括:预先设置包括一条当前时间线和至少一条回退时间线的多条时间线,当前时间线的时间进度随着本地时钟的时间推进,回退时间线的时间进度迟于当前时间线的时间进度;在接收到目标节点的全局唯一标识符生成请求时,确定本地时钟的时钟状态,当时钟状态为时钟回退时,确定时钟回退时间;当时钟回退时间大于等于预设阈值时,确定目标回退时间线;根据时钟回退后的时间点确定所述目标节点的时间戳;确定目标回退时间线的标识信息、目标节点的节点标识和序列号;基于目标节点的节点标识、序列号、时间戳和目标回退时间线的标识信息生成全局唯一标识符。
Description
技术领域
本申请涉及互联网通信技术领域,尤其涉及一种全局唯一标识符生成方法、装置、设备及存储介质。
背景技术
全局唯一标识符是某一体系中相对唯一的编码。分布式数据库的全局一致性、并行操作的可串行性和系统的全局可恢复性等,这些都离不开全局唯一标识符。
现有技术中,为了生成全局唯一标识符常常采用雪花(snowflake)算法,雪花算法采用一个64位的整型表示一个全局唯一标识符,被分为符号位、时间戳、节点标识、序列号,具体的,如图1所示,首位:1bit(比特),符号位,固定为零(由于某些语言,或者某些数据库中没有无符号数,为了生成的全局唯一标识符能够跨平台处理,所以固定填零)。时间戳:41bit,取本地时钟。节点标识:10bit,用于隔离分布式集群中不同节点生成的全局唯一标识符空间,确保不同节点之间生成的全局唯一标识符不会相同。序列号:12位,用来区分在相同时间内生成的全局唯一标识符。但现有联影利用雪花算法生成全局唯一标识符的方式,在服务器时间发生回退时(通常是因为时钟同步所导致),会生成重复的全局唯一标识符,无法满足唯一的要求。因此,需要提供更可靠或更有效的方案,以解决在时钟回退的情况下生成重复全局唯一标识符的问题。
发明内容
本申请提供了一种全局唯一标识符生成方法、装置、设备及存储介质,可以有效解决时钟回退带来的全局唯一标识符重复的问题,满足全局唯一标识符的唯一性需求。
一方面,本申请提供了一种全局唯一标识符生成方法,所述方法包括:
预先设置多条时间线,所述多条时间线包括一条当前时间线和至少一条回退时间线,所述当前时间线的时间进度随着本地时钟的时间推进,所述至少一条回退时间线的时间进度迟于所述当前时间线的时间进度;
在接收到目标节点的全局唯一标识符生成请求时,所述方法包括:
确定本地时钟的时钟状态,当所述时钟状态为时钟回退时,确定时钟回退时间;
当所述时钟回退时间大于等于预设阈值时,基于所述至少一条回退时间线确定目标回退时间线;
根据时钟回退后的时间点确定所述目标节点的时间戳;
确定所述目标回退时间线的标识信息、所述目标节点的节点标识和目标节点的序列号;
基于所述目标节点的节点标识、序列号、时间戳和所述目标回退时间线的标识信息生成所述目标节点的全局唯一标识符。
另一方面提供了一种全局唯一标识符生成装置,所述装置包括:
时间线设置模块,用于预先设置多条时间线,所述多条时间线包括一条当前时间线和至少一条回退时间线,所述当前时间线的时间进度随着本地时钟的时间推进,所述至少一条回退时间线的时间进度迟于所述当前时间线的时间进度;
时钟状态确定模块,用于在接收到目标节点的全局唯一标识符生成请求时,确定本地时钟的时钟状态;
时钟回退时间确定模块,用于当所述时钟状态为时钟回退时,确定时钟回退时间;
目标回退时间线确定模块,用于当所述时钟回退时间大于等于预设阈值时,基于所述至少一条回退时间线确定目标回退时间线;
第一时间戳确定模块,用于根据时钟回退后的时间点确定所述目标节点的时间戳;
第一信息确定模块,用于确定所述目标回退时间线的标识信息、所述目标节点的节点标识和目标节点的序列号;
第一全局唯一标识符生成模块,用于基于所述目标节点的节点标识、序列号、时间戳和所述目标回退时间线的标识信息生成所述目标节点的全局唯一标识符。
另一方面提供了一种全局唯一标识符生成设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述的全局唯一标识符生成方法。
另一方面提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上述的全局唯一标识符生成方法。
本申请提供的全局唯一标识符生成方法、装置、设备及存储介质,具有如下技术效果:
本申请通过预先设置多条时间线,在接收到目标节点的全局唯一标识符生成请求时,线确定本地时钟的状态,在时钟状态为时钟回退,且时钟回退时间较大时,直接以时钟回退后的时间点来确定目标节点的时间戳;并在生成目标节点的全局唯一标识符时,结合多条回退时间线中的目标回退时间线的标识信息,可以有效解决时钟回退带来的全局唯一标识符重复的问题,满足全局唯一标识符的唯一性需求。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1是本申请实施例提供的一种现有的全局唯一标识符的构成示意图;
图2是本申请实施例提供的一种应用环境的示意图;
图3是本申请实施例提供的一种分布式集群的结构示意图;
图4是本申请实施例提供的一种全局唯一标识符生成方法的流程示意图;
图5是本申请实施例提供的一种基于所述至少一条回退时间线确定目标回退时间线的流程示意图;
图6是本申请实施例提供的另一种基于所述至少一条回退时间线确定目标回退时间线的流程示意图;
图7是本申请实施例提供的一种多条时间线的时间进度的示意图;
图8是本申请实施例提供的一种时间线切换后的的当前时间进度的示意图;
图9是本申请实施例提供的一种全局唯一标识符的构成示意图;
图10是本申请实施例提供的另一种全局唯一标识符生成方法的流程示意图;
图11是本申请实施例提供的一种全局唯一标识符生成装置的结构示意图;
图12是本申请实施例提供的一种全局唯一标识符生成方法的服务器的硬件结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
请参阅图2,图2是本申请实施例提供的一种应用环境的示意图,如图2所示,该应用环境至少包括服务器100和分布式集群200。
本说明书实施例中,服务器100可以包括一个独立运行的服务器,或者分布式服务器,或者由多个服务器组成的服务器集群。服务器100可以包括有网络通信单元、处理器和存储器等等。具体的,所述服务器100可以用于生成全局唯一标识符。
本说明书实施例中,所述分布式集群200可以包括多个网络节点,所述网络节点可以包括智能手机、台式电脑、平板电脑、笔记本电脑、数字助理、增强现实(augmentedreality,AR)/虚拟现实(virtual reality,VR)设备、智能可穿戴设备等终端实体设备,也可以包括运行于终端实体设备中的软体,也可以包括一个独立运行的服务器,或者分布式服务器,或者由多个服务器组成的服务器集群等。
在实际应用中,服务器100和分布式集群200可以组成一个分布式系统。
此外,需要说明的是,本说明书实施例中分布式集群200可以应用于区块链网络。具体的如图3所示,可以将分布式集群200中的网络节点均看成分布式系统中的分布式节点201、202、203、204、205和206。各个分布式节点之间可以通过通信链路进行连接,比如可以通过有线通信链路或无线通信链路进行连接等。
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
区块链底层平台可以包括用户管理、基础服务、智能合约以及运营监控等处理模块。其中,用户管理模块负责所有区块链参与者的身份信息管理,包括维护公私钥生成(账户管理)、密钥管理以及用户真实身份和区块链地址对应关系维护(权限管理)等,并且在授权的情况下,监管和审计某些真实身份的交易情况,提供风险控制的规则配置(风控审计);基础服务模块部署在所有区块链节点设备上,用来验证业务请求的有效性,并对有效请求完成共识后记录到存储上,对于一个新的业务请求,基础服务先对接口适配解析和鉴权处理(接口适配),然后通过共识算法将业务信息加密(共识管理),在加密之后完整一致的传输至共享账本上(网络通信),并进行记录存储;智能合约模块负责合约的注册发行以及合约触发和合约执行,开发人员可以通过某种编程语言定义合约逻辑,发布到区块链上(合约注册),根据合约条款的逻辑,调用密钥或者其它的事件触发执行,完成合约逻辑,同时还提供对合约升级注销的功能;运营监控模块主要负责产品发布过程中的部署、配置的修改、合约设置、云适配以及产品运行中的实时状态的可视化输出,例如:告警、监控网络情况、监控节点设备健康状态等。
平台产品服务层提供典型应用的基本能力和实现框架,开发人员可以基于这些基本能力,叠加业务的特性,完成业务逻辑的区块链实现。应用服务层提供基于区块链方案的应用服务给业务参与方进行使用。
以下介绍本申请在一种全局唯一标识符生成方法,图4是本申请实施例提供的一种全局唯一标识符生成方法的流程示意图,本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或服务器产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。具体的如图4所示,所述方法可以包括:
S401:预先设置多条时间线。
本说明书实施例中,所述多条时间线可以包括一条当前时间线和至少一条回退时间线,所述当前时间线的时间进度随着本地时钟的时间推进,所述至少一条回退时间线的时间进度迟于所述当前时间线的时间进度。
具体的,假设一共有4条时间线,不同时间线设置有不同的标识信息,4条时间线起始时的时间点(基准时间点)是一致的,选取任意一条作为为当前时间线,当某一条时间线为当前时间线时,可以并控制该当前时间线随着本地时钟的时间推进时间进度;相应的,其他3条时间线为回退时间线,当某一条时间线为回退时间线时,该回退时间线不随着本地时钟的时间推进时间进度。在发生回退时,当前时间线可以切换为回退时间线,相应的,某一条回退时间线可以切换为当前时间线,相应的,多条时间线呈现交替推进的趋势,这样对于任意一条时间线来说,时间进度一致向前推进的,不存在时钟回退问题。
S403:在接收到目标节点的全局唯一标识符生成请求时,确定本地时钟的时钟状态。
本说明书实施例中,目标节点可以为任一网络节点,具体的,所述本地时钟的时钟状态可以包括时钟回退、时钟正常推进。具体的,当时钟状态为时钟回退时,可以确定时钟发生回退现象;当时钟状态为时钟正常推进时,时钟的时间在正常的推进中。
本说明书实施例中,在接收到目标节点的全局唯一标识符生成请求时,确定本地时钟的时钟状态,可以及时的发现时钟回退现象,避免在时钟回退时直接生成全局唯一标识符。
S405:当所述时钟状态为时钟回退时,确定时钟回退时间。
本说明书实施例中,所述时钟回退时间可以包括时钟回退时的时间点与时钟回退后的时间点之间的时间差。
S407:当所述时钟回退时间大于等于预设阈值时,基于所述至少一条回退时间线确定目标回退时间线。
本说明书实施例中,所述预设阈值可以结合实际应用系统对时钟回退的包容度进行设置,一般的,系统对时钟回退的包容度越高,预设阈值可以相对较大,系统对时钟回退的包容度越低,预设阈值可以相对较小。在一个具体的实施例中,所示预设阈值可以设置为1ms。
本说明书实施例中,当所述至少一条回退时间线的为一条回退时间线时,如图5所示,所述基于所述至少一条回退时间线确定目标回退时间线可以包括:
S4071:确定所述一条回退时间线的当前时间进度对应的时间点;
S4073:当所述当前时间进度对应的时间点不晚于时钟回退时的时间点时,将所述一条回退时间线作为目标回退时间线。
在另一些实施例中,当所述至少一条回退时间线包括一条回退时间线,且当所述一条回退时间线的当前时间进度对应的时间点晚于时钟回退时的时间点时,发出时钟异常预警信息。
本说明书实施例中,时间线的时间进度是一直往前推进的,且为了保证目标回退时间线的时间进度与本地时钟的时间的匹配,在只有一条回退时间线时,可以在该条回退时间线的当前时间进度对应的时间点不晚于时钟回退时的时间点时,将该回退时间线作为目标回退时间线;反之,若该条回退时间线的当前时间进度对应的时间点晚于时钟回退时的时间点时,即找不到合适的回退时间线时,可以进行报错,以便及时检查时钟或者时钟同步服务是否有问题。
在另一些实施例中,如图6所示,当所述至少一条回退时间线包括多条回退时间线时,所述基于所述至少一条回退时间线确定目标回退时间线可以包括:
S4075:确定所述多条回退时间线的当前时间进度对应的时间点;
S4077:将所述当前时间进度对应的时间点不晚于时钟回退时的时间点的回退时间线作为初选时间线;
S4079:计算所述初选时间线的当前时间进度与所述当前时间线的当前时间进度间的时间差。
S40711:将所述时间差最小的初选时间线作为目标回退时间线。
在实际应用中,当所述至少一条回退时间线包括多条回退时间线,同一时间点可以回退多次,但如果时钟回退太过频繁,例如即同一时间点的返回次数(时钟回退到某一时间点的上限次数为回退时间线的数量)达到上限时,可以发出时钟异常预警信息,以便及时检查时钟或者时钟同步服务是否有问题。相应的,所述方法还可以包括:
当所述多条回退时间线的当前时间进度对应的时间点均晚于时钟回退时的时间点时,发出时钟异常预警信息。
本说明书实施例中,在具有多条回退时间线时,可以先选取当前时间进度对应的时间点不晚于时钟回退时的时间点的回退时间线作为初选时间线;然后,可以优选选取与当前时间线的当前时间进度间的时间差最小的初选时间线为目标回退时间线,即将初选时间线中时间进度最前的时间线作为目标回退时间线,这样不仅可以提高选取的目标回退时间线的时间进度与本地时钟的时间的匹配度,还可以大大提高后续的回退时间线的可用性。相应的,当基于上述条件找不到合适的回退时间线时,可以进行报错,以便及时检查时钟或者时钟同步服务是否有问题。
在一些实施例中,在基于所述至少一条回退时间线确定目标回退时间线之后,所述方法还可以包括:
1)暂停所述当前时间线的时间进度的推进,将所述当前时间线切换为回退时间线;
2)将所述目标回退时间线切换为当前时间线;
3)将切换后的当前时间线的时间进度调整为时钟回退时的时间点;
4)控制切换后的当前时间线随着所述本地时钟的时间推进时间进度。
在一个具体的实施例中,假设有4条时间线,如图7所示,时间线的标识信息分别为0、1、2和3,其中,标识信息为0的时间线为当前时间线、标识信息为1、2和3的时间线为回退时间线,假设在某一次发生时钟回退时,4条时间线的时间进度如图7所示,假设目标时间线确定为图7中的标识信息为2的回退时间线。相应的,如图8所示,可以暂停标识信息为0的当前时间线的时间进度的推进,将标识信息为0的当前时间线切换为回退时间线0,将标识信息为2的目标回退时间线切换为当前时间线2,并将切换后的当前时间线2的时间进度调整为时钟回退后的时间点,然后,基于本地时钟的时间推进当前时间线2的时间进度。
S409:根据时钟回退后的时间点确定所述目标节点的时间戳。
在实际应用中,全局唯一标识符包括时间戳,相应的,可以根据时钟回退后的时间点确定所述目标节点的时间戳。具体的,可以将时钟回退后的时间点减去基准时间点,得到目标节点的时间戳。如图8所示,假设时钟回退后的时间点对应的时间点为2019年11月8日16:25:29,基准时间点为2019年11月8日16:20:29相应的,目标节点的时间戳可以为5分钟(300秒)。
S411:确定所述目标回退时间线的标识信息、所述目标节点的节点标识和目标节点的序列号。
本说明书实施例中,由于不同的时间线均设置有用于区别于其他时间线的的标识信息,相应的,可以获取设置好的目标回退时间线的标识信息。目标节点也设置有用于区别于其他节点的节点标识,相应的,可以获取设置好的目标节点的节点标识。
本说明书实施例中,目标节点的序列号可以结合当前时刻接收到的全局唯一标识符生成请求的数量进行设置,以便区分于当前时刻的不同全局唯一标识符生成请求。具体的,可以从零开始递增编号,每生成一个全局唯一标识发后递增,当时间戳递增或者切换时间线时序列号清零。
S413:基于所述目标节点的节点标识、序列号、时间戳和所述目标回退时间线的标识信息生成所述目标节点的全局唯一标识符。
本说明书实施例中,可以分别设置节点标识、序列号、时间戳、目标回退时间线的标识信息的所在的比特位,且节点标识、序列号、时间戳、目标回退时间线的标识信息的顺序可以任意排列,一般的,还可以在首位设置符号位,在一个具体的实施例中,包括符号位、节点标识、序列号、时间戳和所述目标回退时间线的标识信息的全局唯一标识符的构成示意图可以如图9所示,具体的,其中,假设时间线一共为4条,相应的,时间线的标识信息所暂用的比特位可以为2。
在实际应用中,时间线的标识信息所暂用的比特位可以为结合时间线的数量进行设置,时间线的数量可以根据业务的部署环境确定。一般的,时钟同步引起的时钟回退通常都只是偶发性且大多是小距离回退,这种情况时间线的标识信息所暂用的比特位设置可以1位,即双时间线就能很好解决问题。如果环境相对较差,即时钟回退的情况较多时,可将时间线的标识信息所暂用的比特位适当增加。
由以上本说明书实施例提供的技术方案可见,本说明书实施例中通过预先设置多条时间线,在接收到目标节点的全局唯一标识符生成请求时,线确定本地时钟的状态,在时钟状态为时钟回退,且时钟回退时间较大时,直接以以时钟回退后的时间点来来确定目标节点的时间戳;并在生成目标节点的全局唯一标识符时,结合该多条回退时间线中的目标回退时间线的标识信息,可以有效解决时钟回退带来的全局唯一标识符重复的问题,满足全局唯一标识符的唯一性需求。
在另一些实施例中,如图10所示,所述方法还包括:
S415:当所述时钟回退时间小于预设阈值时,等待所述本地时钟的时间推进至时钟回退时的时间;
S417:当时间推进至时钟回退时的时间时,根据时钟回退时的时间点确定所述目标节点的时间戳;
S419:确定所述当前时间线的标识信息、所述目标节点的节点标识和目标节点的序列号。
S421:基于所述目标节点的节点标识、序列号、时间戳和所述当前时间线的标识信息生成所述目标节点的全局唯一标识符。
本说明书实施例中,当所述时钟状态为时钟回退时,所述方法还可以包括:
暂停所述当前时间线的时间进度的推进;
相应的,当时间推进至时钟回退时的时间时,所述方法还可以包括:
控制所述当前时间线随着所述本地时钟的时间推进时间进度。
本说明书实施例中,在时钟回退时间较短时,可以在本地时钟的时间推进至时钟回退时的时间后,再生成全局唯一标识符,由于时钟回退时间较短,即使产生了等待时间,对生成全局唯一标识符的时效性也不会有太大影响,同时也可以有效解决时钟回退带来的全局唯一标识符重复的问题,满足全局唯一标识符的唯一性需求。
在另一些实施例中,当所述时钟状态为正常推进状态时,所述方法还包括:
1)根据所述本地时钟的当前时间点确定所述目标节点的时间戳;
2)确定所述当前时间线的标识信息、所述目标节点的节点标识和目标节点的序列号;
3)基于所述目标节点的节点标识、序列号、时间戳和所述当前时间线的标识信息生成所述目标节点的全局唯一标识符。
本说明书实施例中,时钟状态为正常推进状态时,可以直接本地时钟的当前时间点确定目标节点的时间戳(时间戳的生成方式可以参见上述时间戳的生成方式的描述,在此不再赘述),并在生成目标节点的全局唯一标识符时,结合该当前时间线的标识信息,可以满足全局唯一标识符的唯一性需求。
本申请实施例还提供了一种全局唯一标识符生成装置,如图11所示,所述装置包括:
时间线设置模块1110,可以用于预先设置多条时间线,所述多条时间线包括一条当前时间线和至少一条回退时间线,所述当前时间线的时间进度随着本地时钟的时间推进,所述至少一条回退时间线的时间进度迟于所述当前时间线的时间进度;
时钟状态确定模块1120,可以用于在接收到目标节点的全局唯一标识符生成请求时,确定本地时钟的时钟状态;
时钟回退时间确定模块1130,可以用于当所述时钟状态为时钟回退时,确定时钟回退时间;
目标回退时间线确定模块1140,可以用于当所述时钟回退时间大于等于预设阈值时,基于所述至少一条回退时间线确定目标回退时间线;
第一时间戳确定模块1150,可以用于根据时钟回退后的时间点确定所述目标节点的时间戳;
第一信息确定模块1160,可以用于确定所述目标回退时间线的标识信息、所述目标节点的节点标识和目标节点的序列号;
第一全局唯一标识符生成模块1170,可以用于基于所述目标节点的节点标识、序列号、时间戳和所述目标回退时间线的标识信息生成所述目标节点的全局唯一标识符。
在一些实施例中,所述装置还包括:
第一暂停推进模块,用于在基于所述至少一条回退时间线确定目标回退时间线之后,暂停所述当前时间线的时间进度的推进;
第一时间线切换模块,用于将所述当前时间线切换为回退时间线;
第二时间线切换模块,用于将所述目标回退时间线切换为当前时间线;
第一时间进度推进模块,用于控制切换后的当前时间线随着所述本地时钟的时间推进时间进度。
在一些实施例中,所述装置还包括:
推进等待模块,用于当所述时钟回退时间小于预设阈值时,等待所述本地时钟的时间推进至时钟回退时的时间;
第二时间戳确定模块,用于当时间推进至时钟回退时的时间时,根据时钟回退时的时间点确定所述目标节点的时间戳;
第二信息确定模块,用于确定所述当前时间线的标识信息、所述目标节点的节点标识和目标节点的序列号;
第二全局唯一标识符生成模块,用于基于所述目标节点的节点标识、序列号、时间戳和所述当前时间线的标识信息生成所述目标节点的全局唯一标识符。
在一些实施例中,所述装置还包括:
第二暂停推进模块,用于当所述时钟状态为时钟回退时,暂停所述当前时间线的时间进度的推进;
相应的,所述装置还包括:
第二时间进度推进模块,用于当时间推进至时钟回退时的时间时,控制所述当前时间线随着所述本地时钟的时间推进时间进度。
在一些实施例中,当所述至少一条回退时间线包括一条回退时间线时,所述目标回退时间线确定模块包括:
第一时间点确定单元,用于确定所述一条回退时间线的当前时间进度对应的时间点;
第一目标回退时间线确定单元,用于当所述当前时间进度对应的时间点不晚于时钟回退时的时间点时,将所述一条回退时间线作为目标回退时间线;
当所述至少一条回退时间线包括多条回退时间线时,所述目标回退时间线确定模块包括:
第二时间点确定单元,用于确定所述多条回退时间线的当前时间进度对应的时间点;
初选时间线选取单元,用于将所述当前时间进度对应的时间点不晚于时钟回退时的时间点的回退时间线作为初选时间线;
时间差计算单元,用于计算所述初选时间线的当前时间进度与所述当前时间线的当前时间进度间的时间差;
第二目标回退时间线确定单元,用于将所述时间差最小的初选时间线作为目标回退时间线。
在一些实施例中,所述装置还包括:
第一预警单元,用于当所述至少一条回退时间线包括一条回退时间线,且当所述一条回退时间线的当前时间进度对应的时间点晚于时钟回退时的时间点时,发出时钟异常预警信息;
第二预警单元,用于当所述至少一条回退时间线包括多条回退时间线,且当所述多条回退时间线的当前时间进度对应的时间点均晚于时钟回退时的时间点时,发出时钟异常预警信息。
在一些实施例中,所述装置还包括:
第三时间戳确定模块,用于当所述时钟状态为正常推进状态时,根据所述本地时钟的当前时间点确定所述目标节点的时间戳;
第三信息确定模块,用于确定所述当前时间线的标识信息、所述目标节点的节点标识和目标节点的序列号;
第三全局唯一标识符生成模块,用于基于所述目标节点的节点标识、序列号、时间戳和所述当前时间线的标识信息生成所述目标节点的全局唯一标识符。
所述的装置实施例中的装置与方法实施例基于同样的申请构思。
本申请实施例提供了一种全局唯一标识符生成设备,该全局唯一标识符生成设备包括处理器和存储器,该存储器中存储有至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、该至少一段程序、该代码集或指令集由该处理器加载并执行以实现如上述方法实施例所提供的全局唯一标识符生成方法。
存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、功能所需的应用程序等;存储数据区可存储根据所述设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器还可以包括存储器控制器,以提供处理器对存储器的访问。
本申请实施例所提供的方法实施例可以在移动终端、计算机终端、服务器或者类似的运算装置中执行。以运行在服务器上为例,图12是本申请实施例提供的一种全局唯一标识符生成方法的服务器的硬件结构框图。如图12所示,该服务器1200可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(Central ProcessingUnits,CPU)1210(处理器1210可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器1230,一个或一个以上存储应用程序1223或数据1222的存储介质1220(例如一个或一个以上海量存储设备)。其中,存储器1230和存储介质1220可以是短暂存储或持久存储。存储在存储介质1220的程序可以包括一个或一个以上模块,每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1210可以设置为与存储介质1220通信,在服务器1200上执行存储介质1220中的一系列指令操作。服务器1200还可以包括一个或一个以上电源1260,一个或一个以上有线或无线网络接口1250,一个或一个以上输入输出接口1240,和/或,一个或一个以上操作系统1221,例如WindowsServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
输入输出接口1240可以用于经由一个网络接收或者发送数据。上述的网络具体实例可包括服务器1200的通信供应商提供的无线网络。在一个实例中,输入输出接口1240包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,输入输出接口1240可以为射频(RadioFrequency,RF)模块,其用于通过无线方式与互联网进行通讯。
本领域普通技术人员可以理解,图12所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,服务器1200还可包括比图12中所示更多或者更少的组件,或者具有与图12所示不同的配置。
本申请的实施例还提供了一种存储介质,所述存储介质可设置于设备之中以保存用于实现方法实施例中一种全局唯一标识符生成方法相关的至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、该至少一段程序、该代码集或指令集由该处理器加载并执行以实现上述方法实施例提供的全局唯一标识符生成方法。
可选地,在本实施例中,上述存储介质可以位于计算机网络的多个网络服务器中的至少一个网络服务器。可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
由上述本申请提供的全局唯一标识符生成方法、装置、服务器或存储介质的实施例可见,本申请中通过预先设置多条时间线,在接收到目标节点的全局唯一标识符生成请求时,线确定本地时钟的状态,在时钟状态为时钟回退,且时钟回退时间较大时,直接以钟回退后的时间点来来确定目标节点的时间戳;并在生成目标节点的全局唯一标识符时,结合多条回退时间线中的目标回退时间线的标识信息,可以有效解决时钟回退带来的全局唯一标识符重复的问题,满足全局唯一标识符的唯一性需求。
需要说明的是:上述本申请实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置和服务器实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指示相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种全局唯一标识符生成方法,其特征在于,预先设置多条时间线,所述多条时间线包括一条当前时间线和至少一条回退时间线,所述当前时间线的时间进度随着本地时钟的时间推进,所述至少一条回退时间线的时间进度迟于所述当前时间线的时间进度;在接收到目标节点的全局唯一标识符生成请求时,所述方法包括:
确定本地时钟的时钟状态,当所述时钟状态为时钟回退时,确定时钟回退时间;
当所述时钟回退时间大于等于预设阈值时,基于所述至少一条回退时间线确定目标回退时间线;
根据时钟回退后的时间点确定所述目标节点的时间戳;
确定所述目标回退时间线的标识信息、所述目标节点的节点标识和目标节点的序列号;
基于所述目标节点的节点标识、序列号、时间戳和所述目标回退时间线的标识信息生成所述目标节点的全局唯一标识符。
2.根据权利要求1所述的方法,其特征在于,在基于所述至少一条回退时间线确定目标回退时间线之后,所述方法还包括:
暂停所述当前时间线的时间进度的推进,将所述当前时间线切换为回退时间线;
将所述目标回退时间线切换为当前时间线;
将切换后的当前时间线的时间进度调整为时钟回退时的时间点;
控制切换后的当前时间线随着所述本地时钟的时间推进时间进度。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述时钟回退时间小于预设阈值时,等待所述本地时钟的时间推进至时钟回退时的时间;
当时间推进至时钟回退时的时间时,根据时钟回退时的时间点确定所述目标节点的时间戳;
确定所述当前时间线的标识信息、所述目标节点的节点标识和目标节点的序列号;
基于所述目标节点的节点标识、序列号、时间戳和所述当前时间线的标识信息生成所述目标节点的全局唯一标识符。
4.根据权利要求3所述的方法,其特征在于,当所述时钟状态为时钟回退时,所述方法还包括:
暂停所述当前时间线的时间进度的推进;
相应的,当时间推进至时钟回退时的时间时,所述方法还包括:
控制所述当前时间线随着所述本地时钟的时间推进时间进度。
5.根据权利要求1所述的方法,其特征在于,当所述至少一条回退时间线包括一条回退时间线时,所述基于所述至少一条回退时间线确定目标回退时间线包括:
确定所述一条回退时间线的当前时间进度对应的时间点;
当所述当前时间进度对应的时间点不晚于时钟回退时的时间点时,将所述一条回退时间线作为目标回退时间线;
当所述至少一条回退时间线包括多条回退时间线时,所述基于所述至少一条回退时间线确定目标回退时间线包括:
确定所述多条回退时间线的当前时间进度对应的时间点;
将所述当前时间进度对应的时间点不晚于时钟回退时的时间点的回退时间线作为初选时间线;
计算所述初选时间线的当前时间进度与所述当前时间线的当前时间进度间的时间差;
将所述时间差最小的初选时间线作为目标回退时间线。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
当所述至少一条回退时间线包括一条回退时间线,且当所述一条回退时间线的当前时间进度对应的时间点晚于时钟回退时的时间点时,发出时钟异常预警信息;
相应的,当所述至少一条回退时间线包括多条回退时间线,且当所述多条回退时间线的当前时间进度对应的时间点均晚于时钟回退时的时间点时,发出时钟异常预警信息。
7.根据权利要求1所述的方法,其特征在于,当所述时钟状态为正常推进状态时,所述方法还包括:
根据所述本地时钟的当前时间点确定所述目标节点的时间戳;
确定所述当前时间线的标识信息、所述目标节点的节点标识和目标节点的序列号;
基于所述目标节点的节点标识、序列号、时间戳和所述当前时间线的标识信息生成所述目标节点的全局唯一标识符。
8.一种全局唯一标识符生成装置,其特征在于,所述装置包括:
时间线设置模块,用于预先设置多条时间线,所述多条时间线包括一条当前时间线和至少一条回退时间线,所述当前时间线的时间进度随着本地时钟的时间推进,所述至少一条回退时间线的时间进度迟于所述当前时间线的时间进度;
时钟状态确定模块,用于在接收到目标节点的全局唯一标识符生成请求时,确定本地时钟的时钟状态;
时钟回退时间确定模块,用于当所述时钟状态为时钟回退时,确定时钟回退时间;
目标回退时间线确定模块,用于当所述时钟回退时间大于等于预设阈值时,基于所述至少一条回退时间线确定目标回退时间线;
第一时间戳确定模块,用于根据时钟回退后的时间点确定所述目标节点的时间戳;
第一信息确定模块,用于确定所述目标回退时间线的标识信息、所述目标节点的节点标识和目标节点的序列号;
第一全局唯一标识符生成模块,用于基于所述目标节点的节点标识、序列号、时间戳和所述目标回退时间线的标识信息生成所述目标节点的全局唯一标识符。
9.一种全局唯一标识符生成设备,其特征在于,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至7任一所述的全局唯一标识符生成方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1至7任一所述的全局唯一标识符生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911114276.1A CN110830608B (zh) | 2019-11-14 | 2019-11-14 | 一种全局唯一标识符生成方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911114276.1A CN110830608B (zh) | 2019-11-14 | 2019-11-14 | 一种全局唯一标识符生成方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110830608A true CN110830608A (zh) | 2020-02-21 |
CN110830608B CN110830608B (zh) | 2021-06-15 |
Family
ID=69555649
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911114276.1A Active CN110830608B (zh) | 2019-11-14 | 2019-11-14 | 一种全局唯一标识符生成方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110830608B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111694792A (zh) * | 2020-05-29 | 2020-09-22 | 中国建设银行股份有限公司 | 一种基于snowflake的标识生成方法和装置 |
CN111708997A (zh) * | 2020-06-19 | 2020-09-25 | 浙江大华技术股份有限公司 | 目标对象身份标识符的确定方法、装置及存储介质 |
CN112182005A (zh) * | 2020-10-10 | 2021-01-05 | 中国银联股份有限公司 | 一种流水号生成方法及装置 |
CN113420029A (zh) * | 2021-06-25 | 2021-09-21 | 陕西浪潮英信科技有限公司 | 一种分布式系统全局id生成方法、装置、设备及介质 |
CN113589881A (zh) * | 2021-08-02 | 2021-11-02 | 北京汇钧科技有限公司 | 解决时钟回拨问题的方法和装置 |
CN117742447A (zh) * | 2024-02-21 | 2024-03-22 | 南京云程半导体有限公司 | 时钟自适应调整方法及控制器 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160328437A1 (en) * | 2015-05-04 | 2016-11-10 | International Business Machines Corporation | Maintaining consistency between a transactional database system and a non-transactional content repository for document objects |
CN106572165A (zh) * | 2016-10-26 | 2017-04-19 | 宜人恒业科技发展(北京)有限公司 | 一种分布式全局唯一id应用方法 |
CN108804545A (zh) * | 2018-05-18 | 2018-11-13 | 深圳市彬讯科技有限公司 | 分布式全局唯一id生成方法及设备 |
CN108959386A (zh) * | 2018-05-31 | 2018-12-07 | 深圳壹账通智能科技有限公司 | 分布式全局唯一id生成方法、装置、设备和存储介质 |
CN109740120A (zh) * | 2018-12-14 | 2019-05-10 | 深圳壹账通智能科技有限公司 | 分布式环境下唯一标识的生成方法、装置、计算机设备 |
CN110147281A (zh) * | 2019-05-15 | 2019-08-20 | 上海淇毓信息科技有限公司 | 优化雪花算法在金融业务中应用的方法、装置、电子设备 |
-
2019
- 2019-11-14 CN CN201911114276.1A patent/CN110830608B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160328437A1 (en) * | 2015-05-04 | 2016-11-10 | International Business Machines Corporation | Maintaining consistency between a transactional database system and a non-transactional content repository for document objects |
CN106572165A (zh) * | 2016-10-26 | 2017-04-19 | 宜人恒业科技发展(北京)有限公司 | 一种分布式全局唯一id应用方法 |
CN108804545A (zh) * | 2018-05-18 | 2018-11-13 | 深圳市彬讯科技有限公司 | 分布式全局唯一id生成方法及设备 |
CN108959386A (zh) * | 2018-05-31 | 2018-12-07 | 深圳壹账通智能科技有限公司 | 分布式全局唯一id生成方法、装置、设备和存储介质 |
CN109740120A (zh) * | 2018-12-14 | 2019-05-10 | 深圳壹账通智能科技有限公司 | 分布式环境下唯一标识的生成方法、装置、计算机设备 |
CN110147281A (zh) * | 2019-05-15 | 2019-08-20 | 上海淇毓信息科技有限公司 | 优化雪花算法在金融业务中应用的方法、装置、电子设备 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111694792A (zh) * | 2020-05-29 | 2020-09-22 | 中国建设银行股份有限公司 | 一种基于snowflake的标识生成方法和装置 |
CN111708997A (zh) * | 2020-06-19 | 2020-09-25 | 浙江大华技术股份有限公司 | 目标对象身份标识符的确定方法、装置及存储介质 |
CN111708997B (zh) * | 2020-06-19 | 2023-06-13 | 浙江大华技术股份有限公司 | 目标对象身份标识符的确定方法、装置及存储介质 |
CN112182005A (zh) * | 2020-10-10 | 2021-01-05 | 中国银联股份有限公司 | 一种流水号生成方法及装置 |
CN113420029A (zh) * | 2021-06-25 | 2021-09-21 | 陕西浪潮英信科技有限公司 | 一种分布式系统全局id生成方法、装置、设备及介质 |
CN113420029B (zh) * | 2021-06-25 | 2024-04-12 | 陕西浪潮英信科技有限公司 | 一种分布式系统全局id生成方法、装置、设备及介质 |
CN113589881A (zh) * | 2021-08-02 | 2021-11-02 | 北京汇钧科技有限公司 | 解决时钟回拨问题的方法和装置 |
CN117742447A (zh) * | 2024-02-21 | 2024-03-22 | 南京云程半导体有限公司 | 时钟自适应调整方法及控制器 |
CN117742447B (zh) * | 2024-02-21 | 2024-05-10 | 南京云程半导体有限公司 | 时钟自适应调整方法及控制器 |
Also Published As
Publication number | Publication date |
---|---|
CN110830608B (zh) | 2021-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110830608B (zh) | 一种全局唯一标识符生成方法、装置、设备及存储介质 | |
CN111831485B (zh) | 数据恢复方法、装置、电子设备及介质 | |
CN110784495B (zh) | 基于区块链的大数据集群系统的发现与配置信息管理方法 | |
CN111917897B (zh) | 标识生成方法、装置、设备及存储介质 | |
CN110839071B (zh) | 一种基于区块链的信息存储方法、设备及存储介质 | |
CN111698315B (zh) | 针对区块的数据处理方法、数据处理装置及计算机设备 | |
CN112506702B (zh) | 数据中心容灾方法、装置、设备及存储介质 | |
CN107832169B (zh) | 内存数据迁移方法、装置、终端设备和存储介质 | |
CN111858751A (zh) | 基于区块链的数据存储方法及装置 | |
CN113064744A (zh) | 任务处理方法、装置、计算机可读介质及电子设备 | |
CN110704185B (zh) | 集群系统分片定时任务调度方法及集群系统 | |
CN109614403A (zh) | 集群服务节点的数据一致性校验方法及装置 | |
CN111984601A (zh) | 日志文件删除方法、装置、电子设备及存储介质 | |
CN110968644A (zh) | 一种数据处理方法以及设备 | |
CN111641678A (zh) | 任务调度方法、装置、电子设备及介质 | |
CN112231755A (zh) | 一种基于区块链的数据授权方法、装置及系统 | |
CN107844566B (zh) | 一种dump控制方法及其系统 | |
CN114554593A (zh) | 数据处理方法及装置 | |
CN111953809B (zh) | 一种管理资源地址的方法、装置、设备及系统 | |
CN107656796B (zh) | 一种虚拟机冷迁移方法、系统及设备 | |
CN111078463A (zh) | 数据备份的方法、装置和系统 | |
CN114566269B (zh) | 医疗资源请求方法、装置、电子设备以及存储介质 | |
CN113746676B (zh) | 基于容器集群的网卡管理方法、装置、设备、介质及产品 | |
CN105429795A (zh) | 一种告警监控系统及方法 | |
CN107710165B (zh) | 用于存储节点同步业务请求的方法和装置 |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40022955 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |