一种并行业务处理方法、设备及系统的制作方法

文档序号:7982406阅读:285来源:国知局
一种并行业务处理方法、设备及系统的制作方法
【专利摘要】本发明公开一种并行业务处理方法、设备及系统,该方法包括:同步锁服务器接收到业务服务器发送的加锁请求后,判断所请求加锁的业务请求是否加锁,若业务请求未加锁,则对业务请求进行加锁,并向业务服务器返回加锁成功响应;若业务请求已加锁,则向业务服务器返回加锁失败响应,保证了在跨城市、跨IDC或跨服务器上处理并行业务的处理结果的准确性。
【专利说明】一种并行业务处理方法、设备及系统
【技术领域】
[0001]本发明涉及通信【技术领域】,特别是涉及一种并行业务处理方法、设备及系统。
【背景技术】
[0002]典型的互联网系统模型分为三层结构,即接口层、业务层和数据层。接口层用于将调用者的请求转发给业务层,隔离调用者和业务系统;业务层用于按照一定的逻辑流程处理调用者的请求,通常要返回处理结果;数据层用于存储业务层的处理结果,供下次调用时使用。业务层按照特定的执行序列处理请求,处理过程中会从数据层读取数据或将中间处理结果写入数据层,执行序列是指,处理一个请求需要的多个逻辑处理步骤。
[0003]根据互联网的特点,往往需要在多个城市、同一城市的不同IDC (Internet DataCenter,Internet数据中心)或者同一 IDC的不同服务器部署并行业务层,这时如果同一个业务请求同时出现在多个并行的业务层,必然会交叉执行同一执行逻辑序列,并由此产生逻辑混乱和数据不一致的问题。因此,需要一种同步机制,使得同一个业务请求的执行序列能够在多个业务层间同步执行。
[0004]当前进程间通信的同步方案有管道、FIFO (First Input First Output)命名管道、共享内存、消息队列、信号量等。然而,现有的进程间通信的同步方案都是处理部署在同一台服务器上的多个进程间的同步需求,无法处理跨城市、跨IDC和跨服务器间的进程同步需求。
[0005]因此,亟需一种并行业务处理方案用以解决上述问题。

【发明内容】

[0006]本发明的目的在于提供一种并行业务层业务同步实现方法、设备及系统,用以解决在跨城市、跨IDC或跨服务器上部署的并行业务层上执行同一个业务请求带来的逻辑混乱和数据不一致的问题,保证业务处理结果的准确性。
[0007]为此,本发明实施例采用如下技术方案:
本发明实施例提供一种并行业务处理方法,所述方法包括:
同步锁服务器接收到业务服务器发送的加锁请求后,判断所请求加锁的业务请求是否加锁,若所述业务请求未加锁,则对所述业务请求进行加锁,并向所述业务服务器返回加锁成功响应;若所述业务请求已加锁,则向所述业务服务器返回加锁失败响应。
[0008]本发明实施例还提供一种并行业务处理方法,所述方法包括:
业务服务器向同步锁服务器发送对业务请求进行加锁的加锁请求,以使所述同步锁服务器判断所请求加锁的业务请求是否加锁,在判断所述业务请求未加锁时,则对所述业务请求进行加锁,并向所述业务服务器返回加锁成功响应,在判断所述业务请求已加锁时,向所述业务服务器返回加锁失败响应;
若所述业务服务器接收到加锁成功响应,则根据所述业务请求进行业务处理;
若所述业务服务器接收到加锁失败响应,则暂时放弃对所述业务请求进行业务处理,并按照预设的次数和/或频率再次向所述同步锁服务器发送加锁请求。
[0009]本发明实施例还提供一种同步锁服务器,所述同步锁服务器包括:
接收模块,用于接收业务服务器发送的加锁请求;
处理模块,用于在所述接收模块接收到加锁请求后,判断所请求加锁的业务请求是否加锁,当所述业务请求未加锁时,对所述业务请求进行加锁,并通过发送模块向所述业务服务器返回加锁成功响应;当所述业务请求已加锁时,通过发送模块向所述业务服务器返回加锁失败响应。
[0010]本发明实施例还提供一种业务服务器,所述业务服务器包括:
发送模块,用于向同步锁服务器发送对业务请求进行加锁的加锁请求,以使所述同步锁服务器判断所请求加锁的业务请求是否加锁,在判断所述业务请求未加锁时,则对所述业务请求进行加锁,并向所述业务服务器返回加锁成功响应;在判断所述业务请求已加锁时,向所述业务服务器返回加锁失败响应;
处理模块,用于在接收模块接收到加锁成功响应时,根据所述业务请求进行业务处理;以及,在接收模块接收到加锁失败响应时,暂时放弃对所述业务请求进行业务处理,并按照预设的次数和/或频率再次通过所述发送模块向所述同步锁服务器发送加锁请求。
[0011]本发明实施例还提供一种并行业务处理系统,所述系统包括:所述同步锁服务器以及所述业务服务器。
[0012]与现有技术相比,本发明的实施例具有如下优点:
本发明实施例通过同步锁服务器根据加锁请求,在判断所请求的业务请求未加锁时,对该业务请求进行加锁,并返回加锁成功响应,以使业务服务器在接收到加锁成功响应后进行相应的业务处理;否则,向业务服务器返回加锁失败响应。通过对并行业务请求设置加锁/解锁机制,使得在包括至少两个业务服务器的分布式业务处理系统中,针对一个业务请求,保证每次只有一个业务层请求加锁成功,解决了在跨城市、跨IDC或跨服务器上部署并行业务,当执行同一个业务请求时,业务处理逻辑混乱以及数据不一致的问题,保证了业务处理结果的准确性。
【专利附图】

