资源转移的方法和系统与流程

文档序号:12824548阅读:327来源:国知局
资源转移的方法和系统与流程

本发明涉及互联网领域,具体而言,涉及一种资源转移的方法和系统。



背景技术:

目前,用户在参与互联网上各种各样的事件时,特别是有些事件需要客户端先执行一个事件,再获取与该执行的事件相关的资源时,通常需要一个系统先执行该事件并得到事件执行结果,然后另外一个系统根据该事件执行结果获取与该事件相关的资源,由获取与该事件相关的资源的系统将获取的资源发送给客户端。

如图1所示,客户端触发事件参与系统的触发事件页面,资源数据库记录用户获得的资源。由资源数据库通过事件参与系统向客户端发送参与事件成功的信息。然后用户发送第一事件请求给第二系统,第二系统执行第一事件后,向客户端返回执行结果。第二系统向第一系统下发第一事件的执行结果,并由第一系统获取第一事件资源,并向客户端返回第一事件资源。在上述过程中,由于网络原因可能导致两个系统之间的通讯中断,使得另外一个系统无法接收到事件执行结果,也就无法获取与事件相关的资源,最终使得客户端无法获取事件相关的资源。另外,通常两个系统通过一个数据库传递事件执行结果,两个系统在执行各自的业务时都依赖该数据库,使得两个系统高度耦合,使得资源转移的可靠性比较低。

针对上述的问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种资源转移的方法和系统,以至少解决资源转 移的可靠性较低的技术问题。

根据本发明实施例的一个方面,提供了一种资源转移的方法,包括:第一系统从第一数据库中读取第一事件执行结果,其中,所述第一事件执行结果用于指示第二系统完成了对客户端发送的第一事件执行请求所请求的第一事件的执行,所述第一事件执行结果由所述第二系统存入到第二数据库中,并从所述第二数据库同步到所述第一数据库中;所述第一系统获取在所述第一事件执行完之后需返回给所述客户端的第一事件资源;所述第一系统将所述第一事件资源返回给所述客户端。

根据本发明实施例的一个方面,提供了另一种资源转移的方法,包括:第二系统接收客户端发送的用于请求执行第一事件的第一事件执行请求;所述第二系统将第一事件执行结果存储在第二数据库中,以供第一系统从第一数据库中读取所述第一事件执行结果,并向所述客户端返回第一事件资源,其中,所述第一事件执行结果用于指示所述第二系统完成了对所述第一事件的执行,所述第一事件执行结果从所述第二数据库同步到所述第一数据库中,所述第一事件资源由所述第一系统获取。

根据本发明实施例的另一方面,还提供了一种资源转移的系统,包括:读取单元,用于从第一数据库中读取第一事件执行结果,其中,所述第一事件执行结果用于指示第二系统完成了对客户端发送的第一事件执行请求所请求的第一事件的执行,所述第一事件执行结果由所述第二系统存入到第二数据库中,并从所述第二数据库同步到所述第一数据库中;获取单元,用于统获取在所述第一事件执行完之后需返回给所述客户端的第一事件资源;资源返回单元,用于将所述第一事件资源返回给所述客户端。

根据本发明实施例的另一方面,还提供了一种资源转移的系统,包括:接收单元,用于接收客户端发送的用于请求执行第一事件的第一事件执行请求;存储单元,用于将第一事件执行结果存储在第二数据库中,以供第一系统从第一数据库中读取所述第一事件执行结果,并向所述客户端返回第一事件资源,其中,所述第一事件执行结果用于指示所述第二系统完成 了对所述第一事件的执行,所述第一事件执行结果从所述第二数据库同步到所述第一数据库中,所述第一事件资源由所述第一系统获取。

在本发明实施例中,第一系统从第一数据库中读取第一事件执行结果,其中,第一事件执行结果用于指示第二系统完成了对客户端发送的第一事件执行请求所请求的第一事件的执行,第一事件执行结果由第二系统存入到第二数据库中,并从第二数据库同步到第一数据库中;第一系统获取在第一事件执行完之后需返回给客户端的第一事件资源;第一系统将第一事件资源返回给客户端,第一系统和第二系统关注各自的业务逻辑和数据库,且相互不干扰,降低了两个系统的耦合性,提高了资源转移过程的可靠性,从而解决了资源转移的可靠性较低的技术问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据现有技术的一种资源转移的方法的交互图;

图2是根据本发明实施例的硬件环境的示意图;

图3是根据本发明实施例1的资源转移的方法的流程图;

图4是根据本发明实施例的资源转移的方法的交互图;

图5是根据本发明可选实施例的资源转移的方法的交互图;

图6是根据本发明实施例2的资源转移的方法的流程图;

图7是根据本发明实施例3的资源转移的系统的示意图;

图8是根据本发明实施例4的资源转移的系统的示意图;

图9是根据本发明实施例的服务器的架构图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

实施例1

根据本发明实施例,提供了一种可以通过本申请系统实施例执行的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

根据本发明实施例,提供了一种资源转移的方法。

可选地,在本实施例中,上述资源转移的方法可以应用于如图2所示的终端102和服务器104所构成的硬件环境中。如图2所示,终端102通过网络与服务器104进行连接,上述网络包括但不限于:移动通信网络、广域网、城域网或局域网,终端102可以是手机终端,也可以是pc终端、笔记本终端或平板电脑终端。上述的服务器104包括第一系统、第一数据 库、第二系统和第二数据库,上述的服务器104还可以包括资源数据库。

