CN109951541A - 一种流水号生成方法及服务器 - Google Patents

一种流水号生成方法及服务器 Download PDF

Info

Publication number
CN109951541A
CN109951541A CN201910180289.2A CN201910180289A CN109951541A CN 109951541 A CN109951541 A CN 109951541A CN 201910180289 A CN201910180289 A CN 201910180289A CN 109951541 A CN109951541 A CN 109951541A
Authority
CN
China
Prior art keywords
server
address
event
serial
serial number
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.)
Pending
Application number
CN201910180289.2A
Other languages
English (en)
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.)
China Unionpay Co Ltd
Original Assignee
China Unionpay 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 China Unionpay Co Ltd filed Critical China Unionpay Co Ltd
Priority to CN201910180289.2A priority Critical patent/CN109951541A/zh
Publication of CN109951541A publication Critical patent/CN109951541A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明实施例公开了一种流水号生成方法及服务器,该方法包括:分布式集群系统中的任一服务器(比如第一服务器)确定事件被触发后,生成事件对应的第一数字序列,并根据第一数字序列、事件被触发的时间信息以及第一服务器的地址信息,生成事件对应的流水号。本发明实施例中,通过使用第一服务器的地址信息生成流水号,可以保证第一服务器生成的流水号不同于其它服务器生成的流水号,即可以无需采用多台服务器通信的方式来生成不重复的流水号,从而可以降低成本,提高处理效率;且,通过事件对应的第一数字序列和事件被触发的时间信息来生成事件对应的流水号,可以使得第一服务器生成的多个流水号中不同事件对应的流水号不同。

Description