【附图说明】
[0013]图1为本发明实施例提供的分布式业务处理系统架构示意图;
图2为本发明实施例提供的并行业务处理流程示意图之一;
图3为本发明实施例提供的并行业务处理流程示意图之二;
图4为本发明实施例提供的同步锁服务器结构示意图;
图5为本发明实施例提供的业务服务器结构示意图。
【具体实施方式】
[0014]针对在跨城市、跨IDC或跨服务器上部署并行业务的应用场景,多个并行业务层同时处理同一个业务请求,引起的业务处理逻辑混乱以及数据不一致的问题,本发明实施例提供的并行业务处理方案,每次对一个业务层的业务请求进行加锁,进行业务处理,保证业务处理结果的准确性。
[0015]下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0016]本发明实施例提供的并行业务处理方法,应用于包括同步锁服务器和数据中心的业务处理系统,该业务处理系统可以包括多个数据中心,多个数据中心形成分布式架构,或者,该业务处理系统也可以包括一个数据中心,该数据中心内包括多个业务服务器,各业务服务器形成分布式架构。本发明实施例以包括同步锁服务器和至少两个业务服务器的分布式业务处理系统为例进行详细说明。如图1所示,分布式业务处理系统包括:同步锁服务器11和数据中心12,还可以包括用于存储业务处理结果的数据库,数据中心12可以包括多个接口机121和多个业务服务器122,各接口机121与各业务服务器122形成并行的业务处理层,用于并行处理业务。同步锁服务器11用于根据业务服务器122发送的加锁请求对相应的业务请求进行加锁,以及根据业务服务器122发送的解锁请求对相应的业务请求进行解锁;业务服务器122用于向同步锁服务器11发送加锁请求和解锁请求,并在业务请求被加锁后,根据该业务请求进行相应的业务处理;接口机121用于接收客户端13发送的业务请求,并将业务请求发送给相应的业务服务器122。
[0017]以下以图1所示的分布式业务处理系统架构为例,结合图2详细说明并行业务处理流程,如图所示,该流程包括:
步骤201,业务服务器122向同步锁服务器11发送对业务请求进行加锁的加锁请求。
[0018]具体的,客户端13向接口机121发送业务请求,接口机121接收到该业务请求后,将该业务请求发送给各业务服务器122。业务服务器122接收到接口机121发送的业务请求后,不直接执行相应的业务逻辑,而是将该业务请求发送给同步锁服务器11,请求对该业务请求加锁。
[0019]步骤202,同步锁服务器11接收加锁请求,并判断该业务请求是否已加锁,若已加锁,则执行步骤203,否则,执行步骤204。
[0020]步骤203,同步锁服务器11向业务服务器122返回加锁失败响应。
[0021]具体的,若同步锁服务器11在接收到加锁请求后,判断该业务请求已加锁,则向业务服务器122返回加锁失败响应,以使业务服务122器暂时放弃对该业务请求进行业务处理。
[0022]业务服务器122接收到加锁失败响应后,不会进行相应的业务处理。优选的,业务服务器122在接收到同步锁服务器11发送的加锁失败响应后,可以按照预设的次数和/或频率再次向同步锁服务器11发送加锁请求,以确保本业务服务器122处理该业务请求的机会更大一些。其中,再次发送加锁请求的次数和/或发送频率与应用场景以及业务处理时间相关。
[0023]步骤204,同步锁服务器11对该业务请求进行加锁,并向业务服务器122返回加锁成功响应,以使业务服务器122根据该业务请求进行业务处理。
[0024]步骤205,业务服务器122在接收到加锁成功响应后,进行相应的业务处理,并将业务处理结果存储于数据库当中。
[0025]步骤206,业务服务器122在完成业务处理后,向同步锁服务器11发送解锁请求。
[0026]步骤207,同步锁服务器11对该业务请求进行解锁。[0027]具体的,同步锁服务器11在接收到对该业务请求进行解锁的的解锁请求后,对该业务请求解锁,该解锁请求是业务服务器122在完成业务处理后所发送的。
[0028]在并行业务处理过程中,有两种情况会造成业务请求的同步锁被永远锁住:
1、若同步锁服务器11判断该业务请求处于未加锁状态,则对该业务请求加锁,并向相应的业务服务器122返回加锁成功响应,但是业务服务器122并未收到该加锁成功响应,此时,该业务请求已处于加锁状态,但是业务服务器122无法进行相应的业务处理,若其他业务服务器122向同步锁服务器11发送对该业务请求进行加锁的加锁请求,由于该业务请求仍处于加锁状态,因此,同步锁服务器11会返回加锁失败响应,由此导致该业务请求被永远锁住。
[0029]2、若同步锁服务器11对业务请求加锁之后,未收到业务服务器122发送的解锁请求,这样也会导致该业务请求被永远锁住。
[0030]因此,为了避免业务请求的同步锁被永远锁住,可以通过在同步锁服务器11上设置定时器(定时器的计时时长即为加锁时间有效期限),来限制业务请求的加锁时长,该计时时长大于或等于业务服务器122处理业务请求的处理时间。
[0031]如图3所示,为本发明另一实施例提供的非正常解锁的并行业务处理流程,该流程包括以下步骤:
步骤301,业务服务器122向同步锁服务器11发送对业务请求进行加锁的加锁请求。
[0032]步骤302,同步锁服务器11接收加锁请求,并判断该业务请求是否已加锁,若已加锁,则执行步骤303,否则,执行步骤304。
[0033]步骤303,同步锁服务器11向业务服务器122返回加锁失败响应。
[0034]步骤304,同步锁服务器11对业务请求进行加锁,启动定时器,并向业务服务器122返回加锁成功响应。
[0035]步骤305,当定时器的计时时长到达时,同步锁服务器11对该业务请求进行解锁。
[0036]在本实施例中,步骤304中的启动定时器操作,以及步骤305的在定时器的计时时长到达时,对业务请求进行解锁的操作为新增操作。利用用定时器监控业务请求的加锁时长,并在条件满足时改变业务请求的加锁状态,使得同步锁服务器11在每次接收到加锁请求时,可以仅判断该业务请求的加锁状态,而不用考虑加锁时长,提高了同步锁服务器11的处理效率,对于在短时间内接收到多次加锁请求的情况,可以明显提高系统的业务处理能力。
[0037]当同步锁服务器11与业务服务器122之间发生通信故障或者其他故障时,同步锁服务器11发送的加锁成功响应无法送达业务服务器122,业务服务器122无法进行相应的业务处理,而实际该业务请求已处于加锁状态,导致该业务请求被永远锁死;或者,当业务服务器122发送的解锁请求无法到达同步锁服务器11时,也会导致业务请求被永远锁死。本发明实施例利用定时器限定加锁时间的有效期限,在加锁时间的有效期限到期时,对业务请求进行强制解锁,能够有效避免业务请求被永远锁死的情况,确保业务流程的顺利进行。
[0038]在本发明的上述实施例中,同步锁服务器判断所请求加锁的业务请求是否加锁的处理(步骤202)、对业务请求进行加锁处理(步骤204)或解锁处理(步骤207),可以通过以下方式实现:在同步锁服务器11中建立用于记录业务标识与加锁开始时间的对应关系的加锁数据列表,该加锁数据列表如表1所不:
表1
【权利要求】
1.一种并行业务处理方法,其特征在于,所述方法包括: 同步锁服务器接收到业务服务器发送的加锁请求后,判断所请求加锁的业务请求是否加锁,若所述业务请求未加锁,则对所述业务请求进行加锁,并向所述业务服务器返回加锁成功响应;若所述业务请求已加锁,则向所述业务服务器返回加锁失败响应。
2.如权利要求1所述的方法,其特征在于,所述对所述业务请求进行加锁之后,所述方法还包括: 所述同步锁服务器启动定时器;所述定时器的计时时长大于或等于业务服务器处理所述业务请求的处理时间; 当所述定时器的计时时长到达时,所述同步锁服务器对所述业务请求进行解锁。
3.如权利要求1所述的方法,其特征在于,所述方法还包括:所述同步锁服务器在接收到业务服务器在完成业务处理后所发送的解锁请求后,对所述业务请求进行解锁。
4.如权利要求1-3任一项所述的方法,其特征在于,所述同步锁服务器对所述业务请求进行加锁,具体为:所述同步锁服务器从接收到的加锁请求中提取业务标识,并根据所述业务标识对相应的业务请求进行加锁; 所述同步锁服务器对所述业务请求进行解锁,具体为:所述同步锁服务器从接收到的解锁请求中提取业务标识,并根据所述业务标识对相应的业务请求进行解锁; 所述判断所请求加锁的业务请求是否加锁,具体为:所述同步锁服务器从接收到的加锁请求中提取业务标识,并根据所述业务标识判断相应的业务请求是否加锁。
5.如权利要求4所述的方法,其特征在于,所述同步锁服务器根据所述业务标识对相应的业务请求进行加锁,具体为:所述同步锁服务器对所述业务标识进行哈希运算,根据哈希结果索引所请求加锁的业务标识,并将索引到的业务标识对应的加锁开始时间设置为接收所述加锁请求的接收时间; 所述同步锁服务器根据所述业务标识对相应的业务请求进行解锁,具体为:所述同步锁服务器对所述业务标识进行哈希运算,根据哈希结果索引所请求解锁的业务标识,并清除索引到的业务标识及对应的加锁开始时间; 所述根据所述业务标识判断相应的业务请求是否加锁,具体为:所述同步锁服务器对所述业务标识进行哈希运算,根据哈希结果索引所请求加锁的业务标识,若索引到业务标识以及对应的加锁开始时间,则判断所请求加锁的业务请求为已加锁,否则,判断所请求加锁的业务请求为未加锁。
6.如权利要求4所述的方法,其特征在于,所述同步锁服务器根据所述业务标识对相应的业务请求进行加锁,具体为:所述同步锁服务器对所述业务标识按照全量直接映射算法进行运算,根据运算结果索引所请求加锁的业务标识,并将索引到的业务标识对应的加锁开始时间设置为接收所述加锁请求的接收时间; 所述同步锁服务器根据所述业务标识对相应的业务请求进行解锁,具体为:所述同步锁服务器对所述业务标识按照全量直接映射算法进行运算,根据运算结果索引所请求解锁的业务标识,并将与索引到的业务标识对应的加锁开始时间设置为初始值; 所述根据所述业务标识判断相应的业务请求是否加锁,具体为:所述同步锁服务器对所述业务标识按照全量直接映射算法进行运算,并根据运算结果索引所请求解锁的业务标识,若索引到业务标识,且对应的加锁开始时间非初始值,则判断所请求加锁的业务请求为已加锁,否则,则判断所请求加锁的业务请求为未加锁。
7.如权利要求4所述的方法,其特征在于,所述同步锁服务器根据所述业务标识对相应的业务请求进行加锁,具体为:所述同步锁服务器对所述业务标识进行哈希运算,根据哈希结果索引所请求加锁的业务标识,并将索引到的业务标识对应的业务请求状态设置为加锁状态; 所述同步锁服务器根据所述业务标识对相应的业务请求进行解锁,具体为:所述同步锁服务器对所述业务标识进行哈希运算,根据哈希结果索引所请求解锁的业务标识,并清除索引到的业务标识及对应的业务请求状态; 所述根据所述业务标识判断相应的业务请求是否加锁,具体为:所述同步锁服务器对所述业务标识进行哈希运算,根据哈希结果索引所请求加锁的业务标识,若索引到业务标识以及对应的业务请求状态,则判断所请求加锁的业务请求为已加锁,否则,则判断所请求加锁的业务请求为未加锁。
8.一种并行业务处理方法,其特征在于,所述方法包括: 业务服务器向同步锁服务器发送对业务请求进行加锁的加锁请求,以使所述同步锁服务器判断所请求加锁的业务请求是否加锁,在判断所述业务请求未加锁时,则对所述业务请求进行加锁,并向所述业务服务器返回加锁成功响应,在判断所述业务请求已加锁时,向所述业务服务器返回加锁失败响应; 若所述业务服务器接收到加锁成功响应,则根据所述业务请求进行业务处理; 若所述业务服务器 接收到加锁失败响应,则暂时放弃对所述业务请求进行业务处理,并按照预设的次数和/或频率再次向所述同步锁服务器发送加锁请求。
9.如权利要求8所述的方法,其特征在于,所述根据所述业务请求进行业务处理之后,所述方法还包括: 所述业务服务器在完成所述业务处理后,向所述同步锁服务器发送解锁请求,以使所述同步锁服务器对所述业务请求进行解锁。
10.一种同步锁服务器,其特征在于,所述同步锁服务器包括: 接收模块,用于接收业务服务器发送的加锁请求; 处理模块,用于在所述接收模块接收到加锁请求后,判断所请求加锁的业务请求是否加锁,当所述业务请求未加锁时,对所述业务请求进行加锁,并通过发送模块向所述业务服务器返回加锁成功响应;当所述业务请求已加锁时,通过发送模块向所述业务服务器返回加锁失败响应。
11.如权利要求10所述的同步锁服务器,其特征在于,所述处理模块还用于,在对所述业务请求进行加锁之后,启动定时器,并在所述定时器计时时长到达时,对所请求解锁的业务请求进行解锁;所述定时器的计时时长大于或等于业务服务器处理所述业务请求的处理时间。
12.如权利要求10所述的同步锁服务器,其特征在于, 所述接收模块还用于,接收业务服务器发送的解锁请求,所述解锁请求是业务服务器在完成业务处理后发送的; 所述处理模块还用于,在所述接收模块接收到业务服务器发送的解锁请求后,对所请求解锁的业务请求进行解锁。
13.如权利要求10-12任一项所述的同步锁服务器,其特征在于,所述处理模块包括加锁/解锁子模块和判断子模块; 所述加锁/解锁子模块用于,从所述接收模块接收到的加锁请求中提取业务标识,并根据所述业务标识对相应的业务请求进行加锁;以及从所述接收模块接收到的解锁请求中提取业务标识,并根据相应的业务标识对所述业务请求进行解锁; 所述判断子模块用于,从所述接收模块接收到的加锁请求中提取业务标识,并根据所述业务标识判断相应的业务请求是否加锁。
14.如权利要求13所述的同步锁服务器,其特征在于, 所述加锁/解锁子模块具体用于,在所述判断子模块判断所述业务请求未加锁时,对所述业务标识进行哈希运算,根据哈希结果索引所请求加锁的业务标识,并将索引到的业务标识对应的加锁开始时间设置为接收所述加锁请求的接收时间;以及,在所述接收模块接收到业务服务器发送的解锁请求时,对所述业务标识进行哈希运算,根据哈希结果索引所请求解锁的业务标识,并清除索引到的业务标识及对应的加锁开始时间; 所述判断子模块具体用于,对所述业务标识进行哈希运算,根据哈希结果索引所请求加锁的业务标识,若索引到业务标识以及对应的加锁开始时间,则判断所请求加锁的业务请求为已加锁,否则,判断所请求加锁的业务请求为未加锁。
15.如权利要求13所述的同步锁服务器,其特征在于, 所述加锁/解锁子模块具体用于,在所述判断子模块判断所述业务请求未加锁时,对所述业务标识按照全量直接映射算法进行运算,根据运算结果索引所请求加锁的业务标识,并将索引到的业务标识 对应的加锁开始时间设置为接收所述加锁请求的接收时间;以及,在所述接收模块接收到业务服务器发送的解锁请求时,对所述业务标识按照全量直接映射算法进行运算,根据运算结果索引所请求解锁的业务标识,并将与索引到的业务标识对应的加锁开始时间设置为初始值; 所述判断模块具体用于,对所述业务标识按照全量直接映射算法进行运算,并根据运算结果索引所请求加锁的业务标识,若索引到业务标识,且对应的加锁开始时间非初始值,则判断所请求加锁的业务请求为已加锁,否则,判断所请求加锁的业务请求为未加锁。
16.如权利要求13所述的同步锁服务器,其特征在于, 所述加锁/解锁子模块具体用于,在所述判断子模块判断所述业务请求未加锁时,对所述业务标识进行哈希运算,根据哈希结果索引所请求加锁的业务标识,并将索引到的业务标识对应的业务请求状态设置为加锁状态;以及在所述接收模块接收到业务服务器发送的解锁请求时,对所述业务标识进行哈希运算,根据哈希结果索引所请求解锁的业务标识,并清除索引到的业务标识及对应的业务请求状态; 所述判断子模块具体用于,对所述业务标识进行哈希运算,根据哈希结果索引所请求加锁的业务标识,若索引到业务标识以及对应的业务请求状态,则判断所请求加锁的业务请求为已加锁,否则,则判断所请求加锁的业务请求为未加锁。
17.—种业务服务器,其特征在于,所述业务服务器包括: 发送模块,用于向同步锁服务器发送对业务请求进行加锁的加锁请求,以使所述同步锁服务器判断所请求加锁的业务请求是否加锁,在判断所述业务请求未加锁时,则对所述业务请求进行加锁,并向所述业务服务器返回加锁成功响应;在判断所述业务请求已加锁时,向所述业务服务器返回加锁失败响应; 处理模块,用于在接收模块接收到加锁成功响应时,根据所述业务请求进行业务处理;以及,在接收模块接收到加锁失败响应时,暂时放弃对所述业务请求进行业务处理,并按照预设的次数和/或频率再次通过所述发送模块向所述同步锁服务器发送加锁请求。
18.如权利要求17所述的业务服务器,其特征在于,所述发送模块还用于,在所述处理模块完成所述业务处理后,向所述同步锁服务器发送解锁请求,以使所述同步锁服务器对所述业务请求进行解锁。
19.一种并行业务处理系统,其特征在于,所述系统包括:如权利要求10-16任一项所述的同步锁服务器,以及至少两个如权`利要求17-18任一项所述的业务服务器。
【文档编号】H04L29/08GK103634347SQ201210303495
【公开日】2014年3月12日 申请日期:2012年8月24日 优先权日:2012年8月24日
【发明者】倪卫杰, 谢启明, 张津, 尹志敏, 李雯榕 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1