图2中示出的硬件环境系统的主要工作原理是:终端102从资源数据库中获取事件标识,然后终端102执行与该事件标识相关的第一事件,第一事件是在终端102和服务器104中的第二系统之间进行的,第二系统执行第一事件并得到第一事件执行结果,第二系统将第一事件执行结果存储到第二数据库中。第一事件执行结果从第二数据库同步到第一数据库中,第一系统从第一数据库中读取第一事件执行结果,并从资源数据库中获取与该事件标识相关的资源,然后将获取的资源返回给终端102,从而终端102获得了事件标识所对应的资源。

在上述系统中,第一系统、第一数据库、第二系统和第二数据库可以独立设置在多个服务器104中,也可以同时处于一个服务器104中。在本申请的各个实施例中,第一数据库作为备数据库,第二数据库作为主数据库。

图3是根据本发明实施例1的资源转移的方法的流程图,该资源转移方法可以由第一系统来执行。以下结合图3对本发明实施例所提供的资源转移的方法做具体介绍,如图3所示,该资源转移的方法主要包括如下步骤:

步骤s302,第一系统从第一数据库中读取第一事件执行结果,其中,第一事件执行结果用于指示第二系统完成了对客户端发送的第一事件执行请求所请求的第一事件的执行,第一事件执行结果由第二系统存入到第二数据库中,并从第二数据库同步到第一数据库中。

步骤s304,第一系统获取在第一事件执行完之后需返回给客户端的第一事件资源。

步骤s306,第一系统将第一事件资源返回给客户端。

首先,客户端向第二系统发送第一事件执行请求。第二系统执行第一事件,得到第一事件执行结果,并将第一事件执行结果存储到第二数据库 中。

其次,第一事件执行结果从第二数据库同步到第一数据库中。

最后,第一系统从第一数据库中读取第一事件执行结果,并获取与第一事件相关联的第一事件资源,从而完成将第一事件资源返回给客户端。

可见,在上述过程中,第一系统读取第一事件执行结果、获取第一事件资源和返回第一事件资源都不依赖于第二数据库,只需第一数据库的参与。同样,第二系统执行第一事件并且存储第一事件执行结果都不依赖于第一数据库,只需第二数据库的参与。即第一系统和第二系统关注各自的业务逻辑和数据库,且相互不干扰,降低了两个系统的耦合性,提高了资源转移过程的可靠性,从而解决了资源转移的可靠性较低的技术问题。

具体来说,相对第一数据库向第一系统发送第一事件执行结果所导致的数据丢失或者传输失败(网络原因导致),由第一系统主动从第一数据库中读取第一事件执行结果的方式不会遗漏数据。第一系统从第一数据库中读取第一事件执行结果而非第二数据库,即使多次反复轮询第一数据库,也不会给第二数据库造成压力而影响第二系统执行第一事件的逻辑和效率。而第二系统向第二数据库中存储第一事件执行结果也不会影响第一系统从第一数据库中读取第一事件执行结果。由于第二数据库和第一数据库仅仅存在同步的动作,两个系统在执行各自逻辑的过程相互独立,且每个系统都是可靠的,从而增强了两个系统的合作实现的资源转移的可靠性。

同时,由于第二数据库和第一数据库通过同步保持数据的一致,保证了第一系统能够实时处理第二系统存储到第二数据库中的事件执行结果,提高了资源转移的实时性,达到了客户端及时获得与第一事件相关的第一事件资源的技术效果。

图4是根据本发明实施例的资源转移的方法的交互图,结合图4的交互图举例说明。

1、客户端触发事件参与系统提供的事件参与页面,例如用户通过手 机点击某活动页面(即事件参与页面)以获得该活动的活动规则(即事件参与规则),该活动规则为执行a事件后得到b资源。

2、事件参与系统向资源数据库发送事件参与规则,以使资源数据库记录上述客户端所获得的b资源。

3、资源数据库成功记录后,向事件参与系统返回响应信息。

4、事件参与系统在接收到资源数据库成功记录后返回的响应信息后,向客户端发送用于指示参与成功的指示信息,例如“参与成功”、“恭喜获得××”等。

5、客户端向第二系统发送执行a事件的请求。

6、第二系统执行a事件。

7、将a事件执行结果存储在第二数据库中。

8、a事件执行结果从第二数据库同步至第一数据库中。

9、即s302,第一系统从第一数据库中读取a事件执行结果。

10、即s304,第一系统从资源数据库中查找与a事件相关的b资源。

11、即s306,第一系统将b资源发送给客户端。

由上述的5至11可知,第一系统从资源数据库和第一数据库获取数据,第二系统向第二数据库中存储数据,使得第一系统和第二系统的业务逻辑相互独立,降低了第一系统和第二系统的耦合性,提高了两个系统的可靠性,从而保证了资源转移的可靠性,使得客户端能够及时获取b资源。

在一个具体的例子中,a事件可以是一次购买行为,b资源可以是对该次购买行为所付出的金额的返还,也可以是对再次执行的购买行为所付出的金额的返还,b资源的形式可以是代金券(如满10减9的代金券、10元代金券、红包)、虚拟资源(如积分、游戏中装备、游戏等级和虚拟货币等)、虚拟票据(如电影票、打车票等)和实物领取券等。

可选地,第一系统获取在第一事件执行完之后需返回给客户端的第一事件资源包括:第一系统从第一事件执行结果中获取与第一事件关联的事件标识;第一系统从资源数据库中获取与事件标识关联的第一事件资源。