一种流水号生成方法及服务器
技术领域
本发明涉及计算机技术领域,尤其涉及一种流水号生成方法及服务器。
背景技术
在业务系统中,用户通常可以通过服务器来执行多种业务操作,比如充值话费、购买商品等,其中,用户执行的每一笔业务操作均可以对应有该笔业务操作的流水号。流水号可以为服务器生成的,具体地说,服务器若检测到用户执行了一笔业务操作,则服务器可以根据该笔业务操作的信息生成该笔业务操作的流水号。一般来说,流水号可以唯一标识一笔业务操作。由此可知,生成不重复的流水号对于业务系统的正常运行是比较重要的。
分布式集群系统中通常可以包括多台服务器,用户可以通过任一台服务器执行业务操作;相应地,执行业务操作的服务器中可以存储有多个业务操作的流水号。在一种可能的实现方式中,业务操作的流水号可以为通过多台服务器生成的,在该种方式下,多台服务器可以通过互相通信的方式来避免生成重复的流水号。然而,业务系统中业务操作的数量通常较大,比如每秒钟可以产生10万次业务操作,因此,采用该种方式可能会需要较高的通信成本。在另一种可能的实现方式中,可以在分布式集群系统中设置管理服务器,如此,业务操作的流水号可以为通过管理服务器生成的。具体地说,可以通过管理服务器中的数据库来生成多个业务操作的流水号,并分发给多个服务器进行业务操作。然而,该种方式极度依赖管理服务器的性能,若业务操作的数据量较大,可能会使得数据库瓶颈较为严重,导致流水号生成的处理效率较低。
综上,目前亟需一种流水号生成方法及服务器,用以解决在分布式集群系统中生成不重复的流水号时所存在的成本较高、处理效率较低的技术问题。
发明内容
本发明实施例提供一种流水号生成方法及服务器,用以解决在分布式集群系统中生成不重复的流水号时所存在的成本较高、处理效率较低的技术问题。
本发明实施例提供的一种流水号生成方法,所述方法适用于第一服务器,所述第一服务器为分布式集群系统中所包括的多个服务器中的任一服务器。所述方法包括:第一服务器确定事件被触发后,可以生成所述事件对应的第一数字序列;进一步地,所述第一服务器可以根据所述第一数字序列、所述事件被触发的时间信息以及所述第一服务器的地址信息,生成所述事件对应的流水号。
本发明实施例中,第一服务器的地址信息可以唯一标识第一服务器,通过第一服务器的地址信息生成第一服务器中所触发的事件对应的流水号,可以保证第一服务器生成的流水号不同于其它服务器生成的流水号;相比于现有技术采用多台服务器通信生成不重复的流水号的方式来说,可以降低成本,提高用户的满意度。且,本发明实施例通过事件对应的第一数字序列和事件被触发的时间信息来标识事件,进而生成事件对应的流水号,可以使得第一服务器生成的多个流水号中,不同事件对应的流水号不同。
可选地,所述第一服务器的地址信息为网络协议IP地址和/或媒体访问控制MAC地址。其中,网络协议IP地址和媒体访问控制MAC地址为第一服务器的固有的标识信息,可以用于唯一标识第一服务器;本发明实施例中,通过使用网络协议IP地址和/或媒体访问控制MAC地址来生成流水号,可以无需人为设定服务器的标识,便于实现。
可选地,若所述第一服务器的地址信息为IP地址,则所述第一服务器根据所述第一数字序列、所述事件被触发的时间信息以及所述第一服务器的地址信息,生成所述事件对应的流水号,包括:所述第一服务器可以将所述IP地址对应的点分十进制数据转化为所述IP地址对应的二进制数据,进而将所述IP地址对应的二进制数据转化为所述IP地址对应的十进制数据或十六进制数字;进一步地,所述第一服务器可以根据所述第一数字序列、所述事件被触发的时间信息以及所述第一服务器的IP地址对应的十进制数据或十六进制数字,生成所述事件对应的流水号。
本发明实施例中提供了一种根据IP地址生成流水号的实现方法。一般来说,IP地址对应的点分十进制数据具有较多的字节数,通过将其转化为IP地址对应的十进制数据或十六进制数据,可以简化IP地址对应的字节数,从而使得生成的流水号所占用的字节数更少,且更加直观易懂。
可选地,所述第一服务器的IP地址可以包括前缀部分和后缀部分;所述第一服务器将所述IP地址对应的点分十进制数据转化为所述IP地址对应的二进制数据之前,所述方法还可以包括:所述第一服务器将所述IP地址的前缀部分映射为预设数值后,根据所述映射后的预设数值和所述后缀部分得到所述IP地址对应的点分十进制数据。
本发明实施例中,若IP地址包括的前缀部分数据量较少,则可以将前缀部分映射为预设数值,比如可以将八位的前缀部分映射为一个数字,从而可以简化IP地址对应的点分十进制数据,提高数据处理的速度。
可选地,所述第一数字序列可以包括第一数字子序列和第二数字子序列;其中,所述第一数字子序列可以为循环自增数字序列,所述第二数字子序列可以为随机数字序列。
本发明实施例中,通过使用循环自增数字序列生成流水号,可以使得第一服务器生成的多个流水号各不相同(比如第一服务器在一秒钟内生成多个流水号,则多个流水号的循环自增数字序列可以各不相同),从而使得本发明实施例中的方案可以具有更多的应用场景;进一步地,通过使用随机数字序列生成流水号,可以保证业务操作的安全性,避免黑客根据第一服务器的IP地址、事件被触发的时间信息和循环自增数字序列来获取相关的事件所对应的流水号,从而可以盗取业务信息的技术问题。
本发明实施例提供的一种服务器,所述服务器为分布式集群系统中所包括的多个服务器中的任一服务器;所述服务器包括:
数字序列生成模块,用于确定事件被触发后,生成所述事件对应的第一数字序列;
流水号生成模块,用于根据所述第一数字序列、所述事件被触发的时间信息以及所述服务器的地址信息,生成所述事件对应的流水号。
可选地,若所述服务器的地址信息为IP地址,则所述生成流水号模块具体用于:
将所述IP地址对应的点分十进制数据转化为所述IP地址对应的二进制数据,并将所述IP地址对应的二进制数据转化为所述IP地址对应的十进制数据或十六进制数字;根据所述第一数字序列、所述事件被触发的时间信息以及所述服务器的IP地址对应的十进制数据或十六进制数字,生成所述事件对应的流水号。
可选地,所述服务器的IP地址包括前缀部分和后缀部分;所述服务器还包括映射模块;所述流水号生成模块将所述IP地址对应的点分十进制数据转化为所述IP地址对应的二进制数据之前,所述映射模块用于:
将所述IP地址的前缀部分映射为预设数值,并根据所述预设数值和所述后缀部分得到所述IP地址对应的点分十进制数据。
本发明实施例提供的一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如本发明实施例提供的方法。
本发明实施例提供的一种计算机程序产品,当其在计算机上运行时,使得计算机执行如本发明实施例提供的方法。
本申请的这些实现方式在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种分布式集群系统的系统架构示意图;
图2为本发明实施例提供的一种流水号生成方法对应的流程示意图;
图3a为本发明实施例中提供的一种流水号的结构示意图;
图3b为本发明实施例中提供的又一种流水号的结构示意图;
图3c为本发明实施例中提供的又一种流水号的结构示意图;
图3d为本发明实施例中提供的又一种流水号的结构示意图;
图3e为本发明实施例中提供的又一种流水号的结构示意图;
图3f为本发明实施例中提供的又一种流水号的结构示意图;
图4为本发明实施例中提供的一种服务器的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
图1为本发明实施例提供的一种分布式集群系统的系统架构示意图,如图1所示,分布式集群系统中可以包括至少一个服务器,比如图1所示意出的服务器101、服务器102、服务器103和服务器104。其中,至少一个服务器中的每个服务器均可以执行相应的业务操作,以共同完成分布式集群系统的任务。
具体实施中,至少一个服务器中的每个服务器均可以完成分布式系统所接收到的业务请求;相应地,若分布式系统接收到业务请求,则分布式系统可以将接收到的业务请求发送给至少一个服务器中的任意一个服务器(比如服务器101),或者也可以发送给至少一个服务器中的任意多个服务器(比如服务器101和服务器103),以使任意一个服务器或任意多个服务器执行业务请求所对应的业务操作。
分布式集群系统对应的一种常用的应用场景为用户访问网站的场景,在该场景中,浏览器中可以设置有多个网站的标识,比如新浪网站的标识、百度网站的标识等,用户可以通过触发浏览器上设置的网站的标识来获取到网站提供的服务。以用户访问百度网站为例,若浏览器所属的客户端设备(为便于描述,简称为客户端设备)检测到用户触发了百度网站的标识,则客户端设备可以获取百度网站的IP地址,进而向百度网站的IP地址发送请求消息,此时,请求消息即可以被发送至百度网站的IP地址所对应的服务器(为便于描述,简称为百度服务器)上;相应地,百度服务器可以在接收到请求消息后,根据请求消息向用户提供服务,比如,在浏览器上显示百度搜索的页面。
上述过程描述了用户访问一个网站的实现方式,在分布式集群系统中,客户端设备获取到的百度服务器可以为百度的一级服务器,百度的一级服务器在收到客户端设备发送的请求消息,可以将请求消息分发给各个后端服务器(比如,百度的二级服务器或三级服务器)。相应地,若用户同时访问多个网站(比如百度网站、搜狐网站),则客户端设备可以分别获取百度网站和搜狐网站对应的IP地址,并分别向百度的一级服务器和搜狐的一级服务器发送相应的请求消息,以使百度的一级服务器将请求消息分发给百度的各个后端服务器,以及搜狐的一级服务器将请求消息分发给搜狐的各个后端服务器,从而用户可以获取百度网站和搜狐网站分别提供的服务。如此,分布式集群系统中的多个服务器可以通过协作来完成分布式集群系统的任务,比如可以共同完成用户请求数量较多的任务。
下面基于图1所示意的系统架构来描述本发明实施例中提供的流水号生成方法的具体实现过程。
图2为本发明实施例提供的一种流水号生成方法对应的流程示意图,该方法的执行主体可以为第一服务器,第一服务器可以为分布式集群系统中的至少一个服务器中的任一服务器,比如服务器101。如图2所示,该方法包括:
步骤201,第一服务器确定事件被触发后,生成事件对应的第一数字序列。
此处,事件可以是指与用户相关的事件,比如用户充值话费的事件、用户购买商品的事件、用户访问网站的事件等;或者也可以是指与第一服务器相关的事件,比如第一服务器按照预设周期进行自检测的事件、第一服务器与其它服务器之间的通信的事件等。相应地,触发事件的主体可以为用户,或者也可以为第一服务器,或者还可以为其它服务器,具体不作限定。
具体实施中,第一服务器若确定事件被触发,则可以生成被触发的事件对应的第一数字序列。此处,第一数字序列可以有多种可能,在一种可能的实现方式中,第一数字序列可以包括第一数字子序列和第二数字子序列。其中,第一数字子序列可以为循环自增数字序列,循环自增数字序列的数值可以随着事件被触发的次数依次递增(若循环自增数字序列为5位预设长度的数据,则每次递增可加00001)。具体地说,第一服务器在初始状态(启动后或重置后)时,循环自增数字序列可以为初始状态(比如为00000),若第一服务器确定第一次事件被触发,则循环自增数字序列可以在00000的基础上递增为00001,相应地,第一次事件对应的第一数子序列可以为00001;若第一服务器确定第二次事件被触发,则循环自增数字序列可以在00001的基础上递增为00002,相应地,第二次事件对应的第一数子序列可以为00002;若第一服务器确定第三次事件被触发,则循环自增数字序列可以在00002的基础上递增为00003,相应地,第三次事件对应的第一数子序列可以为00003;依次类推。也就是说,若第一服务器确定事件被触发,则事件对应的第一数字子序列可以为上一事件对应的第一数字子序列与00001的和。
本发明实施例中,循环自增数子序列可以为数值不大于第一预设阈值的数字序列,第一预设阈值可以由本领域技术人员根据实际需要进行设置,具体不作限定。一种可能的实现方式为:第一服务器可以在确定循环自增数子序列的数值的大于第一预设阈值后,更新循环自增数字子序列(即更新为00000)。比如,第一预设阈值为99999,第99999次事件对应的第一数字子序列为99999;若第一服务器确定第100000次事件被触发,则第一服务器可以确定第100000次事件对应的循环自增数字子序列大于第一预设阈值99999,此时,第一服务器可以将循环自增数字子序列更新为00000,即第100000次事件对应的第一数字子序列为00000。
本发明实施例中,通过使用循环自增数字序列生成流水号,可以保证分布式集群系统中的单台服务器所生成的多个流水号不同。以第一服务器为例,若第一服务器在一秒钟内接受到100000个业务请求,则第一服务器可以使用循环自增数字序列生成100000个业务请求分别对应的100000个流水号。其中,100000个流水号中的任意两个流水号的循环自增数字序列不同,从而可以保证第一服务器在一秒内生成的100000个流水号各不相同。本发明实施例中,通过在流水号中设置循环则增数字序列,可以使得服务器在同一时间生成的多个流水号不同,从而可以实现同一服务器生成的多个流水号不重复。
进一步地,第二数字子序列可以为随机数字序列,随机数字序列可以为数值不大于第二预设阈值的数字序列,第二预设阈值可以由本领域技术人员根据实际需要进行设置,具体不作限定。其中,随机数字序列可以为通过调用随机函数生成的。本发明实施例中,通过使用随机数字序列生成流水号,可以降低相关事件之间的联系,避免黑客通过穷举的方式获取到其它事件的流水号,从而保证事件的安全性。举例说明,在同一秒内,若服务器仅采用第一服务器的IP地址、事件被触发的时间信息和循环自增数字序列依次生成了事件i和事件j(j事件为i事件的下一事件)对应的流水号,则黑客获取到i事件对应的流水号后,可以从i事件对应的流水号中获取第一服务器的IP地址和i事件被触发的时间信息,并可以对i事件的循环自增数字序列进行穷举(比如加1),此时,黑客即可获取到j事件对应的流水号。
在一种可能的实现方式中,若分布式集群系统中设置有管理服务器和多个被管理服务器,则随机数字序列还可以用于实现分库或分表操作,从而实现对分布式集群系统中的多个流水号的管理。以分库操作为例,多个服务器中可以分别存储有对应的数据库,若管理服务器生成一个流水号,则管理服务器可以根据流水号中设置的随机数字序列的最后一位数字,将该流水号分配给对应的数据库所在的服务器。举例说明,服务器101~服务器104中分别设置有第一数据库~第四数据库,第一数据库可以用于存储随机数字序列为0~2的流水号,第二数据库可以用于存储随机数字序列为3~5的流水号,第一数据库可以用于存储随机数字序列为6~8的流水号,第一数据库可以用于存储随机数字序列为9的流水号;若管理服务器确定生成的流水号中设置的随机数字序列的最后一位数字为5,则管理服务器可以将生成的该流水号发送给服务器102,以使服务器102将该流水号存储在第二数据库中。本发明实施例中,通过使用随机数字序列生成流水号,可以便于分布式集群系统的业务扩展操作,提高管理的灵活性。
需要说明的是,上述实现方式仅为一种示例性说明,本发明实施例中,管理服务器也可以采用其它方式执行分库或分表操作,比如可以根据随机数字序列中的任意一位或任意多位数字执行分库或分表操作,具体不作限定。
本发明实施例中,还可以预先设置第一数字序列的长度,第一数字子序列可以具有第一预设长度,第二数字子序列可以具有第二预设长度。其中,第一预设长度和第二预设长度可以由本领域技术人员根据实际需要进行设置,第一设长度和第二预设长度可以相同,或者也可以不同,具体不作限定。举例来说明,假如设置的第一预设长度和第二预设长度均为5,若事件对应的循环自增序列为1,则事件对应的第一数字子序列可以为00001;相应地,若时间对应的随机数字序列为3552,则事件对应的第二数字子序列可以为03552。通过设置第一数字子序列和第二数字子序列的长度,可以使得第一服务器生成的多个事件对应的流水号具有一致性,更加美观。
步骤202,第一服务器根据第一数字序列、事件被触发的时间信息以及第一服务器的地址信息,生成事件对应的流水号。
具体实施中,若确定事件被触发,则第一服务器可以获取事件被触发的时间信息。事件被触发的时间信息可以包括年份信息、月份信息、日期信息和时分秒信息,比如20180808080808,或者也可以包括月份信息、日期信息和时分秒信息,比如0808080808,或者还可以包括时分秒信息,比如080808,具体不作限定。需要说明的是,若事件被触发的时间信息包括月份信息、日期信息和时分秒信息,则可能需要根据流水号对应的年份信息分别存储不同年份的流水号,或者也可以按照一年为预设周期清理流水号,从而避免在不同年份生成的流水号重复的技术问题。相应地,若事件被触发的时间信息包括时分秒信息,则可能需要根据流水号对应的日期信息分别存储不同日期的流水号,或者也可以按照一天为预设周期清理流水号,从而避免在不同日期生成的流水号重复的技术问题。在一个示例中,事件被触发的时间信息的长度可以为第三预设长度,第三预设长度可以由本领域技术人员根据实际需要进行设置,具体不作限定。
进一步地,第一服务器还可以获取第一服务器的地址信息。在一个示例中,第一服务器的地址信息可以被预先存储在第一服务器的预设存储空间中;若确定事件被触发,则第一服务器可以从预设存储空间中获取第一服务器的地址信息。通过将第一服务器的地址信息存储在预设存储空间中,可以简化通信时间,提高生成流水号的效率。
本发明实施例中,第一服务器的地址信息可以为网络协议IP地址和/或媒体访问控制MAC地址。其中,IP地址可以为传输控制协议/互联网络协议(Transmission ControlProtocol/Internet Protocol,TCP/IP)指定给第一服务器的地址,IP地址可以根据接入网络的不同而发生变化;MAC地址可以为网络设备制造商生产时写在硬件内部的地址,MAC地址是第一服务器的一种固有属性信息,不会因为接入网络的不同而发生变化。
若第一服务器的地址信息为IP地址,则第一服务器可以在获取到IP地址后,将IP地址对应的点分十进制数据转化为IP地址对应的二进制数据,进而可以将IP地址对应的二进制数据转化为IP地址对应的十进制数据或十六进制数字。进一步地,第一服务器可以根据第一数字序列、事件被触发的时间信息以及第一服务器的IP地址对应的十进制数据或十六进制数字,生成事件对应的流水号。由此可知,本发明实施例中提供了一种根据IP地址生成流水号的实现方法,一般来说,IP地址对应的点分十进制数据具有较多的字节数,通过将其转化为IP地址对应的十进制数据或十六进制数据,可以简化IP地址对应的字节数,从而使得生成的流水号所占用的字节数更少,且更加直观易懂。
本发明实施例中,IP地址可以为网络协议第4版IPv4和网络协议第6版IPv6中的任意一项。若IP地址为IPv4,则IP地址可以为TCP/IP协议指定给第一服务器的32位地址,第一服务器可以在获取到IP地址后,将IP地址对应的点分十进制数据转化为IP地址对应的32位二进制数据,进而可以将IP地址对应的32位二进制数据转化为IP地址对应的10位十进制数据或8位十六进制数据。若IP地址为IPv6,则IP地址可以为TCP/IP协议指定给第一服务器的128位地址,第一服务器可以在获取到IP地址后,将IP地址对应的点分十进制数据转化为IP地址对应的128位二进制数据,进而可以将IP地址对应的128位二进制数据转化为IP地址对应的12位十进制数据或10位十六进制数据。
举例来说明,若第一服务器获取到的IP地址为32位IP地址127.0.0.1,则IP地址127.0.0.1可以为点分十进制IP地址,第一服务器得到IP地址127.0.0.1对应的十进制数据(或十六进制数据)的过程可以参照步骤a~d1(或d2)步骤实现:
步骤a,第一服务器可以将点分十进制IP地址127.0.0.1中每一部分十进制数据转化为二进制数据,得到IP地址111111.0.0.1。
步骤b,第一服务器将IP地址111111.0.0.1中缺失的数据补齐,得到IP地址00111111.00000000.00000000.00000001。
步骤c,第一服务器将IP地址00111111.00000000.00000000.00000001中的点删除,得到IP地址00111111000000000000000000000001(32位二进制IP地址)。
此处,若需要将IP地址127.0.0.1转化为IP地址对应的十进制数据,则可以执行步骤d1;若需要将IP地址127.0.0.1转化为IP地址对应的十六进制数据,则可以执行步骤d2。
步骤d1,第一服务器将IP地址00111111000000000000000000000001转化为十进制数据274877906945。
步骤d2,第一服务器将IP地址00111111000000000000000000000001转化为十六进制数据7F00000001。
需要说明的是,上述过程仅为对IP地址进行转化的两种示例(IP地址对应的十进制数据和十六进制数据),在其它可能的示例中,还可以将IP地址转化为IP地址对应的其它形式,比如八进制。具体实施中,将IP地址转化为何种形式可以由本领域技术人员根据实际需要进行设置,具体不作限定。
在一种可能的实现方式中,第一服务器的IP地址可以包括前缀部分和后缀部分。以32位IP地址为例,在一个示例中,第一服务器若获取到32位IP地址0.0.152.3,则前缀部分可以是指IP地址中数据量较少的前16位数据0.0,后缀部分可以是指IP地址中数据量较多的后16位数据152.3。第一服务器在获取到IP地址0.0.152.3后,可以将IP地址的前缀部分0.0映射为第一预设数值0,并可以根据映射后的第一预设数值0和后缀部分152.3得到IP地址对应的点分十进制数据0.152.3。在又一个示例中,第一服务器若获取到32位IP地址0.1.152.3,则前缀部分可以是指IP地址中数据量较少的前16位数据0.1,后缀部分可以是指IP地址中数据量较多的后16位数据152.3。第一服务器在获取到IP地址0.1.152.3后,可以将IP地址的前缀部分0.1映射为第二预设数值1,并可以根据映射后的第二预设数值1和后缀部分152.3得到IP地址对应的点分十进制数据1.152.3。通过将前缀部分映射为预设数值,可以简化IP地址对应的点分十进制数据,从而提高数据处理的速度。
进一步地,第一服务器可以根据步骤a~步骤d1(或步骤d2)将IP地址对应的点分十进制数据转化为IP地址对应的十进制数据或十六进制数据,并可以根据第一数字序列、事件被触发的时间信息以及第一服务器的IP地址对应的十进制数据或十六进制数字,生成事件对应的流水号。
若第一服务器的地址信息为MAC地址,则第一服务器可以根据第一数字序列、事件被触发的时间信息以及第一服务器的MAC地址,生成事件对应的流水号。本发明实施例中,通过使用媒体访问控制MAC地址来生成流水号,可以无需人为设定服务器的标识,便于实现。
本发明的上述实施例中,第一服务器若确定事件被触发,则可以生成事件对应的第一数字序列,并可以根据事件对应的第一数字序列、事件被触发的时间信息以及第一服务器的地址信息,生成事件对应的流水号。本发明实施例中,第一服务器的地址信息可以唯一标识第一服务器,通过第一服务器的地址信息生成第一服务器中所触发的事件对应的流水号,可以保证第一服务器生成的流水号不同于其它服务器生成的流水号;相比于现有技术采用多台服务器通信生成不重复的流水号的方式来说,可以降低成本,提高用户的满意度。且,本发明实施例通过事件对应的第一数字序列和事件被触发的时间信息来标识事件,进而生成事件对应的流水号,可以使得第一服务器生成的多个流水号中,不同事件对应的流水号不同。需要说明的是,本发明实施例中的流水号生成方法可以为基于程序代码执行的,用户可以通过对事件对应的第一数字序列进行设定,使得本发明中的方法适用于每秒钟生成大量流水号(比如一秒钟生成10000000个流水号)的场景。
图3a~图3d为基于图2所示意的流水号生成方法生成的几种流水号的示意图,下面具体描述图3a~图3d所示意出的流水号的结构和数据长度。
如图3a所示,事件对应的流水号可以包括依次设置的A1子部分、A2子部分、A3子部分和A4子部分。其中,A1子部分可以是指事件被触发的时间信息,A2子部分可以是指第一服务器的IP地址,A3子部分可以是指循环自增数字序列,A4子部分可以是指随机数字序列。
如图3a所示,在A1子部分中,事件被触发的时间信息可以为14位数据长度的数据序列。若事件被触发的时间信息为2019年2月22日14时20分3秒,则A1子部分可以为20190222142003。具体实施中,时间被触发的时间信息所对应的数据长度可以由本领域技术人员根据实际需要进行设置,具体不作限定。
在一个示例中,可以省略事件被触发的时间信息所包括的年份信息的前两个数据,此时,事件被触发的时间信息可以为12位数据长度的数据序列,如图3c所示意的流水号中的C1子部分。比如,事件被触发的时间信息为2019年2月22日14时20分3秒,则B1子部分可以为190222142003。
在一个示例中,第一服务器获取到的IP地址为IPv4,则流水号中包括的第一服务器的IP地址可以为10位数据长度的数据序列(如图3a中的A2子部分),或者也可以为8位数据长度的数据序列(如图3b中的B2子部分)。具体地说,在A2子部分中,第一服务器可以将32位的IPv4转化为IP地址对应的10位的十进制数据,具体实现过程可以参照步骤a~步骤d1中的内容,此处不再赘述。相应地,在B2子部分中,第一服务器可以将32位的IPv4转化为IP地址对应的8位的十六进制数据,具体实现过程可以参照步骤a~步骤d2中的内容,此处不再赘述。
在另一个示例中,第一服务器获取到的IP地址为IPv6,则流水号中包括的第一服务器的IP地址可以为12位数据长度的数据序列(如图3e中的D2子部分),或者也可以为n位数据长度的数据序列(如图3f中的F2子部分),n的数量可以为根据IPv6的前缀部分进行映射得到的。具体地说,在D2子部分中,第一服务器可以将128位的IPv6转化为IP地址对应的12位的十进制数据,具体实现过程可以参照步骤a~步骤d1中的内容,此处不再赘述。相应地,在F2子部分中,第一服务器可以先将128位的IPv6的前缀部分映射为预设数值,进而根据映射后的预设数值和后缀部分将IPv6转化为IP地址对应的n位的十进制数据或者n位的十六进制数据,具体实现过程可以参照步骤a~步骤d1或步骤a~步骤d2中的内容,此处不再赘述。
本发明实施例中,对IP地址的前缀部分进行映射的方式可以有多种,在一种可能的实现方式中,第一服务器中可以存储有预设映射表,若IP地址的前缀部分并不在预设映射表内,则可以生成新的预设数值,采用新的预设数值对IP地址的前缀部分进行映射后,将新的预设数值添加在预设映射表内。表1为一种预设映射表的示意表。
表1:一种预设映射表的示意
IP地址的前缀 预设数值
ffff:0000:0000:0000:0000 0
ffff:0000:0000:0000:0001 1
如表1所示,预设映射表中包括两种预设数值,若IP地址的前缀为ffff:0000:0000:0000:0000,则对应的映射预设数值可以为0;若IP地址的前缀为ffff:0000:0000:0000:0001,则对应的映射预设数值可以为1。在生成流水号时,若第一服务器的IP地址的前缀为ffff:0000:0000:0000:0002,则可以生成新的预设数值2,并使用预设数值2对第一服务器的IP地址的前缀ffff:0000:0000:0000:0002进行映射,并将预设数值2添加到预设映射表1中,得到的新的预设映射表如表2所示。
表2:一种预设映射表的示意
IP地址的前缀 预设数值
ffff:0000:0000:0000:0000 0
ffff:0000:0000:0000:0001 1
ffff:0000:0000:0000:0002 2
需要说明的是,若出现多个预设映射表中不存在的IP地址的前缀,则可以将多个IP地址的前缀映射为同一个预设数值,或者也可以将多个IP地址的前缀分别映射为不同的预设数值,或者还可以将一部分IP地址的前缀映射为相同的预设数值,将另一部分IP地址的前缀映射为不同的预设数值,具体不作限定。在一种可能的实现方式中,本发明实施例中采用如下方式对预设映射表中不存在的多个IP地址进行映射:若检测到出现多个不存在的IP地址,则第一服务器可以对多个不存在的IP地址进行第一次映射,并在分布式集群系统更新时,对多个不存在的IP地址进行第二次映射。举例来说,若第一服务器检测到预设映射表中不存在的IP地址前缀fff1:0000:0000:0000:0000和fff2:0000:0000:0000:0000,则第一服务器可以将fff1:0000:0000:0000:0000和fff2:0000:0000:0000:0000同时映射为4:0000,如此设置可以在分布式集群系统紧急扩容时,通过将多个不同的IP地址前缀映射为一个IP地址前缀的方式来实现临时兼容。进一步地,第一服务器若检测到分布式集群系统更新版本,则第一服务器可以将映射的IP地址前缀(即4:0000)添加到预设映射表中,由于4:0000对应两个IP地址前缀(即fff1:0000:0000:0000:0000和fff2:0000:0000:0000:0000),此时,第一服务器可以在4:0000的基础上再生成一个新的IP地址前缀(比如5:0000),并可以将4:0000与fff1:0000:0000:0000:0000关联、5:0000与fff2:0000:0000:0000:0000关联。
需要说明的是,上述实现方式仅为一种示例性说明,并不构成对本发明实施例中的方案的限定。可以理解的,具体实施中,也可以由运维人员在管理服务器上设置预设映射表,分布式集群系统中的多个服务器可以通过与管理服务器通信的方式,获取多个服务器分别对应的预设映射表,并存储在多个服务器的预设存储空间中。
在A3子部分中,事件对应的循环自增数字序列可以为5位数据长度的数字序列,若循环自增数字序列达到99999时,下一次事件对应的循环自增数字序列可以为0。具体实施中,循环自增数字序列对应的数据长度可以由本领域技术人员根据实际需要进行设定,具体不作限定。比如,在一个示例中,循环自增数字序列为6位数据长度的数字序列,如图3d所示意的流水号中的D3子部分,若循环自增数字序列达到999999时,下一次事件对应的循环自增数字序列可以为0。
在A4子部分中,事件对应的随机数据序列可以为5位数据长度的数字序列,具体实施中,随机数据序列对应的数据长度可以由本领域技术人员根据实际需要进行设定,具体不作限定。比如,随机数据序列可以为6位数据长度的数字序列,或者也可以为4位数据长度的数字序列等。通过设置随机数据序列,可以避免黑客通过穷举等方式获取到事件的流水号,进而获取事件信息,从而可以保证事件的安全。
在一种可能的实现方式中,可以根据随机数据序列中最后一位数据的数值来分配流水号所属的服务器,从而方便分布式集群系统中数据库或数据表的扩展操作,增加便利性。具体地说,假如设置的分配方式为:将随机数据序列最后一位为0~2的流水号及相应的事件信息存储在服务器101中,将随机数据序列最后一位为3~5的流水号及相应的事件信息存储在服务器102中,将随机数据序列最后一位为6~8的流水号及相应的事件信息存储在服务器103中,将随机数据序列最后一位为9的流水号及相应的事件信息存储在服务器104中;若分布式集群系统中服务器101生成的事件T1~事件T5的流水号对应的随机数据序列最后一位分别为5、9、4、1,则服务器101可以将事件T1和事件T4对应的流水号和事件信息发送给服务器102,将事件T2对应的流水号和事件信息发送给服务器104,并可以将事件T1对应的流水号和事件信息存储在服务器101中。
需要说明的是,图3a~图3f仅为事件对应的流水号的一种示例,具体实施中,A1子部分、A2子部分、A3子部分和A4子部分在事件对应的流水号中的顺序可以由本领域技术人员根据实际需要进行设置,具体不作限定。举例来说明,流水号可以包括依次设置的A2子部分、A4子部分、A1子部分和A3子部分,或者可以包括依次设置的A4子部分、A3子部分、A1子部分和A2子部分等,具体的顺序也可以由用户进行设置。
针对上述方法流程,本发明实施例还提供一种服务器,该服务器的具体内容可以参照上述方法实施。
图4为本发明实施例提供的一种服务器的结构示意图,该服务器可以为分布式集群系统中所包括的多个服务器中的任一服务器;如图4所示,该服务器可以包括:
数字序列生成模块401,用于确定事件被触发后,生成所述事件对应的第一数字序列;
流水号生成模块402,用于根据所述第一数字序列、所述事件被触发的时间信息以及所述服务器的地址信息,生成所述事件对应的流水号。
可选地,若所述服务器的地址信息为IP地址,则所述生成流水号模块402具体用于:
将所述IP地址对应的点分十进制数据转化为所述IP地址对应的二进制数据,并将所述IP地址对应的二进制数据转化为所述IP地址对应的十进制数据或十六进制数字;
根据所述第一数字序列、所述事件被触发的时间信息以及所述服务器的IP地址对应的十进制数据或十六进制数字,生成所述事件对应的流水号。
可选地,所述服务器的IP地址包括前缀部分和后缀部分;所述服务器还包括映射模块403;
所述流水号生成模块402将所述IP地址对应的点分十进制数据转化为所述IP地址对应的二进制数据之前,所述映射模块403用于:
将所述IP地址的前缀部分映射为预设数值,并根据所述预设数值和所述后缀部分得到所述IP地址对应的点分十进制数据。
从上述内容可以看出:本发明的上述实施例中,第一服务器若确定事件被触发,则可以生成事件对应的第一数字序列,并可以根据事件对应的第一数字序列、事件被触发的时间信息以及第一服务器的地址信息,生成事件对应的流水号。本发明实施例中,第一服务器的地址信息可以唯一标识第一服务器,通过第一服务器的地址信息生成第一服务器中所触发的事件对应的流水号,可以保证第一服务器生成的流水号不同于其它服务器生成的流水号;相比于现有技术采用多台服务器通信生成不重复的流水号的方式来说,可以降低成本,提高用户的满意度。且,本发明实施例通过事件对应的第一数字序列和事件被触发的时间信息来标识事件,进而生成事件对应的流水号,可以使得第一服务器生成的多个流水号中,不同事件对应的流水号不同。需要说明的是,本发明实施例中的流水号生成方法可以为基于程序代码执行的,用户可以通过对事件对应的第一数字序列进行设定,使得本发明中的方法适用于每秒钟生成大量流水号(比如一秒钟生成10000000个流水号)的场景。
本领域内的技术人员应明白,本发明的实施例可提供为方法、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (10)

1.一种流水号生成方法,其特征在于,所述方法适用于第一服务器,所述第一服务器为分布式集群系统中所包括的多个服务器中的任一服务器;所述方法包括:
第一服务器确定事件被触发后,生成所述事件对应的第一数字序列;
所述第一服务器根据所述第一数字序列、所述事件被触发的时间信息以及所述第一服务器的地址信息,生成所述事件对应的流水号。
2.根据权利要求1所述的方法,其特征在于,所述第一服务器的地址信息为网络协议IP地址和/或媒体访问控制MAC地址。
3.根据权利要求2所述的方法,其特征在于,若所述第一服务器的地址信息为IP地址,则所述第一服务器根据所述第一数字序列、所述事件被触发的时间信息以及所述第一服务器的地址信息,生成所述事件对应的流水号,包括:
所述第一服务器将所述IP地址对应的点分十进制数据转化为所述IP地址对应的二进制数据,并将所述IP地址对应的二进制数据转化为所述IP地址对应的十进制数据或十六进制数字;
所述第一服务器根据所述第一数字序列、所述事件被触发的时间信息以及所述第一服务器的IP地址对应的十进制数据或十六进制数字,生成所述事件对应的流水号。
4.根据权利要求3所述的方法,其特征在于,所述第一服务器的IP地址包括前缀部分和后缀部分;
所述第一服务器将所述IP地址对应的点分十进制数据转化为所述IP地址对应的二进制数据之前,所述方法还包括:
所述第一服务器将所述IP地址的前缀部分映射为预设数值,并根据所述预设数值和所述后缀部分得到所述IP地址对应的点分十进制数据。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述第一数字序列包括第一数字子序列和第二数字子序列;
所述第一数字子序列为循环自增数字序列,所述第二数字子序列为随机数字序列。
6.一种服务器,其特征在于,所述服务器为分布式集群系统中所包括的多个服务器中的任一服务器;所述服务器包括:
数字序列生成模块,用于确定事件被触发后,生成所述事件对应的第一数字序列;
流水号生成模块,用于根据所述第一数字序列、所述事件被触发的时间信息以及所述服务器的地址信息,生成所述事件对应的流水号。
7.根据权利要求6所述的服务器,其特征在于,若所述服务器的地址信息为IP地址,则所述生成流水号模块具体用于:
将所述IP地址对应的点分十进制数据转化为所述IP地址对应的二进制数据,并将所述IP地址对应的二进制数据转化为所述IP地址对应的十进制数据或十六进制数字;
根据所述第一数字序列、所述事件被触发的时间信息以及所述服务器的IP地址对应的十进制数据或十六进制数字,生成所述事件对应的流水号。
8.根据权利要求7所述的服务器,其特征在于,所述服务器的IP地址包括前缀部分和后缀部分;所述服务器还包括映射模块;
所述流水号生成模块将所述IP地址对应的点分十进制数据转化为所述IP地址对应的二进制数据之前,所述映射模块用于:
将所述IP地址的前缀部分映射为预设数值,并根据所述预设数值和所述后缀部分得到所述IP地址对应的点分十进制数据。
9.一种计算机可读存储介质,其特征在于,包括指令,当其在计算机上运行时,使得计算机执行如权利要求1至5中任一项所述的方法。
10.一种计算机程序产品,其特征在于,当其在计算机上运行时,使得计算机执行如权利要求1至5中任一项所述的方法。
CN201910180289.2A 2019-03-11 2019-03-11 一种流水号生成方法及服务器 Pending CN109951541A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910180289.2A CN109951541A (zh) 2019-03-11 2019-03-11 一种流水号生成方法及服务器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910180289.2A CN109951541A (zh) 2019-03-11 2019-03-11 一种流水号生成方法及服务器

Publications (1)

Publication Number Publication Date
CN109951541A true CN109951541A (zh) 2019-06-28

Family

ID=67009434

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910180289.2A Pending CN109951541A (zh) 2019-03-11 2019-03-11 一种流水号生成方法及服务器

Country Status (1)

Country Link
CN (1) CN109951541A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110750506A (zh) * 2019-09-17 2020-02-04 苏宁云计算有限公司 数据对象标识生成方法、装置、计算机设备和存储介质
CN111046057A (zh) * 2019-12-26 2020-04-21 京东数字科技控股有限公司 服务器集群的数据处理方法、装置、计算机设备和介质
CN111291424A (zh) * 2020-02-19 2020-06-16 望海康信(北京)科技股份公司 标识号生成方法、装置、计算机设备及存储介质
CN111949666A (zh) * 2020-08-31 2020-11-17 平安国际智慧城市科技股份有限公司 标识生成方法、装置、电子设备及存储介质
CN112667685A (zh) * 2020-12-29 2021-04-16 北京先进数通信息技术股份公司 一种流水号配置方法、装置、设备及存储介质
CN112862574A (zh) * 2021-04-08 2021-05-28 上海哔哩哔哩科技有限公司 分布式订单号生成方法和系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150242437A1 (en) * 2014-02-26 2015-08-27 Electronics And Telecommunications Research Institute Method and apparatus for reading data in distributed file system
CN105183794A (zh) * 2015-08-24 2015-12-23 用友网络科技股份有限公司 业务流水号生成装置和方法
CN107229555A (zh) * 2017-05-04 2017-10-03 北京小度信息科技有限公司 标识生成方法和装置
CN109344162A (zh) * 2018-09-14 2019-02-15 北京京东金融科技控股有限公司 业务数据处理方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150242437A1 (en) * 2014-02-26 2015-08-27 Electronics And Telecommunications Research Institute Method and apparatus for reading data in distributed file system
CN105183794A (zh) * 2015-08-24 2015-12-23 用友网络科技股份有限公司 业务流水号生成装置和方法
CN107229555A (zh) * 2017-05-04 2017-10-03 北京小度信息科技有限公司 标识生成方法和装置
CN109344162A (zh) * 2018-09-14 2019-02-15 北京京东金融科技控股有限公司 业务数据处理方法和装置

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110750506A (zh) * 2019-09-17 2020-02-04 苏宁云计算有限公司 数据对象标识生成方法、装置、计算机设备和存储介质
WO2021052029A1 (zh) * 2019-09-17 2021-03-25 苏宁云计算有限公司 数据对象标识生成方法、装置、计算机设备和存储介质
CN111046057A (zh) * 2019-12-26 2020-04-21 京东数字科技控股有限公司 服务器集群的数据处理方法、装置、计算机设备和介质
CN111291424A (zh) * 2020-02-19 2020-06-16 望海康信(北京)科技股份公司 标识号生成方法、装置、计算机设备及存储介质
CN111949666A (zh) * 2020-08-31 2020-11-17 平安国际智慧城市科技股份有限公司 标识生成方法、装置、电子设备及存储介质
CN111949666B (zh) * 2020-08-31 2023-12-05 深圳赛安特技术服务有限公司 标识生成方法、装置、电子设备及存储介质
CN112667685A (zh) * 2020-12-29 2021-04-16 北京先进数通信息技术股份公司 一种流水号配置方法、装置、设备及存储介质
CN112667685B (zh) * 2020-12-29 2024-04-16 北京先进数通信息技术股份公司 一种流水号配置方法、装置、设备及存储介质
CN112862574A (zh) * 2021-04-08 2021-05-28 上海哔哩哔哩科技有限公司 分布式订单号生成方法和系统

Similar Documents

Publication Publication Date Title
CN109951541A (zh) 一种流水号生成方法及服务器
CN103177027A (zh) 获取动态Feed索引的方法和系统
CN109977129A (zh) 多级数据缓存方法及设备
CN103685304A (zh) 一种共享session信息的方法和系统
US9323798B2 (en) Storing a key value to a deleted row based on key range density
CN111722918A (zh) 业务标识码生成方法、装置、存储介质及电子设备
EP3961461B1 (en) Method and apparatus for obtaining number for transaction-accessed variable in blockchain in parallel
CN102054000A (zh) 数据查询方法、装置及系统
CN112817538B (zh) 数据处理的方法、装置、设备和存储介质
CN109377383A (zh) 产品数据同步方法、装置、计算机设备及存储介质
CN111737726A (zh) 基于业务数据区块链的关系数据查询方法及装置
CN110855812A (zh) 基于ip地址的定位方法、装置和设备
CN108520401B (zh) 用户名单管理方法、装置、平台及存储介质
CN109871260B (zh) 一种基于容器间共享内存的多维度服务限流方法及系统
CN111695136A (zh) 业务数据区块链的实现方法及其系统
CN116362889A (zh) 基于缓存索引的产品额度校验方法、装置及计算机设备
WO2022077916A1 (zh) 一种数据处理系统、基于区块链的数据处理方法及设备
CN107357853A (zh) 一种redis控制台的操作方法、装置及计算机系统
CN111695132A (zh) 基于业务数据区块链的投票数据存储方法及系统
CN111737728A (zh) 基于业务数据区块链的自媒体数据存储方法及系统
CN106845185A (zh) 一种口令恢复模式的确定方法及系统
CN111695137A (zh) 基于业务数据区块链的旅游数据存储方法及系统
CN106156169A (zh) 离散数据的处理方法和装置
CN103544292A (zh) 基于HASH表的Diameter消息处理方法和装置
CN113194127B (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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20190628