业务请求处理方法和装置的制造方法

文档序号:8226139阅读:177来源:国知局
业务请求处理方法和装置的制造方法
【技术领域】
[0001]本发明涉及数据处理技术领域,特别是涉及一种业务请求处理方法和装置。
【背景技术】
[0002]目前,对于数据库集群来说,通常采用主从式结构,在多个数据库中存储相同的数据,当一个数据库发生故障时,集群会进行数据库切换,通过切换后的数据库来执行应用发送的业务请求。现有的应用与数据库集群中数据库之间通常采用直连的架构,数据库系统在处理业务请求时,应用直接向数据库发送业务请求,数据库返回相应的响应结果至应用。
[0003]采用现有的这种业务处理方法,当数据库在处理应用发送的某一业务请求(如处理一条SQL语句)的过程中发生故障时,集群会直接向应用发出业务请求处理失败的消息。如果应用再次请求,也即应用重新向数据库发送该业务请求,则集群会重新为该业务请求分配数据库,重新处理所述业务请求。而如果应用不再重新向数据库发送该业务请求,则本次业务请求处理的结果为失败。
[0004]可见,现有的业务处理方法,当数据库在处理应用发送的某一业务请求(如处理一条SQL语句)的过程中发生故障时,一方面,集群会直接向应用发出业务请求处理失败的消息,影响用户的使用体验。另一方面,应用需要重新发送该业务请求才可能得到相应的响应结果,既影响业务请求的处理效率又增加了应用的负担。

【发明内容】