若第一事件是活动规则(执行a事件后得到b资源)中的a事件,第一事件关联的事件标识可以是执行第一事件的执行编号(如上述购买行为所产生的交易流水号),或者活动规则的编码等;若第一事件并不是a事件,则第一事件关联的事件标识可以是活动规则的编码、活动规则的标识符等。上述的事件标识还可以是该活动规则的有效时间、其发布的网页的网址等,其他可用于标识活动的身份的标识形式都可以用在此处,不再一一举例说明。

第一系统可以根据事件标识从资源数据库中查找相关的资源,若资源数据库中存储多个事件的活动规则,每个活动规则都有指示其身份的事件标识,第一系统根据事件标识从资源数据库查找相关的活动规则对应的资源。

事件参与规则可以有如下两种形式:

(1)事件参与系统对应的活动页面上展示的活动规则包括多个子活动规则,例如,活动页面上展示的活动的总规则是执行a事件得到b资源,子活动规则,如执行a1事件得到b1资源,或者执行a2事件后可能得到b2资源或者b3资源(与b2资源不同)。

在客户端获取活动的总规则后,可能执行a1事件或a2事件,若执行a2事件还可能得到b2资源或者b3资源两种结果。客户端在执行a1事件或者a2事件后才能确定其参与的活动的规则,因此,事件标识可以在第二系统完成对第一事件的执行时携带在第一事件执行结果中,第一系统根据第一事件执行结果中携带的事件标识在资源数据库中查找第一事件资源。

若活动规则指示执行a2事件后可能得到b2资源或者b3资源,则当 客户端获取活动规则时,资源数据库就确定了该客户端所获得资源为b2资源,则在客户端发送执行a2事件请求时,就携带了事件标识,即事件标识携带在第一事件执行请求中。该事件标识能够指示向客户端返回b2资源。那么,在第一系统从资源数据库中查找需返回给客户端的资源时,根据事件标识就能确定需返回给客户端的资源为b2资源,从而实现了返回a2事件对应的资源b2。执行a2事件后得到b3资源的情形与上述得到b2资源的情形类似,不再赘述。

(2)活动规则为所有执行a事件的客户端都能获得b资源,则第一系统在接收到执行a事件的请求后都向执行a事件得到的执行结果添加事件标识,该事件标识指示向客户端返回b资源。即事件标识可以在第二系统完成对第一事件的执行时携带在第一事件执行结果中,以便第一系统向客户端返回相应的第一事件资源。

通过上述实施例,可以对参与多种活动规则的客户端返回相应的资源,也就是说,针对不同的活动规则都可以采用本实施例所提供的方法来向客户端返回资源,增加了本实施例针对多种活动规则的包容性。

可选地,第一系统将第一事件资源返回给客户端之后,方法还包括:第一系统为第一事件执行结果添加状态标识,状态标识用于指示已经在第一事件执行完之后向客户端返回第一事件资源;第一系统将添加状态标识第一事件执行结果发送给第二数据库,其中,添加状态标识第一事件执行结果从第二数据库同步到第一数据库中。

第一系统从资源数据库中获取第一事件资源、并将第一事件资源返回给客户端后,第一系统执行图4中的以下步骤:

12、对第一事件执行结果添加状态标识,标识该第一事件对应的第一事件资源已经发送给客户端。

13、将添加状态标识第一事件执行结果发送给第二数据库。

14、第二数据库向第一数据库同步添加有添加状态标识的第一事件执 行结果。

第一系统从第一数据库中读取数据时通常采用轮询的方式,读取第一数据库中所有的数据,从中找到没有返回资源的事件执行结果。因此,对第一事件执行结果添加状态标识后,若再次轮询到第一事件执行结果后,会执行图4中的15,判断是否已经向该第一事件执行结果对应的客户端发送第一事件执行结果,若在第一事件执行结果中识别出上述状态标识就不会再次从资源数据库中获取第一事件资源,也就避免了重复向客户端发送第一事件资源,提高了发送第一事件资源的准确性,也提高了识别的未发送事件资源的事件执行结果的效率,从而提高了整个系统的资源传输的效率。

通常情况下,第一系统主动从第一数据库中读取第一事件执行结果时采用轮询的方式。然而,随着第一数据库中存储的事件执行结果的增多,轮询就会有延时,为了保证第一系统提取第一数据库中第一事件执行结果的实时性,第一系统采用多个进程同时读取第一数据库中存储的事件执行结果,即第一系统从第一数据库中读取第一事件执行结果包括:第一系统采用一个或多个进程轮询从第一数据库中的多个数据表,其中,每个数据表记录多个事件执行结果,每个进程轮询多个数据表中的部分数据表;第一系统从多个事件执行结果中读取第一事件执行结果。

第一事件执行结果以数据表的形式存储在第一数据库中,每个数据表中都存储多个事件执行结果。第一系统的多个进程分别轮询一个范围内的数据表,多个进程同时进行轮询提高了读取第一事件执行结果的效果。每个进程可以读取一定范围内的数据表。划分数据表可以根据第一事件执行结果中的编码来进行。

在一个具体的例子中,第二系统每次执行一个第一事件都生成一个流水号,按照流水号的顺序依次存储在数据表中,在一个数据表不足以存储生成的流水号的情况下,将新生成的流水号存储在新的数据表中。这样,每个数据表都具有流水号的范围,例如流水号1~10存储在数据表1中, 流水号11~20存储在数据表2中,流水号21~30存储在数据表3中,流水号31~40存储在数据表4中。第一系统有两个进程轮询第一数据库中的数据表,则第一个进程轮询数据表1和2中的多个第一事件执行结果,第二个进程轮询数据表3和4中的多个第一事件执行结果。两个进程同时轮询减少了轮询的时间。

进一步可选地,第一系统从第一数据库中读取第一事件执行结果包括:第一系统接收消息中间件转发的指示信息,指示信息由第二系统发送给消息中间件,用于指示第二系统执行第一事件得到第一事件执行结果;第一系统在接收到指示信息后,从第一数据库中读取第一事件执行结果。

如图5所示,消息中间件独立于第一数据库和第二数据库,当第二系统执行第一事件得到第一事件执行结果之后,生成指示信息,并将指示信息发送给消息中间件(如图5中16),由消息中间件将第二系统生成的指示信息转发给第一系统(如图5中17),以便第一系统能够及时获知第二系统完成了第一事件的执行,并从第一数据库中获取第一事件执行结果。

由于第二系统主动向消息中间件推送用于指示第二系统已经执行完第一事件并得到第一事件执行结果的指示信息,消息中间件转发该指示信息给第一系统,保证了第一系统能够及时获知第二系统完成了第一事件的执行,增强了第一系统获知第一事件执行结果的时效性。同时,由于消息中间件独立于第一数据库和第二数据库,在第一数据库或第二数据库故障时,第一系统能够获知第二系统完成的第一事件的执行,在消息中间件出现故障时,第一系统可以通过轮询从第一数据库中获取第一事件执行结果,从而提高了系统的可靠性和稳定性。

可选地,为了进一步保证返回第一事件资源的可靠性,保证第一系统能够一直处于能够读取第一数据库的第一事件执行结果的状态,可以采用在分布式服务器中设置多个第一系统,即第一系统从第一数据库中读取第一事件执行结果包括:多个第一系统中的任意一个或多个第一系统从第一数据库中读取第一事件执行结果。

每个第一系统都可以从第一数据库中读取第一事件执行结果,即使有第一系统出现故障,其他第一系统也可以从第一数据库中读取第一事件执行结果,保证能够为客户端提供第一事件资源。优选zookeeper分布式服务器,提高第一系统本身的可靠性。

在上述实施例中,采用以下几种措施增强了资源转移的可靠性:

(1)第二数据库中的第一事件执行结果同步到第一数据库中,并且在第二数据库中的数据有变化时就触发同步,实现了数据库的实时同步。即使第二数据库和第一数据库之间的网络质量较差,在网络恢复后也能实现从第二数据库到第一数据库的同步,避免了第一事件执行结果在同步过程中丢失,增加了同步的可靠性;

(2)在分布式服务器上部署第一系统的集群,每个第一系统都可以从第一数据库中读取第一事件执行结果,提高了服务器的容灾性,即使某个第一系统性能低或者损坏都能用其他第一系统替代,提高了第一系统的可靠性;

(3)第一系统从第一数据库中读取第一事件执行结果,第二系统执行第一事件,并向第二数据库存储第一事件执行结果,即第一系统和第二系统的逻辑各自独立,互不影响,避免一方崩溃所导致的整个资源转移的不可靠。同时,由于第二数据库和第一数据库仅进行数据的同步,并不涉及第一系统和第二系统的业务逻辑,提高了包括第一系统和第二系统资源转移过程的可靠性;

(4)若采用同一个数据库完成第二系统执行第一事件和第一系统的轮询,会降低数据库的性能,导致第二系统执行第一事件的延时增加或耗时不稳定的问题,而采用第二数据库和第一数据库分别为第二系统和第一系统服务,解决了第二系统执行第一事件的延时问题。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受 所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

实施例2

根据本发明实施例,提供了一种可以通过本申请系统实施例执行的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

根据本发明实施例,提供了一种资源转移的方法。该资源转移的方法可以由第二系统来执行,以下结合图6对本发明实施例2所提供的资源转移的方法做具体介绍,如图6所示,该资源转移的方法主要包括如下步骤:

步骤s402,第二系统接收客户端发送的用于请求执行第一事件的第一事件执行请求(即图4所示的5)。

步骤s404,第二系统将第一事件执行结果存储在第二数据库中,以供第一系统从第一数据库中读取第一事件执行结果,并向客户端返回第一事件资源,其中,第一事件执行结果用于指示第二系统完成了对第一事件的执行,第一事件执行结果从第二数据库同步到第一数据库中,第一事件 资源由第一系统获取(即图4所示的7)。其中,第一数据库作为备数据库,第二数据库作为主数据库。

首先,第二系统接收客户端发送的第一事件执行请求后,执行第一事件。

其次,第二系统将将第一事件执行结果存储到第二数据库中,在第二数据库中存储的内容有变化时发起同步,将第一事件执行结果同步到第一数据库中,以便第一系统从第一数据库中读取第一事件执行结果,并获取与第一事件相关联的第一事件资源,从而完成将第一事件资源返回给客户端。

可见,在上述过程中,第一系统读取第一事件执行结果、获取第一事件资源和返回第一事件资源都不依赖于第二数据库,只需第一数据库的参与。同样,第二系统执行第一事件并且存储第一事件执行结果都不依赖于第一数据库,只需第二数据库的参与。即第一系统和第二系统关注各自的业务逻辑和数据库,且相互不干扰,降低了两个系统的耦合性,提高了资源转移过程的可靠性,从而解决了资源转移的可靠性较低的技术问题。

具体来说,相对第一数据库向第一系统发送第一事件执行结果所导致的数据丢失或者传输失败(网络原因导致),由第一系统主动从第一数据库中读取第一事件执行结果的方式不会遗漏数据。第一系统从第一数据库中读取第一事件执行结果而非第二数据库,即使多次反复轮询第一数据库,也不会给第二数据库造成压力而影响第二系统执行第一事件的逻辑和效率。而第二系统向第二数据库中存储第一事件执行结果也不会影响第一系统从第一数据库中读取第一事件执行结果。由于第二数据库和第一数据库仅仅存在同步的动作,两个系统在执行各自逻辑的过程相互独立,且每个系统都是可靠的,从而增强了两个系统的合作实现的资源转移的可靠性。

同时,由于第二数据库和第一数据库通过同步保持数据的一致,保证了第一系统能够实时处理第二系统存储到第二数据库中的事件执行结果,提高了资源转移的实时性,达到了客户端及时获得与第一事件相关的第一 事件资源的技术效果。

可选地,为了保证第二数据库中存储第一事件执行结果,以第二数据库中存储了第一事件执行结果为完成了执行第一事件的标识,即在第二系统将第一事件执行结果存储在第二数据库中之后,方法还包括:第二系统判断是否接收到第二数据库发送的存储回执,其中,存储回执用于指示已经完成将第一事件执行结果从第二数据库同步到第一数据库中;第二系统在判断出接收到第二数据库发送的存储回执后,向客户端返回用于指示第二系统完成了对第一事件的执行的信息。

用于指示第二系统完成了对第一事件的执行的信息,例如,“第一事件成功”,具体在第一事件为购买行为时,用于指示第二系统完成了对第一事件的执行的信息为“购买成功”等信息。若第二系统没有接收到存储回执,可以回滚执行第一事件,并向客户端返回“购买失败”等信息。

通过上述实施例,独立的第一系统和第二系统的独立,以及第二数据库和第一数据库的独立,降低了两个系统的耦合,提高了资源转移的可靠性,第二数据库和第一数据库的同步保证了资源转移的实时性,从而解决了资源转移的可靠性较低的技术问题,达到了提高资源转移的可靠性的技术效果。

实施例3

根据本发明实施例,还提供了一种用于实施上述实施例1的资源转移的方法的资源转移的系统,该资源转移的系统主要用于执行本发明实施例上述内容所提供的资源转移的方法,以下对本发明实施例所提供的资源转移的系统做具体介绍:

图7是根据本发明实施例3的资源转移的系统的示意图,如图7所示,该资源转移的系统主要包括:读取单元40、获取单元42和资源返回单元44。

读取单元40用于从第一数据库中读取第一事件执行结果,其中,第 一事件执行结果用于指示第二系统完成了对客户端发送的第一事件执行请求所请求的第一事件的执行,第一事件执行结果由第二系统存入到第二数据库中,并从第二数据库同步到第一数据库中。

获取单元42用于统获取在第一事件执行完之后需返回给客户端的第一事件资源。

资源返回单元44用于将第一事件资源返回给客户端。

首先,客户端向第二系统发送第一事件执行请求。第二系统执行第一事件,得到第一事件执行结果,并将第一事件执行结果存储到第二数据库中。

其次,第一事件执行结果从第二数据库同步到第一数据库中。

最后,第一系统从第一数据库中读取第一事件执行结果,并获取与第一事件相关联的第一事件资源,从而完成将第一事件资源返回给客户端。

可见,在上述过程中,第一系统读取第一事件执行结果、获取第一事件资源和返回第一事件资源都不依赖于第二数据库,只需第一数据库的参与。同样,第二系统执行第一事件并且存储第一事件执行结果都不依赖于第一数据库,只需第二数据库的参与。即第一系统和第二系统关注各自的业务逻辑和数据库,且相互不干扰,降低了两个系统的耦合性,提高了资源转移过程的可靠性,从而解决了资源转移的可靠性较低的技术问题。

具体来说,相对第一数据库向第一系统发送第一事件执行结果所导致的数据丢失或者传输失败(网络原因导致),由第一系统主动从第一数据库中读取第一事件执行结果的方式不会遗漏数据。第一系统从第一数据库中读取第一事件执行结果而非第二数据库,即使多次反复轮询第一数据库,也不会给第二数据库造成压力而影响第二系统执行第一事件的逻辑和效率。而第二系统向第二数据库中存储第一事件执行结果也不会影响第一系统从第一数据库中读取第一事件执行结果。由于第二数据库和第一数据库仅仅存在同步的动作,两个系统在执行各自逻辑的过程相互独立,且每个 系统都是可靠的,从而增强了两个系统的合作实现的资源转移的可靠性。

同时,由于第二数据库和第一数据库通过同步保持数据的一致,保证了第一系统能够实时处理第二系统存储到第二数据库中的事件执行结果,提高了资源转移的实时性,达到了客户端及时获得与第一事件相关的第一事件资源的技术效果。

结合图4的交互图举例说明。

1、客户端触发事件参与系统提供的事件参与页面(即活动页面),例如用户通过手机点击活动页面以获得该活动的活动规则(即事件参与规则),该活动规则为执行a事件后得到b资源。

2、事件参与系统向资源数据库发送事件参与规则,以使资源数据库记录上述客户端所获得的b资源。

3、资源数据库成功记录后,向事件参与系统返回响应信息。

4、事件参与系统在接收到资源数据库成功记录后返回的响应信息后,向客户端发送用于指示参与成功的指示信息,例如“参与成功”、“恭喜获得××”等。

5、客户端向第二系统发送执行a事件的请求。

6、第二系统执行a事件。

7、将a事件执行结果存储在第二数据库中。

8、a事件执行结果从第二数据库同步至第一数据库中。

9、第一系统从第一数据库中读取a事件执行结果。

10、第一系统从资源数据库中查找与a事件相关的b资源。

11、第一系统将b资源发送给客户端。

由上述的5至11可知,第一系统从资源数据库和第一数据库获取数据,第二系统向第二数据库中存储数据,使得第一系统和第二系统的业务 逻辑相互独立,降低了第一系统和第二系统的耦合性,提高了两个系统的可靠性,从而保证了资源转移的可靠性,使得客户端能够及时获取b资源。

在一个具体的例子中,a事件可以是一次购买行为,b资源可以是对该次购买行为所付出的金额的返还,也可以是对再次执行的购买行为所付出的金额的返还,b资源的形式可以是代金券(如满10减9的代金券、10元代金券、红包等)、虚拟资源(如积分、游戏中装备、游戏等级和虚拟货币等)、虚拟票据(如电影票、打车票等)和实物领取券等。

可选地,获取单元包括:第一获取模块,用于从第一事件执行结果中获取与第一事件关联的事件标识;第二获取模块,用于从资源数据库中获取与事件标识关联的第一事件资源。

若第一事件是活动规则(执行a事件后得到b资源)中的a事件,第一事件关联的事件标识可以是执行第一事件的执行编号(如上述购买行为所产生的交易流水号),或者活动规则的编码等;若第一事件并不是a事件,则第一事件关联的事件标识可以是活动规则的编码、活动规则的标识符等。上述的事件标识还可以是该活动规则的有效时间、其发布的网页的网址等,其他可用于标识活动的身份的标识形式都可以用在此处,不再一一举例说明。

第一系统可以根据事件标识从资源数据库中查找相关的资源,若资源数据库中存储多个活动的活动规则,每个活动规则都有指示其身份的事件标识,第一系统根据事件标识从资源数据库查找相关的活动规则对应的资源。

事件参与规则可以有如下两种形式:

(1)事件参与系统对应的活动页面上展示的活动规则包括多个子活动规则,例如,活动页面上展示的活动的总规则是执行a事件得到b资源,子活动规则,如执行a1事件得到b1资源,或者执行a2事件后可能得到b2资源或者b3资源(与b2资源不同)。

在客户端获取活动的总规则后,可能执行a1事件或a2事件,若执行a2事件还可能得到b2资源或者b3资源两种结果。客户端在执行a1事件或者a2事件后才能确定其参与的活动的规则,因此,事件标识可以在第二系统完成对第一事件的执行时携带在第一事件执行结果中,第一系统根据第一事件执行结果中携带的事件标识在资源数据库中查找第一事件资源。

若活动规则指示执行a2事件后可能得到b2资源或者b3资源,则当客户端获取活动规则时,资源数据库就确定了该客户端所获得资源为b2资源,则在客户端发送执行a2事件请求时,就携带了事件标识,即事件标识携带在第一事件执行请求中。该事件标识能够指示向客户端返回b2资源。那么,在第一系统从资源数据库中查找需返回给客户端的资源时,根据事件标识就能确定需返回给客户端的资源为b2资源,从而实现了返回a2事件对应的资源b2。执行a2事件后得到b3资源的情形与上述得到b2资源的情形类似,不再赘述。

(2)活动规则为所有执行a事件的客户端都能获得b资源,则第一系统在接收到执行a事件的请求后都向执行a事件得到的执行结果添加事件标识,该事件标识指示向客户端返回b资源。即事件标识可以在第二系统完成对第一事件的执行时携带在第一事件执行结果中,以便第一系统向客户端返回相应的第一事件资源。

通过上述实施例,可以对参与多种活动规则的客户端返回相应的资源,也就是说,针对不同的活动规则都可以采用本实施例所提供的系统来向客户端返回资源,增加了本实施例针对多种活动规则的包容性。

可选地,系统还包括:添加单元,用于在将第一事件资源返回给客户端之后,为第一事件执行结果添加状态标识,状态标识用于指示已经在第一事件执行完之后向客户端返回第一事件资源;发送单元,用于将添加状态标识第一事件执行结果发送给第二数据库,其中,添加状态标识第一事件执行结果从第二数据库同步到第一数据库中。

第一系统从资源数据库中获取第一事件资源、并将第一事件资源返回给客户端后,第一系统对第一事件执行结果添加状态标识,标识该第一事件对应的第一事件资源已经发送给客户端。第一系统从第一数据库中读取数据时通常采用轮询的方式,读取第一数据库中所有的数据,从中找到没有返回资源的事件执行结果。因此,对第一事件执行结果添加状态标识后,若再次轮询到第一事件执行结果后,识别出该状态标识就不会再次从资源数据库中获取第一事件资源,也就避免了重复向客户端发送第一事件资源,提高了发送第一事件资源的准确性,也提高了识别的未发送事件资源的事件执行结果的效率,从而提高了整个系统的资源传输的效率。

通常情况下,第一系统主动从第一数据库中读取第一事件执行结果时采用轮询的方式。然而,随着第一数据库中存储的事件执行结果的增多,轮询就会有延时,为了保证第一系统提取第一数据库中第一事件执行结果的实时性,第一系统采用多个进程同时读取第一数据库中存储的事件执行结果,即读取单元包括:轮询模块,用于采用一个或多个进程轮询从第一数据库中的多个数据表,其中,每个数据表记录多个事件执行结果,每个进程轮询多个数据表中的部分数据表;第一读取模块,用于从多个事件执行结果中读取第一事件执行结果。

第一事件执行结果以数据表的形式存储在第一数据库中,每个数据表中都存储多个事件执行结果。第一系统的多个进程分别轮询一个范围内的数据表,多个进程同时进行轮询提高了读取第一事件执行结果的效果。每个进程可以读取一定范围内的数据表。划分数据表可以根据第一事件执行结果中的编码来进行。

在一个具体的例子中,第二系统每次执行一个第一事件都生成一个流水号,按照流水号的顺序依次存储在数据表中,在一个数据表不足以存储生成的流水号的情况下,将新生成的流水号存储在新的数据表中。这样,每个数据表都具有流水号的范围,例如流水号1~10存储在数据表1中,流水号11~20存储在数据表2中,流水号21~30存储在数据表3中,流水 号31~40存储在数据表4中。第一系统有两个进程轮询第一数据库中的数据表,则第一个进程轮询数据表1和2中的多个第一事件执行结果,第二个进程轮询数据表3和4中的多个第一事件执行结果。两个进程同时轮询减少了轮询的时间。

进一步可选地,所述读取单元包括:接收模块,用于接收消息中间件转发的指示信息,所述指示信息由所述第二系统发送给所述消息中间件,用于指示所述第二系统执行所述第一事件得到所述第一事件执行结果;第二读取模块,用于在接收到所述指示信息后,从所述第一数据库中读取所述第一事件执行结果。

如图5所示,消息中间件独立于第一数据库和第二数据库,当第二系统执行第一事件得到第一事件执行结果之后,生成指示信息,并将指示信息发送给消息中间件(如图5中的16),由消息中间件将第二系统生成的指示信息转发给第一系统(如图5中的17),以便第一系统能够及时获知第二系统完成了第一事件的执行,并从第一数据库中获取第一事件执行结果。

由于第二系统主动向消息中间件推送用于指示第二系统已经执行完第一事件并得到第一事件执行结果的指示信息,消息中间件转发该指示信息给第一系统,保证了第一系统能够及时获知第二系统完成了第一事件的执行,增强了第一系统获知第一事件执行结果的时效性。同时,由于消息中间件独立于第一数据库和第二数据库,在第一数据库或第二数据库故障时,第一系统能够获知第二系统完成的第一事件的执行,在消息中间件出现故障时,第一系统可以通过轮询从第一数据库中获取第一事件执行结果,从而提高了系统的可靠性和稳定性。

可选地,为了进一步保证返回第一事件资源的可靠性,保证第一系统能够一直处于能够读取第一数据库的第一事件执行结果的状态,可以采用在分布式服务器中设置多个第一系统,每个第一系统都可以从第一数据库中读取第一事件执行结果,即使有第一系统出现故障,其他第一系统也可 以从第一数据库中读取第一事件执行结果,保证能够为客户端提供第一事件资源。优选zookeeper分布式服务器,提高第一系统本身的可靠性。

实施例4

根据本发明实施例,还提供了一种用于实施上述实施例2的资源转移的方法的资源转移的系统,该资源转移的系统主要用于执行本发明实施例上述内容所提供的资源转移的方法,以下对本发明实施例所提供的资源转移的系统做具体介绍:

图8是根据本发明实施例4的资源转移的系统的示意图,如图8所示,该资源转移的系统主要包括:接收单元50和存储单元52。

接收单元50用于接收客户端发送的用于请求执行第一事件的第一事件执行请求。

存储单元52用于将第一事件执行结果存储在第二数据库中,以供第一系统从第一数据库中读取第一事件执行结果,并向客户端返回第一事件资源,其中,第一事件执行结果用于指示第二系统完成了对第一事件的执行,第一事件执行结果从第二数据库同步到第一数据库中,第一事件资源由第一系统获取。

首先,第二系统接收客户端发送的第一事件执行请求后,执行第一事件。

其次,第二系统将将第一事件执行结果存储到第二数据库中,在第二数据库中存储的内容有变化时发起同步,将第一事件执行结果同步到第一数据库中,以便第一系统从第一数据库中读取第一事件执行结果,并获取与第一事件相关联的第一事件资源,从而完成将第一事件资源返回给客户端。

可见,在上述过程中,第一系统读取第一事件执行结果、获取第一事件资源和返回第一事件资源都不依赖于第二数据库,只需第一数据库的参与。同样,第二系统执行第一事件并且存储第一事件执行结果都不依赖于 第一数据库,只需第二数据库的参与。即第一系统和第二系统关注各自的业务逻辑和数据库,且相互不干扰,降低了两个系统的耦合性,提高了资源转移过程的可靠性,从而解决了资源转移的可靠性较低的技术问题。

具体来说,相对第一数据库向第一系统发送第一事件执行结果所导致的数据丢失或者传输失败(网络原因导致),由第一系统主动从第一数据库中读取第一事件执行结果的方式不会遗漏数据。第一系统从第一数据库中读取第一事件执行结果而非第二数据库,即使多次反复轮询第一数据库,也不会给第二数据库造成压力而影响第二系统执行第一事件的逻辑和效率。而第二系统向第二数据库中存储第一事件执行结果也不会影响第一系统从第一数据库中读取第一事件执行结果。由于第二数据库和第一数据库仅仅存在同步的动作,两个系统在执行各自逻辑的过程相互独立,且每个系统都是可靠的,从而增强了两个系统的合作实现的资源转移的可靠性。

同时,由于第二数据库和第一数据库通过同步保持数据的一致,保证了第一系统能够实时处理第二系统存储到第二数据库中的事件执行结果,提高了资源转移的实时性,达到了客户端及时获得与第一事件相关的第一事件资源的技术效果。

可选地,为了保证第二数据库中存储第一事件执行结果,以第二数据库中存储了第一事件执行结果为完成了执行第一事件的标识,即系统还包括:判断单元,用于在第二系统将第一事件执行结果存储在第二数据库中之后,判断是否接收到第二数据库发送的存储回执,其中,存储回执用于指示已经完成将第一事件执行结果从第二数据库同步到第一数据库中;信息返回单元,用于在判断出接收到第二数据库发送的存储回执后,向客户端返回用于指示第二系统完成了对第一事件的执行的信息。

