CN110935168B - 用于全球同服架构的分布式id生成方法、装置及设备 - Google Patents
用于全球同服架构的分布式id生成方法、装置及设备 Download PDFInfo
- Publication number
- CN110935168B CN110935168B CN201911175607.2A CN201911175607A CN110935168B CN 110935168 B CN110935168 B CN 110935168B CN 201911175607 A CN201911175607 A CN 201911175607A CN 110935168 B CN110935168 B CN 110935168B
- Authority
- CN
- China
- Prior art keywords
- bit
- zone
- node
- time stamp
- target
- 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.)
- Active
Links
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/35—Details of game servers
- A63F13/352—Details of game servers involving special game server arrangements, e.g. regional servers connected to a national server or a plurality of servers managing partitions of the game world
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/50—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
- A63F2300/51—Server architecture
- A63F2300/513—Server architecture server hierarchy, e.g. local, regional, national or dedicated for different tasks, e.g. authenticating, billing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Multi Processors (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种用于全球同服架构的分布式ID生成方法、装置、设备及存储介质,在解析目标业务请求方发送的ID生成请求后,解析出ID生成请求携带的节点标识,以节点标识在本地生成节点标识区间位,然后对当前时间戳和全球同服架构的上线时间戳作差,在本地生成时间戳区间位,最后取当前时间戳的当前毫秒数进行与业务请求方对应的节点内递增操作,在本地生成节点内递增区间位,将节点标识区间位,时间戳区间位以及节点内递增区间位在本地进行拼接,便获得一个目标ID,因此,采用本发明的方案,在本地可以生成由节点标识区间位,时间戳区间位以及节点内递增区间位拼接得到的目标ID,而不依赖于数据库,避免了对数据库IO造成巨大的压力。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种用于全球同服架构的分布式ID生成方法、装置、设备及存储介质。
背景技术
游戏服务器在全球同服架构的技术上已经得到了广泛应用,可以同时满足在线玩家几万到几十万人。为了对玩家以及各种业务进行统一的管理,对于每一个玩家和每一项业务而言,均需要对应生成与之对应的唯一ID,且需要保证ID的唯一性和总体递增的效果。当前主流的生成ID的方法是基于数据库自增ID,基于数据库自增ID能够保证ID的唯一性和递增性,但是当新进玩家和业务的增多,基于数据库生成ID的操作会极为频繁,将会对数据库IO造成巨大的压力。
发明内容
本发明的目的在于解决现有技术中基于数据库生成ID的操作过于频繁时,对数据库IO造成巨大压力的问题。因此,本发明提供一种用于全球同服架构的分布式ID生成方法、装置、设备及存储介质,分布式ID的生成不依赖于数据库,避免了对数据库IO造成巨大的压力。
为解决上述问题,本发明的实施方式公开了一种用于全球同服架构的分布式ID生成方法,预先设定应用于所述全球同服架构的ID的总位数,将所述ID划分为节点标识区间位、时间戳区间位和节点内递增区间位并设定所述节点标识区间位、所述时间戳区间位和所述节点内递增区间位的位数,所述分布式ID生成方法包括:
接收目标业务请求方发送的ID生成请求;
解析所述ID生成请求携带的节点标识,以所述节点标识本地生成所述节点标识区间位;
对与所述目标业务请求方对应的当前时间戳和所述全球同服架构的上线时间戳作差,本地生成所述时间戳区间位,所述当前时间戳、所述上线时间戳和所述时间戳区间位均以毫秒级为单位;
取所述当前时间戳的当前毫秒数进行与所述业务请求方对应的节点内递增,本地生成所述节点内递增区间位;
将所述节点标识区间位、所述时间戳区间位和所述节点内递增区间位进行本地拼接,获得一个目标ID,并反馈所述目标ID至所述目标业务请求方。
进一步地,在本发明的一些实施例中,在所述全球服架构的上线时间戳与所述当前时间戳的差值大于预设值时,所述分布式ID生成方法还包括:
重新设定所述节点标识区间位、所述时间戳区间位和所述节点内递增区间位的位数,其中,重新设定所述节点标识区间位、所述时间戳区间位和所述节点内递增区间位的位数的同时保证所述ID的总位数不变。
进一步地,在本发明的一些实施例中,所述重新设定所述节点标识区间位、所述时间戳区间位和所述节点内递增区间位的位数包括:
将所述时间戳区间位的原始设定位数扩大至第一目标设定位数;
将所述节点标识区间位的原始设定位数缩小至第二目标设定位或将所述节点内递增区间位的原始设定位数缩小至第三目标设定位数;
所述第二目标设定位数与所述节点标识区间位的原始设定位数的差值或所述第三目标设定位数与所述节点内递增区间位的原始设定位数的差值均与所述第一目标设定位数与所述时间戳区间位的原始设定位数的差值相同,以使所述全球同服架构的ID的总位数保持不变。
进一步地,在本发明的一些实施例中,在所述反馈所述目标ID至所述目标业务请求方之前,所述分布式ID生成方法还包括:
对所述时间戳区间位进行左移位操作,以生成新的时间戳区间位;
对所述节点标识区间位进行左移位操作,以生成新的节点标识区间位;
将所述新的时间戳区间位、所述新的节点标识区间位和所述节点内递增区间位拼接,获得一个新的ID;
将所述新的ID作为所述目标ID发送至所述目标业务请求方。
进一步地,本发明的实施方式公开了一种用于全球同服架构的分布式ID生成装置,所述分布式ID生成装置包括:
接收模块,用于接收目标业务请求方发送的ID生成请求;
解析模块,用于解析所述ID生成请求携带的节点标识,以所述节点标识本地生成所述节点标识区间位;
作差模块,用于对所述当前时间戳和所述全球同服架构的上线时间戳作差,生成所述时间戳区间位,所述当前时间戳、所述上线时间戳和所述时间戳区间位均以毫秒级为单位;
递增模块,用于取所述当前时间戳的当前毫秒数进行与所述业务请求方对应的节点内递增,生成所述节点内递增区间位;
第一拼接模块,用于将所述节点标识区间位、所述时间戳区间位和所述节点内递增区间位进行拼接,获得一个目标ID,并反馈所述目标ID至所述目标业务请求方。
进一步地,在本发明的一些实施例中,所述分布式ID生成装置还包括:
设定模块,用于重新设定所述节点标识区间位、所述时间戳区间位和所述节点内递增区间位的位数,其中,重新设定所述节点标识区间位、所述时间戳区间位和所述节点内递增区间位的位数的同时保证所述ID的总位数不变。
进一步地,在本发明的一些实施例中,所述设定模块包括:
扩大单元,用于将所述时间戳区间位的原始设定位数扩大至第一目标设定位数;
缩小单元,用于将所述节点标识区间位的原始设定位数缩小至第二目标设定位或将所述节点内递增区间位的原始设定位数缩小至第三目标设定位;
其中,所述第二目标设定位与所述节点标识区间位的原始设定位数的差值或所述第三目标设定位与所述节点内递增区间位的原始设定位数的差值均与所述第一目标设定位数与所述时间戳区间位的原始设定位数的差值相同,以使所述全球同服架构的ID的总位数保持不变。
进一步地,在本发明的一些实施例中,所述分布式ID生成装置还包括:
第一左移位模块,用于对所述时间戳区间位进行左移位操作,以生成新的时间戳区间位;
第二左移位模块,用于对所述节点标识区间位进行左移位操作,以生成新的节点标识区间位;
第二拼接模块,用于将所述新的时间戳区间位、所述新的节点标识区间位和所述节点内递增区间位拼接,获得一个新的ID;
发送模块,用于将所述新的ID作为所述目标ID发送至所述目标业务请求方。
进一步地,本发明的实施方式公开了一种计算机设备,包括:
存储器,所述存储器中存储有分布式ID生成程序;
处理器,所述处理器执行所述分布式ID生成程序时,使得所述处理器执行如以上任意一种所述的用于全球同服架构的分布式ID生成方法的步骤。
进一步地,本发明的实施方式公开了一种计算机可读存储介质,所述计算机可读存储介质上存储有分布式ID生成程序,所述分布式ID生成程序被一个或多个处理器执行时,使得一个或多个所述处理器执行如以上任意一种所述的用于全球同服架构的分布式ID生成方法的步骤。
本发明公开了一种用于全球同服架构的分布式ID生成方法、装置、设备及存储介质,具有以下有益效果:
在解析目标业务请求方发送的ID生成请求后,解析出ID生成请求携带的节点标识,以节点标识在本地生成节点标识区间位,然后对当前时间戳和全球同服架构的上线时间戳作差,在本地生成时间戳区间位,最后取当前时间戳的当前毫秒数进行与业务请求方对应的节点内递增操作,在本地生成节点内递增区间位,将节点标识区间位,时间戳区间位以及节点内递增区间位在本地进行拼接,便获得一个目标ID,因此,采用本发明的方案,在本地可以生成由节点标识区间位,时间戳区间位以及节点内递增区间位拼接得到的目标ID,而不依赖于数据库,避免了对数据库IO造成巨大的压力。
本发明其他特征和相应的有益效果在说明书的后面部分进行阐述说明,且应当理解,至少部分有益效果从本发明说明书中的记载变的显而易见。
附图说明
图1(a)为本发明实施例1公开的第一种用于全球同服架构的分布式ID生成方法流程示意图;
图1(b)为本发明实施例1公开的第二种用于全球同服架构的分布式ID生成方法流程示意图;
图1(c)为本发明实施例1公开的第三种用于全球同服架构的分布式ID生成方法流程示意图;
图2(a)为本发明实施例2公开的第一种用于全球同服架构的分布式ID生成装置的结构示意图;
图2(b)为本发明实施例2公开的第二种用于全球同服架构的分布式ID生成装置的结构示意图;
图2(c)为本发明实施例2公开的第三种用于全球同服架构的分布式ID生成装置的结构示意图;
图3为本发明实施例3公开的一种计算机设备的结构示意图。
具体实施方式
以下由特定的具体实施例说明本发明的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其他优点及功效。虽然本发明的描述将结合较佳实施例一起介绍,但这并不代表此发明的特征仅限于该实施方式。恰恰相反,结合实施方式作发明介绍的目的是为了覆盖基于本发明的权利要求而有可能延伸出的其它选择或改造。为了提供对本发明的深度了解,以下描述中将包含许多具体的细节。本发明也可以不使用这些细节实施。此外,为了避免混乱或模糊本发明的重点,有些具体细节将在描述中被省略。需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
应注意的是,在本说明书中,相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
全球服架构,统一部署的集群,需要在短时间内动态、高效地生成大量的ID,并保证ID的唯一性。比如系统多个模块都会发送邮件,如果走统一接口生成邮件ID,就会有很大的性能瓶颈。
游戏服务器在全球同服架构的技术上已经得到了广泛应用,可以同时满足在线玩家几万到几十万人。为了对玩家以及各种业务进行统一的管理,对于每一个玩家和每一项业务而言,均需要对应生成与之对应的唯一ID,且需要保证ID的唯一性和总体递增的效果,比如全球同服架构的各个模块都会发送邮件,对于每一个模块而言,其都需要生成一个邮件ID,当前主流的生成ID的方法是基于数据库自增ID,基于数据库自增ID能够保证ID的唯一性和递增性,但是当新进玩家和业务的增多,基于数据库生成ID的操作会极为频繁,将会对数据库IO造成巨大的压力。
为了解决以上基于数据库生成ID的操作过于频繁时,对数据库IO造成巨大压力的问题。本发明提供了一种用于全球同服架构的分布式ID生成方法、装置、设备及存储介质,分布式ID的生成不依赖于数据库,避免了对数据库IO造成巨大的压力。
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的实施方式作进一步地详细描述。
实施例1
下面结合图1(a)、图1(b)和图1(c)对本发明实施例1公开的一种用于全球同服架构的分布式ID生成方法进行说明。图1(a)为本发明实施例1公开的第一种用于全球同服架构的分布式ID生成方法流程示意图,图1(b)为本发明实施例1公开的第二种用于全球同服架构的分布式ID生成方法流程示意图,图1(c)为本发明实施例1公开的第三种用于全球同服架构的分布式ID生成方法流程示意图。
在为目标业务请求方生成ID时,预先设定应用于全球同服架构的ID总位数,然后将ID划分为节点标识区间位、时间戳区间位和节点内递增区间位并设定节点标识区间位、时间戳区间位和节点内递增区间位的位数。
ID总位数可以为64位、128位等,其具体以二进制进行体现。以ID总位数为64位为例,节点标识区间位可以为高10位、时间戳区间位可以为中间29位、节点内递增区间位可以为低25位。适应性的,节点标识区间位、时间戳区间位以及节点内递增区间位的位数可以互相协调,只要保证ID总位数不超过64位即可。
在图1(a)、图1(b)以及图1(c)中,对于S11、S12以及S13的执行顺序本发明实施例在此并不严格限定其执行顺序,S11、S12以及S13可以同时执行,也可以按照S11、S12以及S13的顺序依次先后执行,作为本发明可选的实施例,S11、S12和S13的执行顺序为按照S11、S12以及S13的顺序依次先后执行,此外,也可以采用其它顺序执行,S11、S12以及S13的执行顺序对于本发明实施例的实施并不会造成实质性的影响。
如图1(a)所示的,用于全球同服架构的分布式ID生成方法包括:
S10:接收目标业务请求方发送的ID生成请求。
S11:解析ID生成请求携带的节点标识,以节点标识本地生成节点标识区间位。
S12:对与目标业务请求方对应的当前时间戳和全球同服架构的上线时间戳作差,本地生成时间戳区间位,其中,当前时间戳、上线时间戳以及时间戳区间位均以毫秒级为单位。
S13:取当前时间戳的当前毫秒数进行与业务请求方对应的节点内递增操作,本地生成节点内递增区间位。
S14:将节点标识区间位、时间戳区间位和节点内递增区间位进行本地拼接,获得一个目标ID,并反馈目标ID值目标业务请求方。
本发明实施例中的分布式ID的生成可以在本地生成,在任何需要用到ID的地方,只需调用ID生成函数即可,ID生成函数被调用时,按照图1(a)中的方式生成一个目标ID。目标业务请求方可以为游戏用户所在的服务器、游戏用户的邮箱、游戏用户所在的工会、游戏用户的战斗角色等,相适应的,生成的ID的类型可以为用户ID、邮箱ID、工会ID以及战斗角色ID等。
节点标识区间位具体是目标业务请求方在中心服务器注册时,由中心服务器向目标业务请求方按照在中心服务器的注册顺序为目标业务请求方分配一个ID,这个ID是唯一确定且不会发生变化的。将该ID作为节点标识区间位,以ID总位数为64位为例,作为节点标识区间位的该ID作为高10位。
时间戳区间位的当前时间戳是分布式ID生成服务器生成ID的时候,调用系统的API接口获得的。将获得的当前时间戳和全球同服架构的上线时间戳作差,然后本地生成时间戳区间位。以ID总位数为64位为例,作为时间戳区间位的该ID作为中间29位。
节点内递增区间位是以目标业务请求方所在的节点内单调递增形成单调递增区间位,节点内递增区间位只要保证在预定时间内(可选为1秒),单调递增的ID不重复即可,即一个节点1秒内可以生成33554432个ID。此外,对于节点内递增区间位在节点内以单调递增的方式生成ID的方式可以参见现有技术。
为了保证生成的ID的唯一性,作为本发明可选的实施例,如图1(b)所示的,在全球服架构的上线时间戳与当前时间戳的差值大于预设值时,分布式ID生成方法还包括:
S15:重新设定节点标识区间位、时间戳区间位和节点内递增区间位的位数,其中,重新设定节点标识区间位、时间戳区间位和节点内递增区间位的位数的同时保证ID的总位数不变。
具体的,当目标业务请求方对应的服务器上线时间戳和当前时间戳的差值过大时,此时目标业务请求方对应的服务器其运营时间更久,此时,可以将时间戳区间位扩大,从而保证ID的唯一性。
作为本发明可选的实施例,重新设定节点标识区间位、时间戳区间位和节点内递增区间位的位数包括:
将时间戳区间位的原始设定位数扩大至第一目标设定位数。
将节点标识区间位的原始设定位数缩小至第二目标设定位数或将节点内递增区间位的原始设定位数缩小至第三目标设定位数。
第二目标设定位于节点标识区间位的原始设定位数的差值或第三目标设定位数与节点内递增区间位的原始设定位数的差值均与第一目标设定位数与时间戳区间位的原始设定位数的差值相同,以使全球同服架构的ID总位数保持不变。
以ID总位数为64位为例,节点标识区间位为高10位(原始设定位数)、时间戳区间位为中间29位(原始设定位数)、节点内递增区间位为低25位(原始设定位数),当时间戳区间位扩大1位后,时间戳区间位的第一目标设定位数为30位,可以将节点内递增区间位由原始设定位数25位缩小至24位(第三目标设定位数)保持节点标识区间位的原始设定位数不变,或者可以将节点标识区间位的原始设定位数由10位缩小至第二目标设定位数9位保持节点内递增区间位不变。
通过重新设定节点标识区间位、时间戳区间位和节点内递增区间位的位数,每一个区间位的ID的位数都发生了改变,最终拼接生成的ID也对应发生变化,进一步保证了ID的唯一性。
为了进一步保证生成的ID的唯一性、安全性和可靠性,作为本发明可选的实施例,如图1(c)所示的,在反馈目标ID至目标业务请求方之前,分布式ID生成方法还包括:
S16:对时间戳区间位进行左移位操作,以生成新的时间戳区间位。
S17:对节点标识区间位进行左移位操作,以生成新的节点标识区间位。
S18:将新的时间戳区间位、新的节点标识区间位和节点内递增区间位进行拼接,获得一个新的ID。
S19:将新的ID作为目标ID发送至目标业务请求方。
具体的,对时间戳区间位进行左移位操作、对节点标识区间位进行左移位操作时,左移位操作的个数可以为8位,当然对于左移位操作的位数也可以根据ID总位数以及系统要求进行设定,本发明实施例在此并不作限定。
在反馈目标ID至目标业务请求方之前,对时间戳区间位和节点标识区间位进行左移位操作,从而重新拼接一个新的ID,保证了最终反馈至目标业务请求方的ID的唯一性、安全性和可靠性。
本发明实施例1公开的一种用于全球同服架构的分布式ID生成方法,在解析目标业务请求方发送的ID生成请求后,解析出ID生成请求携带的节点标识,以节点标识在本地生成节点标识区间位,然后对当前时间戳和全球同服架构的上线时间戳作差,在本地生成时间戳区间位,最后取当前时间戳的当前毫秒数进行与业务请求方对应的节点内递增操作,在本地生成节点内递增区间位,将节点标识区间位,时间戳区间位以及节点内递增区间位在本地进行拼接,便获得一个目标ID,将目标ID反馈至目标业务请求方,因此,采用本发明的方案,在本地可以生成由节点标识区间位,时间戳区间位以及节点内递增区间位拼接得到的目标ID,而不依赖于数据库,避免了对数据库IO造成巨大的压力。
实施例2
下面结合图2(a)、图2(b)和图2(c)对本发明实施例2公开的一种用于全球同服架构的分布式ID生成装置进行说明。图2(a)为本发明实施例2公开的第一种用于全球同服架构的分布式ID生成装置的结构示意图,图2(b)为本发明实施例2公开的第二种用于全球同服架构的分布式ID生成装置的结构示意图,图2(c)为本发明实施例2公开的第三种用于全球同服架构的分布式ID生成装置的结构示意图。
图2(a)、图2(b)和图2(c)公开的一种用于全球同服架构的分布式ID生成装置是和以上实施例1公开的一种用于全球同服架构的分布式ID生成方法对应的装置实施例,相同部分可以参见以上实施例1的描述,本发明实施例2在此不再赘述。
如图2(a)所示的,用于全球同服架构的分布式ID生成装置包括:
接收模块20,用于接收目标业务请求方发送的ID生成请求;
解析模块21,用于解析ID生成请求携带的节点标识,以节点标识本地生成节点标识区间位;
作差模块22,用于对当前时间戳和全球同服架构的上线时间戳作差,生成时间戳区间位,当前时间戳、上线时间戳和时间戳区间位均以毫秒级为单位;
递增模块23,用于取当前时间戳的当前毫秒数进行与业务请求方对应的节点内递增,生成节点内递增区间位;
第一拼接模块24,用于将节点标识区间位、时间戳区间位和节点内递增区间位进行拼接,获得一个目标ID,并反馈目标ID至目标业务请求方。
如图2(b)所示的,用于全球同服架构的分布式ID生成装置还包括:
设定模块25,用于重新设定节点标识区间位、时间戳区间位和节点内递增区间位的位数,其中,重新设定节点标识区间位、时间戳区间位和节点内递增区间位的位数的同时保证ID的总位数不变。
设定模块25包括:
扩大单元,用于将时间戳区间位的原始设定位数扩大至第一目标设定位数;
缩小单元,用于将节点标识区间位的原始设定位数缩小至第二目标设定位或将节点内递增区间位的原始设定位数缩小至第三目标设定位;
其中,第二目标设定位与节点标识区间位的原始设定位数的差值或第三目标设定位与节点内递增区间位的原始设定位数的差值均与第一目标设定位数与时间戳区间位的原始设定位数的差值相同,以使全球同服架构的ID的总位数保持不变。
如图2(c)所示的,用于全球同服架构的分布式ID生成装置还包括:
第一左移位模块26,用于对时间戳区间位进行左移位操作,以生成新的时间戳区间位;
第二左移位模块27,用于对节点标识区间位进行左移位操作,以生成新的节点标识区间位;
第二拼接模块28,用于将新的时间戳区间位、新的节点标识区间位和节点内递增区间位拼接,获得一个新的ID;
发送模块29,用于将新的ID作为目标ID发送至目标业务请求方。
本发明实施例2公开的一种用于全球同服架构的分布式ID生成装置,在解析目标业务请求方发送的ID生成请求后,解析出ID生成请求携带的节点标识,以节点标识在本地生成节点标识区间位,然后对当前时间戳和全球同服架构的上线时间戳作差,在本地生成时间戳区间位,最后取当前时间戳的当前毫秒数进行与业务请求方对应的节点内递增操作,在本地生成节点内递增区间位,将节点标识区间位,时间戳区间位以及节点内递增区间位在本地进行拼接,便获得一个目标ID,将目标ID反馈至目标业务请求方,因此,采用本发明的方案,在本地可以生成由节点标识区间位,时间戳区间位以及节点内递增区间位拼接得到的目标ID,而不依赖于数据库,避免了对数据库IO造成巨大的压力。
实施例3
下面对本发明实施例3公开的一种计算机设备进行说明,图3为本发明实施例3公开的一种计算机设备的结构示意图。
如图3所示的,图3示出的计算机设备3包括:
存储器30,存储器30中存储有分布式ID生成程序。
处理器31,处理器31执行存储器30中存储的分布式ID生成程序时,使得处理器31执行如以上实施例提到的用于全球同服架构的分布式ID生成方法的步骤。
计算机设备3包括:电源32、至少一个有线网络接口或无线网络接口33、至少一个数据输入输出接口34。
电源32分别与存储器30和处理器31连接,用于供电。有线网络接口或无线网络接口33和数据输入输出接口34均用于对接外部设备用于进行数据通讯及传输。存储器30可以是短暂存储或持久存储。
此外,本发明实施例3还公开了一种计算机可读存储介质,计算机可读存储介质上存储有分布式ID生成程序,分布式ID生成程序被一个或多个处理器执行时,使得一个或多个处理器执行如实施例1提到的用于全球同服架构的分布式ID生成方法的步骤。
计算机可读存储介质可以为只读存储器、随机存取存储器、硬盘或者光盘等。
本发明实施例3公开的一种计算机设备和计算机可读存储介质,在解析目标业务请求方发送的ID生成请求后,解析出ID生成请求携带的节点标识,以节点标识在本地生成节点标识区间位,然后对当前时间戳和全球同服架构的上线时间戳作差,在本地生成时间戳区间位,最后取当前时间戳的当前毫秒数进行与业务请求方对应的节点内递增操作,在本地生成节点内递增区间位,将节点标识区间位,时间戳区间位以及节点内递增区间位在本地进行拼接,便获得一个目标ID,将目标ID反馈至目标业务请求方,因此,采用本发明的方案,在本地可以生成由节点标识区间位,时间戳区间位以及节点内递增区间位拼接得到的目标ID,而不依赖于数据库,避免了对数据库IO造成巨大的压力。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (6)
1.一种用于全球同服架构的分布式ID生成方法,其特征在于,预先设定应用于所述全球同服架构的ID的总位数,将所述ID划分为节点标识区间位、时间戳区间位和节点内递增区间位并设定所述节点标识区间位、所述时间戳区间位和所述节点内递增区间位的位数,所述分布式ID生成方法包括:
接收目标业务请求方发送的ID生成请求;
解析所述ID生成请求携带的节点标识,以所述节点标识本地生成所述节点标识区间位;
对与所述目标业务请求方对应的当前时间戳和所述全球同服架构的上线时间戳作差,本地生成所述时间戳区间位,所述当前时间戳、所述上线时间戳和所述时间戳区间位均以毫秒级为单位;
取所述当前时间戳的当前毫秒数进行与所述业务请求方对应的节点内递增操作,本地生成所述节点内递增区间位;
将所述节点标识区间位、所述时间戳区间位和所述节点内递增区间位进行本地拼接,获得一个目标ID,并反馈所述目标ID至所述目标业务请求方;
其中,在所述全球同服架构的上线时间戳与所述当前时间戳的差值大于预设值时,所述分布式ID生成方法还包括:
重新设定所述节点标识区间位、所述时间戳区间位和所述节点内递增区间位的位数,其中,重新设定所述节点标识区间位、所述时间戳区间位和所述节点内递增区间位的位数的同时保证所述ID的总位数不变;
其中,所述重新设定所述节点标识区间位、所述时间戳区间位和所述节点内递增区间位的位数包括:
将所述时间戳区间位的原始设定位数扩大至第一目标设定位数;
将所述节点标识区间位的原始设定位数缩小至第二目标设定位或将所述节点内递增区间位的原始设定位数缩小至第三目标设定位数;
所述第二目标设定位数与所述节点标识区间位的原始设定位数的差值或所述第三目标设定位数与所述节点内递增区间位的原始设定位数的差值均与所述第一目标设定位数与所述时间戳区间位的原始设定位数的差值相同,以使所述全球同服架构的ID的总位数保持不变。
2.如权利要求1所述的用于全球同服架构的分布式ID生成方法,其特征在于,在所述反馈所述目标ID至所述目标业务请求方之前,所述分布式ID生成方法还包括:
对所述时间戳区间位进行左移位操作,以生成新的时间戳区间位;
对所述节点标识区间位进行左移位操作,以生成新的节点标识区间位;
将所述新的时间戳区间位、所述新的节点标识区间位和所述节点内递增区间位拼接,获得一个新的ID;
将所述新的ID作为所述目标ID发送至所述目标业务请求方。
3.一种用于全球同服架构的分布式ID生成装置,其特征在于,所述分布式ID生成装置包括:
接收模块,用于接收目标业务请求方发送的ID生成请求;
解析模块,用于解析所述ID生成请求携带的节点标识,以所述节点标识本地生成所述节点标识区间位;
作差模块,用于对当前时间戳和所述全球同服架构的上线时间戳作差,生成所述时间戳区间位,所述当前时间戳、所述上线时间戳和所述时间戳区间位均以毫秒级为单位;
递增模块,用于取所述当前时间戳的当前毫秒数进行与所述业务请求方对应的节点内递增,生成所述节点内递增区间位;
第一拼接模块,用于将所述节点标识区间位、所述时间戳区间位和所述节点内递增区间位进行拼接,获得一个目标ID,并反馈所述目标ID至所述目标业务请求方;
其中,所述分布式ID生成装置还包括:
设定模块,用于重新设定所述节点标识区间位、所述时间戳区间位和所述节点内递增区间位的位数,其中,重新设定所述节点标识区间位、所述时间戳区间位和所述节点内递增区间位的位数的同时保证所述ID的总位数不变;
其中,所述设定模块包括:
扩大单元,用于将所述时间戳区间位的原始设定位数扩大至第一目标设定位数;
缩小单元,用于将所述节点标识区间位的原始设定位数缩小至第二目标设定位或将所述节点内递增区间位的原始设定位数缩小至第三目标设定位;
其中,所述第二目标设定位与所述节点标识区间位的原始设定位数的差值或所述第三目标设定位与所述节点内递增区间位的原始设定位数的差值均与所述第一目标设定位数与所述时间戳区间位的原始设定位数的差值相同,以使所述全球同服架构的ID的总位数保持不变。
4.如权利要求3所述的用于全球同服架构的分布式ID生成装置,其特征在于,所述分布式ID生成装置还包括:
第一左移位模块,用于对所述时间戳区间位进行左移位操作,以生成新的时间戳区间位;
第二左移位模块,用于对所述节点标识区间位进行左移位操作,以生成新的节点标识区间位;
第二拼接模块,用于将所述新的时间戳区间位、所述新的节点标识区间位和所述节点内递增区间位拼接,获得一个新的ID;
发送模块,用于将所述新的ID作为所述目标ID发送至所述目标业务请求方。
5.一种计算机设备,其特征在于,包括:
存储器,所述存储器中存储有分布式ID生成程序;
处理器,所述处理器执行所述分布式ID生成程序时,使得所述处理器执行如权利要求1-2任意一项所述的用于全球同服架构的分布式ID生成方法的步骤。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有分布式ID生成程序,所述分布式ID生成程序被一个或多个处理器执行时,使得一个或多个所述处理器执行如权利要求1至2任意一项所述的用于全球同服架构的分布式ID生成方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911175607.2A CN110935168B (zh) | 2019-11-26 | 2019-11-26 | 用于全球同服架构的分布式id生成方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911175607.2A CN110935168B (zh) | 2019-11-26 | 2019-11-26 | 用于全球同服架构的分布式id生成方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110935168A CN110935168A (zh) | 2020-03-31 |
CN110935168B true CN110935168B (zh) | 2023-09-01 |
Family
ID=69908629
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911175607.2A Active CN110935168B (zh) | 2019-11-26 | 2019-11-26 | 用于全球同服架构的分布式id生成方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110935168B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111708997B (zh) * | 2020-06-19 | 2023-06-13 | 浙江大华技术股份有限公司 | 目标对象身份标识符的确定方法、装置及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105848291A (zh) * | 2016-05-25 | 2016-08-10 | 努比亚技术有限公司 | 一种系统消息的处理方法和服务器 |
CN106572165A (zh) * | 2016-10-26 | 2017-04-19 | 宜人恒业科技发展(北京)有限公司 | 一种分布式全局唯一id应用方法 |
CN108959386A (zh) * | 2018-05-31 | 2018-12-07 | 深圳壹账通智能科技有限公司 | 分布式全局唯一id生成方法、装置、设备和存储介质 |
CN109309736A (zh) * | 2017-07-28 | 2019-02-05 | 北京京东尚科信息技术有限公司 | 全局唯一id的生成方法和生成装置 |
CN110263565A (zh) * | 2019-06-28 | 2019-09-20 | 北京百度网讯科技有限公司 | 用于调用服务的方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8769703B2 (en) * | 2006-04-27 | 2014-07-01 | Unisys Corporation | System and method for providing a mechanism to virtualize a perpetual, unique system identity on a partitioned computer system |
-
2019
- 2019-11-26 CN CN201911175607.2A patent/CN110935168B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105848291A (zh) * | 2016-05-25 | 2016-08-10 | 努比亚技术有限公司 | 一种系统消息的处理方法和服务器 |
CN106572165A (zh) * | 2016-10-26 | 2017-04-19 | 宜人恒业科技发展(北京)有限公司 | 一种分布式全局唯一id应用方法 |
CN109309736A (zh) * | 2017-07-28 | 2019-02-05 | 北京京东尚科信息技术有限公司 | 全局唯一id的生成方法和生成装置 |
CN108959386A (zh) * | 2018-05-31 | 2018-12-07 | 深圳壹账通智能科技有限公司 | 分布式全局唯一id生成方法、装置、设备和存储介质 |
CN110263565A (zh) * | 2019-06-28 | 2019-09-20 | 北京百度网讯科技有限公司 | 用于调用服务的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110935168A (zh) | 2020-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11632441B2 (en) | Methods, systems, and devices for electronic note identifier allocation and electronic note generation | |
CN107783975B (zh) | 分布式数据库同步处理的方法和装置 | |
CN111046057B (zh) | 服务器集群的数据处理方法、装置、计算机设备和介质 | |
CN111277639B (zh) | 一种保持数据一致性的方法和装置 | |
CN111143382B (zh) | 数据处理方法、系统和计算机可读存储介质 | |
CN109542865A (zh) | 分布式集群系统配置文件同步方法、装置、系统及介质 | |
CN110083627B (zh) | 数据处理方法、系统、计算机设备和存储介质 | |
CN110119292A (zh) | 系统运行参数查询方法、匹配方法、装置及节点设备 | |
CN105119966A (zh) | 一种公众号管理方法及装置 | |
CN103379159A (zh) | 一种分布式Web站点数据同步的方法 | |
CN111399764B (zh) | 数据存储方法、读取方法、装置、设备及存储介质 | |
CN107133231B (zh) | 一种数据获取方法和装置 | |
CN113076304A (zh) | 一种分布式版本管理方法、装置和系统 | |
CN111897643B (zh) | 线程池配置系统、方法、装置和存储介质 | |
CN113821506A (zh) | 用于任务系统的任务执行方法、装置、系统、服务器和介质 | |
CN110935168B (zh) | 用于全球同服架构的分布式id生成方法、装置及设备 | |
CN113704245A (zh) | 一种数据库主键生成方法、分表定位方法和装置 | |
CN114679349A (zh) | 一种数据通信方法及装置 | |
CN108121730B (zh) | 一种将数据更新快速同步到业务系统的装置及方法 | |
CN110609707B (zh) | 在线数据处理系统生成方法、装置及设备 | |
US10110670B2 (en) | Allocation of service endpoints to servers | |
CN112395313A (zh) | 全局序列生成方法、装置、电子设备及计算机存储介质 | |
CN115189931A (zh) | 一种分布式密钥管理方法、装置、设备、存储介质 | |
CN115269719A (zh) | 数据同步方法及装置 | |
CN111506644B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |