业务ID生成方法、装置及系统与流程

文档序号:12789701阅读:315来源:国知局
业务ID生成方法、装置及系统与流程
本发明涉及互联网
技术领域
,具体而言,涉及一种业务ID生成方法、装置及系统。
背景技术
:随着互联网技术的发展,在后台服务器进行业务处理时,通常需要生成唯一ID(identification,身份标识),以区分不同用户的同种业务操作,如生成唯一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号段。结合第一方面第五种可能的实施方式,本发明实施例提供了第一方面第六种可能的实施方式,其中,所述方法还包括:确定所述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生成请求,其中,所述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生成速率低,严重影响支付、金融等核心业务的吞吐量的问题。为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。图1为本发明实施例提供的业务ID生成方法的第一种流程示意图;图2为本发明实施例提供的业务ID生成方法的应用环境示意图;图3为本发明实施例提供的业务ID生成方法的第二种流程示意图;图4为本发明实施例提供的业务ID生成系统的组成示意图;图5为本发明实施例提供的业务ID生成方法的第三种流程示意图;图6为本发明实施例提供的业务ID生成装置的模块组成示意图;图7为本发明实施例提供的计算机设备的模块组成示意图。具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。考虑到利用现有技术中的方法生成唯一ID时,生成效率依赖于数据库的读写性能,当数据库的读写性能较差时,唯一ID生成速率低,严重影响支付、金融等核心业务的吞吐量,本发明提供了一种业务ID生成方法、装置及系统,下面通过实施例进行具体描述。图1为本发明实施例提供的业务ID生成方法的第一种流程示意图,该方法由ID生成服务器执行,特别是由ID生成服务器中的可负载均衡的RPC(RemoteProcedureCallProtocol远程过程调用协议)服务执行,如图1所示,该方法包括以下步骤:步骤S102,缓存多个业务的业务标识和多个ID号段,其中,业务标识与ID号段一一对应。本实施例中,首先确定多个业务,该多个业务为需要生成唯一ID的业务,包括下单业务、支付业务、评论发表业务、文章发表业务等。确定多个业务后,为每个业务分配ID号段,ID号段指的是一段包括多个ID值的纯数字区间,该纯数字区间能够由起始值和终止值表示,如下单业务的ID号段为1至100,其中,该ID号段包括100个ID值,最小的ID值为1,也即为起始值,最大的ID值为100,也即为终止值。为每个业务分配ID号段的作用是,当需要生成某个业务的唯一ID时,从该业务对应的ID号段中选择一个值作为该业务的唯一ID。唯一ID具有业务唯一性,对于同一业务而言,每次生成的该业务的唯一ID均不同,如每次生成的订单标识均不同,以区分不同用户的下单动作,但是对于不同业务而言,不同业务的唯一ID可以相同,比如生成的订单标识和生成的文章标识可以相同。因此本实施例中,在为不同的业务分配ID号段时,不同业务的ID号段可以相同,如下单业务的ID号段和支付业务的ID号段均为100至200。一种具体的实施方式中,在数据库服务器中为每个业务建立一个发号表,该发号表存储在数据库服务器的磁盘内,表1为本发明实施例提供的发号表的示例,通过该发号表生成每个业务的ID号段。表1字段含义biz_tag业务标识max_id所属业务前次生成的ID号段的终止值step所属业务的ID号段的设定跨度desc所属业务的备注信息update_time该发号表的最新更新时间表1中,biz_tag字段为每个业务的业务标识,用来区分各个需要生成唯一ID的业务;max_id字段与biz_tag字段相对应,表示所属业务前次生成的ID号段的终止值,也即所属业务前次生成的ID号段的最大值,max_id字段的最大值可以为2^64,即9223372036854775807;step字段与biz_tag字段相对应,表示所属业务的ID号段的设定跨度,也即所属业务的ID号段的起始值与终止值的差值,step字段的最大值可以为2^32,即2147483647;desc与biz_tag字段相对应,表示所属业务的备注信息,具体备注信息可以是所属业务的每秒请求数(QPS)的峰值,以及所属业务所在的业务线,比如,备注信息为,外卖订单核心业务,QPS峰值2000,QPS平均值800;update_time与biz_tag字段相对应,表示该发号表的最新更新时间,其中,更新发号表的动作可以为修改max_id字段。表1中,所属业务前次生成的ID号段的终止值和所属业务的ID号段的设定跨度统称为号段参数。在数据库服务器中为每个业务建立发号表后,根据每个业务对应的发号表的内容,确定每个业务的业务标识和每个业务的ID号段。具体地,读取数据库服务器中存储的每个业务的业务标识,即前述的biz_tag字段,确定每个业务的业务标识,读取数据库服务器中存储的每个业务的号段参数,根据每个业务的号段参数,确定每个业务的ID号段,其中,号段参数包括所属业务前次生成的ID号段的终止值,也即max_id字段的值,和所属业务的ID号段的设定跨度,也即step字段的值。根据每个业务前次生成的ID号段的终止值,和每个业务的ID号段的设定跨度,确定每个业务的ID号段的具体过程为,将前次生成的ID号段的终止值,确定为当前生成的ID号段的起始值,将前次生成的ID号段的终止值与设定跨度的和,确定为当前生成的ID号段的终止值,根据确定的起始值和终止值,确定每个业务的ID号段,其中,每个业务前次生成的ID号段的终止值初始为0,设定跨度大于0,ID号段可以表示为起始值到终止值的闭区间或者开区间。可见,本实施例中的ID号段是包括多个ID值的一段纯数字区间。能够理解,对于上述发号表,由于max_id字段表示所属业务前次生成的ID号段的终止值,因此每次确定业务的ID号段后,均需要对应修改max_id的值,从而使得max_id的值始终表示所属业务前次生成的ID号段的终止值。每个业务前次生成的ID号段的终止值初始为0,生成一次ID号段后,每个业务前次生成的ID号段的终止值将大于零,并等于设定跨度的值。确定每个业务的业务标识和每个业务的ID号段后,缓存每个业务的业务标识和每个业务的ID号段,其中,业务标识与ID号段一一对应。步骤S104,接收ID生成请求,该ID生成请求携带有目标业务标识。本实施例中,业务服务器向ID生成服务器发送ID生成请求,该ID生成请求携带有目标业务标识,ID生成服务器根据该ID生成请求,生成目标业务的唯一ID,ID生成服务器生成唯一ID后,将生成的唯一ID返回至业务服务器,业务服务器利用生成的唯一ID进行业务处理,如将生成的唯一ID作为订单标识进行订单处理等。需要说明的是,本实施例中,ID生成服务器的作用是接收业务服务器发送的ID生成请求,生成唯一ID,由于处理的业务很多,唯一ID的数量庞大,因此ID生成服务器不需要存储记录生成的唯一ID,只需要将唯一ID返回至业务服务器即可,由业务服务器根据业务需求处理接收到的唯一ID。图2为本发明实施例提供的业务ID生成方法的应用环境示意图,本实施例中的方法应用在如图2所示的应用环境中,图2中,业务服务器100用于向ID生成服务器200发送ID生成请求,多个ID生成服务器200均用于在接收到ID生成请求后,生成唯一ID,数据库服务器300即前述的数据库服务器,上述的发号表设置于数据库服务器300的磁盘中,每个ID生成服务器200均用于从该数据库服务器300中获取每个业务的业务标识和每个业务的ID号段并缓存。图2中设置有多个ID生成服务器,通过图2中的应用环境生成唯一ID,能够在某个ID生成服务器故障时利用其它ID生成服务器生成唯一ID,从而提高系统的可用性。在图2所示的应用系统中,业务服务器100内设置有负载均衡器,业务服务器100生成ID生成请求后,通过该负载均衡器中的负载均衡算法选择处理该ID生成请求的ID生成服务器200,向确定的ID生成服务器200发送该ID生成请求。一种具体的实施例中,业务服务器100优选平滑加权轮询算法在多个ID生成服务器200中确定处理ID生成请求的ID生成服务器200。平滑加权轮询算法的原理为:根据每个服务器的负载情况预先设定每个服务器被选中的权重,每次选择服务器时,选择权重最高的服务器,并利用所有服务器的权重总和更新选中的服务器的权重,再利用预先设定的每个服务器的权重更新每个服务器当前的权重,更新后,得到当次选择后每个服务器的权重,再依次进行下次选择。举例,假设A,B,C三台服务器的权重分别是4,2,1。按照这个配置,每7个请求中,A会被选中4次、B会被选中2次、C会被选中1次,且分布平滑,表2展示了A、B、C三台服务器在每次被选择后的权重变化情况。表2请求序号A、B、C当前权重被选服务器一次更新权重二次更新权重1(4,2,1)A(-3,2,1)(1,4,2)2(1,4,2)B(1,-3,2)(5,-1,3)3(5,-1,3)A(-2,-1,3)(2,1,4)4(2,1,4)C(2,1,-3)(6,3,-2)5(6,3,-2)A(-1,3,-2)(3,5,-1)6(3,5,-1)B(3,-2,-1)(7,0,0)7(7,0,0)A(0,0,0)(4,2,1)表2中,首选确定A、B、C三台服务器的初始权重分别为4、2、1,第一次选择时,选择权重最高的服务器A,然后利用所有服务器的权重总和7更新A的权重,具体为将A的权重减去7,得到更新后的A、B、C的权重,即-3、2、1,接着,利用预先设定的每个服务器的权重更新每个服务器当前的权重,具体为将每个服务器当前的权重加上各自对应的预先设定的权重,得到当次选择后每个服务器的权重,即1、4、2,然后再依次执行下次选择。如表2所示,经过7次选择后,每个服务器的权重都变为初始权重,从而开始下次轮询。平滑加权轮询算法中,每个服务器的初始权重能够根据每个服务器的负载情况预先设定,通过平滑加权轮询算法能够保证每个服务器被选择的次数,使得各个服务器被选择的次数适应各自的负载。ID生成服务器200接收到业务服务器100发送的ID生成请求后,获取该ID生成请求携带的目标业务标识,并执行步骤S106。步骤S106,如果确定缓存中有目标业务标识对应的目标ID号段,则在目标ID号段中确定目标业务的唯一ID。ID生成服务器根据ID生成请求携带的目标业务标识,在缓存中查找,判断是否缓存有目标业务标识对应的目标ID号段,若有,则在目标ID号段中确定目标业务的唯一ID。目标业务、目标业务标识、目标ID号段三者相互对应。本实施例中,如果确定缓存中没有目标业务标识对应的目标ID号段,则向数据库服务器发送号段设置指令,然后,获取数据库服务器根据该号段设置指令确定的目标业务标识及其对应的目标ID号段,最后,缓存目标业务标识及其对应的目标ID号段,并在目标ID号段中确定目标业务的唯一ID。具体地,如果确定缓存中没有目标业务标识对应的目标ID号段,则说明数据库服务器中没有存储目标业务标识和目标业务标识对应的号段参数,也即没有目标业务的发号表,因此本实施例中,向数据库服务器发送号段设置指令,该号段设置指令携带有目标业务标识和目标业务标识对应的号段参数,还包括发号表建立参数,以使数据库服务器根据号段设置指令,建立目标业务的发号表,在目标业务的发号表内存储目标业务标识和目标业务标识对应的号段参数。其中,目标业务标识对应的号段参数包括目标业务前次生成的ID号段的终止值和目标业务的ID号段的设定跨度,目标业务前次生成的ID号段的终止值初始设置为0,设定跨度大于0。数据库服务器存储目标业务标识和目标业务标识对应的号段参数后,ID生成服务器获取数据库服务器根据号段设置指令确定的目标业务标识及目标ID号段。具体地,在数据库服务器中,目标ID号段以号段参数的形式存储,号段参数中目标业务前次生成的ID号段的终止值,即为目标业务当前生成的ID号段的起始值,号段参数中目标业务的ID号段的设定跨度,即为目标业务当前生成的ID号段的起始值和终止值之间的差值,因此实施例中,ID生成服务器读取数据库服务器中存储的目标业务标识及其对应的号段参数,从而获取数据库服务器根据号段设置指令确定的目标业务标识及目标ID号段。ID生成服务器获取到目标业务标记及其对应的目标ID号段后,ID生成服务器缓存目标业务标识及其对应的目标ID号段,并在目标ID号段中确定目标业务的唯一ID。由于缓存了目标业务标识和目标ID号段,因此能够保证再次接收到目标业务标识时,可以生成目标业务的唯一ID。本实施例中,在目标ID号段中确定目标业务的唯一ID具体为:确定目标ID号段的起始值和终止值,将大于该起始值预设差值,且小于等于该终止值的值作为唯一ID。比如,设定目标ID号段的起始值和终止值分别为1和100,则将大于1预设差值,且小于等于100的值作为唯一ID,其中,预设差值大于等于1。考虑到对于同一业务,每次确定的唯一ID需要不同,因此为了方便确定唯一ID,本实施例中,设定预设差值为1,且每次确定唯一ID后,利用唯一ID更新目标ID号段的起始值,从而在目标ID号段中,从起始值开始,将起始值和终止值之间的值逐一确定为唯一ID,其中,由于唯一ID大于起始值预设差值,小于等于终止值,因此唯一ID不包括起始值,但包括终止值。上述例子中,本次生成的唯一ID为2,且更新目标ID号段的起始值为2,在下次确定唯一ID时,确定唯一ID为3,且更新目标ID号段的起始值为3,以此类推。本发明实施例中,预先缓存多个业务的业务标识和多个业务的ID号段,在接收到ID生成请求后,若缓存有目标业务标识对应的目标ID号段,则在目标ID号段中确定目标业务的唯一ID。通过本发明实施例中的业务ID生成方法,能够基于缓存的ID号段确定唯一ID,不需要去数据库进行读写操作,因此能够提高唯一ID的生成效率,解决现有技术中唯一ID生成速率低,严重影响支付、金融等核心业务的吞吐量的问题。根据上述的在目标ID号段中确定目标业务的唯一ID的过程,由于每次确定唯一ID后,目标ID号段的起始值均被更新,因此当确定若干个唯一ID后,目标ID号段的起始值和终止值将相等,将无法在目标ID号段中确定唯一ID,因此本实施例中,为了发现这种情况并处理,还检测缓存的ID号段是否满足预设要求,具体为:ID生成服务器确定ID号段的起始值和终止值,若该起始值小于该终止值,则确定该对应的ID号段满足预设要求,若该起始值等于或大于该终止值,则确定该对应的ID号段不满足预设要求。本实施例中,可以定期检测缓存的每个ID号段是否均满足预设要求,如每隔1小时检测一次,还可以在接收到目标业务标识,并查找到目标业务标识对应的目标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号段后,需要修改该终止值,也即max_id的值,以使该终止值始终表示所属业务前次生成的ID号段的终止值。通过本实施例中的ID号段的更新方法,每个业务每次生成的ID号段均与前次生成的ID号段衔接,比如,某业务前次生成的ID号段的终止值为100,设定跨度为50,则该业务前次生成的ID号段为50至100,该业务当前生成的ID号段为100到150,从而保证各个ID号段之间的顺序性,提高本实施例中的方法的可用性。对应图2中的分布式系统,利用本实施例中的方式,在数据库服务器内统一记录号段参数,各个ID生成服务器的功能均相同。当某个ID生成服务器A从数据库服务器300处获取ID号段后,数据库服务器300能够更新号段参数,记录此次生成的ID号段的终止值,当另一ID生成服务器B从数据库服务器300处获取同一业务的ID号段时,根据该业务前次生成的ID号段的终止值和ID号段的设定跨度,确定这次获取的ID号段,并且,这次获取的ID号段与ID生成服务器A获取的ID号段不重复,从而保证各个ID生成服务器200针对同一业务都能够获取到不同的ID号段,从而保证不同ID生成服务器200针对同一业务每次生成的唯一ID均不同。本实施例中,当缓存的某个业务的ID号段不满足预设要求时,根据数据库服务器中存储的号段参数更新该业务的ID号段,使得ID生成服务器能够继续生成该业务的唯一ID。考虑到号段更新频率过快时,说明近期生成的唯一ID的数量过大,为了降低数据库服务器的读写频率,优选提高号段参数中设定跨度的值。比如,检测根据号段参数更新ID号段的频率,若该频率高于预设频率阈值,则增大号段参数中的设定跨度的值,从而增大每次生成的ID号段的跨度,减少数据库服务器的磁盘的读写次数。图3为本发明实施例提供的业务ID生成方法的第二种流程示意图,如图3所示,该方法包括:步骤301,设置发号表。在数据库服务器内为多个业务设置发号表,该发号表存储于磁盘内,每个业务对应一个发号表,每个发号表均包括业务标识和号段参数,该号段参数包括所属业务前次生成的ID号段的终止值和所属业务的ID号段的设定跨度;步骤S302,缓存ID号段。根据每个业务的号段参数确定每个业务的ID号段,缓存每个业务的业务标识和每个业务的ID号段,其中,业务标识和ID号段一一对应;步骤S303,接收请求。接收业务服务器发送的ID生成请求,该ID生成请求携带有目标业务标识;步骤S304,判断是否缓存有目标ID号段。检查是否缓存有目标业务标识对应的目标ID号段,若是,执行步骤S305,否则,执行步骤S310;步骤S305,判断是否满足预设要求。判断目标ID号段是否满足预设要求,若是,执行步骤S306,否则执行步骤S307;步骤S306,确定唯一ID。在目标ID号段中确定唯一ID;步骤S307,查找号段参数。在数据库服务器中查找目标业务标识对应的号段参数;步骤S308,更新目标ID号段。根据查找到的号段参数,更新目标ID号段;步骤S309,缓存目标ID号段并确定唯一ID。缓存更新后的目标ID号段,在更新后的目标ID号段中确定唯一ID;步骤S310,设置目标ID号段。在数据库服务器中为目标业务标识设置发号表,根据该发号表中的号段参数,确定目标业务标识对应的目标ID号段;步骤S311,缓存目标ID号段并确定唯一ID。缓存目标业务标识及其对应的目标ID号段,在目标ID号段中确定唯一ID;步骤S12,返回唯一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生成系统,图4为本发明实施例提供的业务ID生成系统的组成示意图,如图4所示,该系统包括负载均衡服务器400和多个ID生成服务器200,该ID生成服务器200即为图2所示的ID生成服务器200。每个ID生成服务器200均缓存有多个业务的业务标识和多个ID号段,其中,业务标识与ID号段一一对应,且所有ID生成服务器200中缓存的同一业务标识对应的ID号段均不同。比如,ID生成服务器A和ID生成服务器B均缓存有订单业务标识及其对应的ID号段和支付业务标识及其对应的ID号段,且ID生成服务器A缓存的订单业务标识对应的ID号段与ID生成服务器B缓存的订单业务标识对应的ID号段不同,ID生成服务器A缓存的支付业务标识对应的ID号段与ID生成服务器B缓存的支付业务标识对应的ID号段不同。一种具体的实施例中,参考如图2所示的应用环境,ID生成服务器A根据数据库服务器300存储的订单业务标识对应的号段参数确定订单业务标识对应的ID号段为100至200,并同步修改数据库服务器300内存储的订单业务前次生成的ID号段的终止值为200,ID生成服务器B在ID生成服务器A之后获取订单业务的ID号段,ID生成服务器B根据数据库服务器300存储的订单业务标识对应的号段参数确定订单业务标识对应的ID号段为300至400。可见,每个ID生成服务器200从数据库服务器300中获取ID号段时,由于同一时间只能由一个ID生成服务器200获取ID号段,且数据库服务器300内存储有每个业务前次生成的ID号段的终止值,因此每个ID生成服务器200获取的同一业务标识对应的ID号段均不同,且前后获取的同一业务标识对应的ID号段相互衔接,因此每个ID生成服务器200中缓存的同一业务标识对应的ID号段均不同。令每个ID生成服务器200中缓存的同一业务标识对应的ID号段不同,能够使得每个ID生成服务器200针对同一业务生成的唯一ID不同,从而使每个ID生成服务器200生成的同一业务的唯一ID具有唯一性。图4中,负载均衡服务器400用于,在所有ID生成服务器200中确定处理ID生成请求的目标ID生成服务器,向目标ID生成服务器发送ID生成请求,其中,ID生成请求携带有目标业务标识。具体地,负载均衡服务器400根据负载均衡算法在所有ID生成服务器200中确定处理ID生成请求的目标ID生成服务器,能够理解,目标ID生成服务器为所有ID生成服务器200中的一个。一种实施例中,负载均衡服务器400等同于图2中的业务服务器100,负载均衡服务器400生成ID生成请求,并确定处理该ID生成请求的目标ID生成服务器。另一种实施方式中,负载均衡服务器400与业务服务器100分离设置,负载均衡服务器400接收业务服务器100发送的ID生成请求,并确定处理该ID生成请求的目标ID生成服务器。负载均衡服务器400根据负载均衡算法在所有ID生成服务器200中确定目标ID生成服务器,该具体过程同前述方法内容一致,这里不再赘述。图4中,目标ID生成服务器用于,在接收到ID生成请求后,如果确定缓存有目标业务标识对应的目标ID号段,则在目标ID号段中确定目标业务的唯一ID。图4中的目标ID生成服务器即为前述的业务ID生成方法的执行主体,目标ID生成服务器确定目标业务的唯一ID的具体过程可参照前述方法内容,这里不再赘述。通过图4中的业务ID生成系统,能够基于缓存的ID号段确定唯一ID,不需要去数据库进行读写操作,因此能够提高唯一ID的生成效率,解决现有技术中唯一ID生成速率低,严重影响支付、金融等核心业务的吞吐量的问题。对应如图4所示的系统,本发明实施例还提供了一种业务ID生成方法,图5为本发明实施例提供的业务ID生成方法的第三种流程示意图,如图5所示,该方法包括:步骤S202,负载均衡服务器获取ID生成请求,并在多个ID生成服务器中确定处理该ID生成请求的目标ID生成服务器,向目标ID生成服务器发送该ID生成请求。其中,该ID生成请求携带有目标业务标识,每个ID生成服务器均缓存有多个业务的业务标识和多个ID号段,业务标识与ID号段一一对应,且所有ID生成服务器中缓存的同一业务标识对应的ID号段均不同。一种实施例中,负载均衡器接收业务服务器发送的ID生成请求,另一种实施例中,负载均衡器生成ID生成请求。负载均衡器根据负载均衡算法在多个ID生成服务器中确定处理该ID生成请求的目标ID生成服务器,向目标ID生成服务器发送该ID生成请求。步骤S204,目标ID生成服务器在接收到该ID生成请求后,如果确定缓存有目标业务标识对应的目标ID号段,则在目标ID号段中确定目标业务的唯一ID。目标ID生成服务器接收负载均衡服务器发送的ID生成请求,在缓存中查找是否有目标业务标识对应的目标ID号段,若有,则在目标ID号段中确定目标业务的唯一ID。由于图5中的方法基于图4中的系统执行,因此关于该方法的部分可参照图4所示的系统的描述,这里不再赘述。通过图5中的业务ID生成方法,能够基于缓存的ID号段确定唯一ID,不需要去数据库进行读写操作,因此能够提高唯一ID的生成效率,解决现有技术中唯一ID生成速率低,严重影响支付、金融等核心业务的吞吐量的问题。对应上述的业务ID生成方法,本发明实施例还提供了一种业务ID生成装置,图6为本发明实施例提供的业务ID生成装置的模块组成示意图,如图6所示,该装置包括:缓存模块41,用于缓存多个业务的业务标识和多个ID号段,其中,业务标识与ID号段一一对应;接收模块42,用于接收ID生成请求,该ID生成请求携带有目标业务标识;确定模块43,用于如果确定缓存中有目标业务标识对应的目标ID号段,则在目标ID号段中确定目标业务的唯一ID。其中,缓存模块41包括:第一缓存单元,用于读取数据库服务器中存储的多个业务的业务标识并缓存;读取单元,用于读取数据库服务器中存储的多个业务的号段参数;第二缓存单元,用于根据号段参数,确定每个业务的ID号段,缓存每个业务的ID号段。其中,确定模块43包括:第一确定单元,用于确定目标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生成方法,本发明实施例还提供了一种计算机设备,图7为本发明实施例提供的计算机设备的模块组成示意图,如图7所示,包括存储器1000和处理器2000,存储器1000上存储有可在处理器2000上运行的计算机程序,处理器2000运行该计算机程序时执行上述实施例中的业务ID生成方法。具体地,存储器1000和处理器2000能够为通用的存储器和处理器,这里不做具体限定,存储器1000和处理器2000通过通讯总线连接,当处理器2000运行存储器1000存储的计算机程序时,能够执行上述的业务ID生成方法,基于缓存的ID号段确定唯一ID,不需要去数据库进行读写操作,从而能够提高唯一ID的生成效率,解决现有技术中唯一ID生成速率低,严重影响支付、金融等核心业务的吞吐量的问题。对应上述的业务ID生成方法,本发明实施例还提供了一种计算机存储介质,该计算机存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述实施例中的业务ID生成方法。具体地,该存储介质能够为通用的存储介质,如U盘、移动磁盘、硬盘、光碟等,该存储介质上的计算机程序被运行时,能够执行上述的业务ID生成方法,基于缓存的ID号段确定唯一ID,不需要去数据库进行读写操作,从而能够提高唯一ID的生成效率,解决现有技术中唯一ID生成速率低,严重影响支付、金融等核心业务的吞吐量的问题。本发明实施例所提供的业务ID生成装置可以为设备上的特定硬件或者安装于设备上的软件或固件等。本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的系统、装置和单元的具体工作过程,均可以参考上述方法实施例中的对应过程,在此不再赘述。在本发明所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本
技术领域
的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1