用于指示第二系统完成了对第一事件的执行的信息,例如,“第一事件成功”,具体在第一事件为购买行为时,用于指示第二系统完成了对第一事件的执行的信息为“购买成功”等信息。若第二系统没有接收到存储回执,可以回滚执行第一事件,并向客户端返回“购买失败”等信息。

通过上述实施例,独立的第一系统和第二系统的独立,以及第二数据库和第一数据库的独立,降低了两个系统的耦合,提高了资源转移的可靠性,第二数据库和第一数据库的同步保证了资源转移的实时性,从而解决了资源转移的可靠性较低的技术问题,达到了提高资源转移的可靠性的技术效果。

实施例5

根据本发明实施例,还提供了一种用于实施上述资源转移的方法的服务器,如图9所示,该服务器主要包括处理器601、设备接口602、网络接口603、存储器604,其中:

设备接口602用于连接终端或其他网络设备;

网络接口603用于连接服务器或者终端;

存储器604用于存储执行上述终端测试方法的程序代码,还可以存储第一系统和第二系统的业务逻辑,以及第一事件执行结果。

处理器601主要用于执行如下操作:第一系统从第一数据库中读取第一事件执行结果,其中,所述第一事件执行结果用于指示第二系统完成了对客户端发送的第一事件执行请求所请求的第一事件的执行,所述第一事件执行结果由所述第二系统存入到第二数据库中,并从所述第二数据库同步到所述第一数据库中;所述第一系统获取在所述第一事件执行完之后需返回给所述客户端的第一事件资源;所述第一系统将所述第一事件资源返回给所述客户端。

处理器601还用于执行如下操作:所述第一系统获取在所述第一事件执行完之后需返回给所述客户端的第一事件资源包括:所述第一系统从所述第一事件执行结果中获取与所述第一事件关联的事件标识;所述第一系统从资源数据库中获取与所述事件标识关联的所述第一事件资源。

处理器601还用于执行如下操作:所述事件标识携带在所述第一事件执行请求中,或者,所述事件标识由所述第二系统在完成了对所述第一事 件的执行时携带在所述第一事件执行结果中。

处理器601还用于执行如下操作:所述第一系统将所述第一事件资源返回给所述客户端之后,所述方法还包括:所述第一系统为所述第一事件执行结果添加状态标识,所述状态标识用于指示已经在所述第一事件执行完之后向所述客户端返回所述第一事件资源;所述第一系统将添加所述状态标识第一事件执行结果发送给所述第二数据库,其中,添加所述状态标识第一事件执行结果从所述第二数据库同步到所述第一数据库中。

处理器601还用于执行如下操作:所述第一系统从第一数据库中读取第一事件执行结果包括:所述第一系统采用一个或多个进程轮询所述从所述第一数据库中的多个数据表,其中,每个所述数据表记录多个事件执行结果,每个所述进程轮询所述多个数据表中的部分数据表;所述第一系统从所述多个事件执行结果中读取所述第一事件执行结果。

处理器601还用于执行如下操作:第一系统从第一数据库中读取第一事件执行结果包括:第一系统接收消息中间件转发的指示信息,指示信息由第二系统发送给消息中间件,用于指示第二系统执行第一事件得到第一事件执行结果;第一系统在接收到指示信息后,从第一数据库中读取第一事件执行结果。

处理器601还用于执行如下操作:在分布式服务器中设置多个所述第一系统,所述第一系统从第一数据库中读取第一事件执行结果包括:多个所述第一系统中的任意一个或多个所述第一系统从所述第一数据库中读取所述第一事件执行结果。

可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。

实施例6

本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以网络中的多个网络设备中的至少一个网络设备。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:

s1,第一系统从第一数据库中读取第一事件执行结果,其中,第一事件执行结果用于指示第二系统完成了对客户端发送的第一事件执行请求所请求的第一事件的执行,第一事件执行结果由第二系统存入到第二数据库中,并从第二数据库同步到第一数据库中。

s2,第一系统获取在第一事件执行完之后需返回给客户端的第一事件资源。

s3,第一系统将第一事件资源返回给客户端。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:

s1,第二系统接收客户端发送的用于请求执行第一事件的第一事件执行请求;

s2,第二系统将第一事件执行结果存储在第二数据库中,以供第一系统从第一数据库中读取第一事件执行结果,并向客户端返回第一事件资源,其中,第一事件执行结果用于指示第二系统完成了对第一事件的执行,第一事件执行结果从第二数据库同步到第一数据库中,第一事件资源由第一系统获取。

可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行第一系统从第一数据库中读取第一事件执行结果,其中,第一事件执行结果用于指示第二系统完成了对客户端发送的第一事件执行请求所请求的第一事件的执行,第一事件执行结果由第二系统存入到第二数据库中,并从第二数据库同步到第一数据库中。第一系统获取在第一事件执行完之 后需返回给客户端的第一事件资源。第一系统将第一事件资源返回给客户端。

可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行:第二系统接收客户端发送的用于请求执行第一事件的第一事件执行请求;第二系统将第一事件执行结果存储在第二数据库中,以供第一系统从第一数据库中读取第一事件执行结果,并向客户端返回第一事件资源,其中,第一事件执行结果用于指示第二系统完成了对第一事件的执行,第一事件执行结果从第二数据库同步到第一数据库中,第一事件资源由第一系统获取。

可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的系统实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦 合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1