[0005]鉴于上述现有的问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的业务处理方法和装置。
[0006]依据本发明的一个方面,提供了一种业务请求处理方法,包括:拦截应用向数据库发送的业务请求;将所述业务请求发送至多个数据库中的一个当前状态为正常运行的数据库进行处理,并存储所述业务请求;当判断在所述业务请求的执行过程中,处理所述业务请求的数据库发生故障时,为所述业务请求重新分配一个当前状态为正常运行的数据库;将所述业务请求发送至重新分配的所述数据库进行处理。
[0007]根据本发明的另一方面,提供了一种业务请求处理装置,所述业务请求处理装置包括:拦截模块,用于拦截应用装置向数据库装置发送的业务请求;发送模块,用于将所述业务请求发送至多个数据库装置中的一个当前状态为正常运行的数据库装置进行处理,并存储所述业务请求;执行模块,用于当判断在所述业务请求的执行过程中,处理所述业务请求的数据库装置发生故障时,为所述业务请求重新分配一个当前状态为正常运行的数据库装置;重发送模块,用于将所述业务请求发送至重新分配的所述数据库装置进行处理。
[0008]通过本发明,拦截应用向数据库发送的业务请求,再将拦截到的业务请求发送至数据库进行处理,并存储该业务请求。这样,当判断在该业务请求的执行过程中,处理该业务请求的数据库发生故障时,可以为该业务请求重新分配一个正常运行的数据库来处理该业务请求。通过本发明提供的业务请求处理方案,数据库发生故障时已进行处理但尚未处理完的业务请求可以重新分配正常运行的数据库来处理,一方面,由于业务请求被重新分配到集群中的数据库进行处理,因此,集群不会向应用返回业务请求失败或错误的消息,相应地则不会影响用户的使用体验。另一方面,由于应用未接收到业务请求失败的消息,因此不会重复发送该业务请求,不会增加应用的负担。而在判断出处理业务请求的数据库发生故障时,可以及时将业务请求重新发送至集群中的其他正常运行的数据库,相较于现有的方案中需要向应用返回业务请求失败的消息后再由应用重新发送的业务请求而言能够缩短业务处理时间,因此,能够提升业务请求的处理效率。
[0009]上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的【具体实施方式】。
【附图说明】
[0010]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0011]图1是根据本发明实施例一的一种业务请求处理方法的步骤流程示意图;
[0012]图2是根据本发明实施例二的一种业务请求处理方法的步骤流程示意图;
[0013]图3是根据本发明实施例三的一种业务请求处理方法的步骤流程示意图;
[0014]图4是根据本发明实施例四的一种业务请求处理装置的结构示意图;
[0015]图5是根据本发明实施例五的一种业务请求处理装置的结构示意图。
【具体实施方式】
[0016]下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0017]实施例一
[0018]参照图1,示出了本发明实施例一的一种业务请求处理方法的步骤流示意程图。
[0019]本实施例的业务请求处理方法包括以下步骤:
[0020]步骤SlOO:拦截应用向数据库发送的业务请求。
[0021]其中,业务请求为应用可以向数据库发送的任意业务请求,例如:请求获取某用户号码的请求、获取套餐剩余流量值的请求等。其中,本实施例中
[0022]需要说明的是,本实施例中可以由设置在应用和数据库之间的中间件来拦截应用向数据库发送的业务请求,也可以由其他任意适当的装置来拦截。
[0023]步骤S200:将业务请求发送至多个数据库中的一个当前状态为正常运行的数据库进行处理,并存储拦截的该业务请求。
[0024]多个数据库为两个或两个以上的数据库,多个数据库处于一个数据库集群中,各数据库之间存储有相同的数据。
[0025]步骤S300:当判断在业务请求的执行过程中,处理业务请求的数据库发生故障时,为业务请求重新分配一个当前状态为正常运行的数据库。
[0026]本领域技术人员可以根据实际需求设置判断业务请求是否在执行过程中的具体判断规则,例如:为业务请求的执行过程设置一个时间周期,在该时间周期内均可判定业务请求处于执行过程中。
[0027]对于判断处理业务请求的数据库发生故障的具体判断方式,也可以由本领域技术人员根据实际需求进行设置。优选地,将判断方式设置为:接收到与数据库之间连接中断的消息,则判定该数据库发生了故障。
[0028]步骤S400:将业务请求发送至重新分配的数据库进行处理。
[0029]由于重新分配的数据库能够正常运行,因此,在接收到业务请求时能够对该业务请求进行处理,返回相应的响应结果。
[0030]通过本实施例提供的业务请求处理方法,拦截应用向数据库发送的业务请求,再将拦截到的业务请求发送至数据库进行处理,并存储该业务请求。这样,当判断在该业务请求的执行过程中,处理该业务请求的数据库发生故障时,可以为该业务请求重新分配一个正常运行的数据库来处理该业务请求。通过本实施例提供的业务请求处理方法,数据库发生故障时已进行处理但尚未处理完的业务请求可以重新分配正常运行的数据库来处理,一方面,由于业务请求被重新分配到集群中的数据库进行处理,因此,集群不会向应用返回业务请求失败或错误的消息,相应地则不会影响用户的使用体验。另一方面,由于应用未接收到业务请求失败的消息,因此不会重复发送该业务请求,不会增加应用的负担。而在判断出处理业务请求的数据库发生故障时,可以及时将业务请求重新发送至集群中的其他正常运行的数据库,相较于现有的方案中需要向应用返回业务请求失败的消息后再由应用重新发送的业务请求而言能够缩短业务处理时间,因此,能够提升业务请求的处理效率。
[0031]实施例二
[0032]参照图2,示出了本发明实施例二的一种业务请求处理方法的步骤流示意程图。
[0033]本实施例的业务请求处理方法包括以下步骤:
[0034]步骤S102:中间件拦截应用向数据库发送的业务请求。
[0035]其中,本实施例中由中间件来拦截应用向数据库发送的业务请求,中间件设置于应用和多个数据库之间。多个数据库为两个或两个以上的数据库,多个数据库处于一个数据库集群中,各数据库之间存储有相同的数据。需要说明的是,应用、中间件以及多个数据库可以设置在同一台设备上,也可以各自设置在一台设备上。还可以将应用与多个数据库设置在同一台设备上,而将中间件设置在另一台设备上,或者,将中间件与多个数据库设置在同一台设备上,而将应用设置在另一台设备上。
[0036]所谓的之间并非是物理意义上的之间,而是由于中间件拦截应用与各数据库之间发送的数据,因此,才称其为设置于应用和多个数据库之间中间件。
[0037]其中,业务请求为应用可以向数据库发送的任意业务请求,例如:请求获取某用户号码的请求、获取套餐剩余流量值的请求等。
[0038]步骤S104:中间件将业务请求发送至多个数据库中的一个当前状态为正常运行的数据库进行处理,并存储业务请求。
[0039]多个数据库中可能存在发生故障的数据库,发生故障数据库无法处理业务请求,如果中间件将业务请求发送至发生故障的数据库,业务请求将被拒绝,无法得到相应的响应结果。因此,中间件在发送业务请求时,需要判断各数据库的当前状态,排除发生故障的数据库,将业务请求发送至当前状态为正常运行的数据库。
[0040]中间件在从多个当前状态为正常运行的数据库中选择数据库处理业务请求时,可以按照预设规则进行选择。预设规则可以由本领域技术人员根据实际需求进行设置,如:设置成随机选择一个数据库,遵从各数据库之间的负载均衡原则来选择一个数据库等。
[0041]对于中间件如何判断多个数据库中各数据库的当前状态是否为正常运行本实施例中不作具体限制。例如:在中间件中可以设置一个列表中记录各数据库对应的标识,以及各标识对应的当前状态,中间件通过查询该列表即可判断各数据库的当前状态。再例如:中间件可以通过判断与数据库之间的连接是否中断来判断数据库的当前状态等。
[0042]其中,业务请求可以设置在中间件中任意适当的位置。例如:中间件在预设的缓存中存储发送至数据库的业务请求;再例如:中间件将业务请求存储在预设的队列中等。
[0043]步骤S106:当中间件判断在业务请求的执行过程中,处理业务请求的数据库发生故障时
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1