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

文档序号:8258846阅读:来源:国知局
一个中间件,一个中间件可以设置于多个应用和多个数据库之间即为多个数据库设置一个中间件。
[0037]其中,业务请求为应用可以向数据库发送的任意业务请求,例如:请求获取某用户号码的请求、获取套餐剩余流量值的请求等。
[0038]步骤S204:中间件判断自身的连接池中是否存在中间件与数据库之间的空闲连接,若存在,则执行步骤S206,若不存在,则执行步骤S208。
[0039]其中,中间件自身的连接池中设置有中间件与数据库之间的连接,其数量与数据库可支持的连接的数量相同。另外,当存在多个数据库时,各个数据库中存储的数据也相同。
[0040]步骤S206:若中间件判断自身的连接池中存在中间件与数据库之间的空闲连接时,则选择一个空闲连接,然后,执行步骤S210。
[0041]对于选择一个空闲连接的具体选择方式本实施例不作具体限制,当存在多个空闲连接时,中间件可以随机从中选择一个空闲连接,也可以按照连接空闲时间的长短选择一个空闲时间最长的连接,当然还可以按照其他的选择方式进行选择。
[0042]步骤S208:若中间件判断自身的连接池中不存在中间件与数据库之间的空闲连接时,则保存业务请求,并按照设定规则持续判断连接池中是否存在中间件与数据库之间的空闲连接,直至连接池中出现空闲连接,选择出现的空闲连接,然后,执行步骤S210。
[0043]需要说明的是,业务请求可以存放入处理队列中,也可以存放入预设的缓存中,或者采用其它任意适当的存放形式。
[0044]在实际实现过程中,本领域技术人员可以根据实际需求设置持续判断连接池中是否存在中间件与数据库之间的空闲连接的具体规则。例如:每隔设定的时间间隔轮询连接池中的与数据库之间的各连接的状态,以判断是否存在空闲连接。
[0045]步骤S210:中间件使用选择的空闲连接将业务请求发送至数据库。
[0046]中间件选择空闲连接将业务请求发送至数据库,数据库中由于存在空闲连接因此能够保证该业务请求被处理。
[0047]步骤S212:中间件拦截数据库通过选择的空闲连接向应用返回的、对业务请求的响应结果,并将拦截到的响应结果发送至发送业务请求的应用。
[0048]数据库处理完业务请求后,通过发送业务请求的连接将响应结果返回至应用,此时,中间件拦截所述数据库返回的、对业务请求的响应结果。
[0049]对于中间件如何确定响应结果对应的应用,可以由本领域技术人员根据实际情况进行设置,例如:可以在中间件发送至数据库的业务请求中携带发送该业务请求的应用的标识信息,数据库在返回响应结果时,在响应结果中也携带有应用的标识信息,当中间件拦截到响应结果时,则可根据响应结果中的应用的标识信息来确定对应的应用。
[0050]相关技术中,在非分布式数据库系统如关系型数据库系统中主要采用应用与数据库直连的架构,导致数据库无法响应超过其连接数量上限的业务请求。而通过本实施例提供的业务请求处理方法,在数据库系统尤其是非分布式数据库系统如关系型数据库系统中,设置位于应用和数据库之间的中间件,中间件拦截应用向数据库发送的业务请求,从中间件自身的连接池中选择中间件与数据库之间的空闲连接来发送给业务请求,当中间件中存在空闲连接时,则可直接将业务请求通过空闲连接发送至数据库,当中间件中不存在空闲连接时,仍正常接受应用的业务请求,待出现空闲连接时即将该业务请求发送至数据库进行处理,而不会向应用返回错误或者失败消息。可见,应用只需发送一次业务请求,即可保证业务请求被数据库处理,既能够避免用户接收到业务请求失败的消息导致使用体验降低,又能够避免应用重复发送业务请求,因此,既能够降低应用所在终端以及网络的操作负担又能够提升用户的使用体验。此外,中间件仅是在数据库存在空闲连接时将业务请求发送至数据库处理,数据库无需重复判断自身是否存在空闲连接更不需要向应用返回业务请求失败的消息,因此,能够有效降低数据库的操作负担。
[0051]实施例三
[0052]参照图3,示出了本发明实施例三的一种业务处理方法的步骤流程示意图。
[0053]本实施例的业务处理方法具体包括以下步骤:
[0054]步骤S302:中间件根据数据库可支持的连接的信息,生成连接池。
[0055]其中,中间件设置于应用和数据库之间。连接池用于管理数据库可支持的连接。
[0056]中间件根据数据库可支持的连接的信息,生成连接池的一种可选的生成方式如下:中间件根据数据库可支持的连接的信息确定数据库可支持的连接上限;在连接池中设置相同的数量的连接。例如:数据库可支持的连接上限为50个连接,那么,中间件在连接池中建立50个连接。
[0057]本实施例中的业务处理方法可以应用于多种数据库系统,优选地,将本实施例中的业务请求处理方法应用于非分布式数据库系统,更优选地,应用于关系型数据库系统。由于目前非分布式数据库系统如关系型数据库系统在处理业务请求时,均是应用直接向数据库发送业务请求,数据库直接响应或者拒绝应用发送的业务请求,而这样业务请求处理方法,当数据库当前处理的业务请求数量达到数据库可支持的上限时,数据库会直接向应用返回业务请求失败的消息,影响用户的使用体验。所以,将本实施例中的业务请求处理方法应用于关系型数据库,在应用和数据库之间设置中间件,由中间件来缓存数据库无法马上处理的业务请求,待数据库存在空闲连接能够处理该业务请求时再将业务请求发送至数据库,而不会向应用返回错误或失败消息,能够有效解决影响用户体验的问题。
[0058]步骤S304:中间件拦截应用向数据库发送的业务请求,并向应用返回业务请求被接受的消息。
[0059]需要说明的是,中间件向应用返回业务请求被接受的消息为可选操作,在实际实现过程中,还可以设置成中间件拦截应用向数据库发送的业务请求,但不向应用返回业务请求被接受的消息。通过向应用返回业务请求被接受的消息,使得应用能够确认本次的业务请求已被成功受理,避免应用不断向数据库或中间件发送询问消息,减少应用的操作负担以及网络的信息交互负担。
[0060]步骤S306:中间件判断自身的连接池中是否存在中间件与数据库之间的空闲连接,若存在,则执行步骤S308,若不存在,则执行步骤S310。
[0061]一种优选的中间件判断连接池中是否存与数据库之间的空闲连接的方式如下:
[0062]中间件根据连接池中各连接的连接状态,判断连接池中是否存在与数据库之间的空闲连接;当存在连接状态为空闲的连接时,确定连接池中存在与数据库之间的空闲连接;当所有连接的状态均为忙碌时,确定连接池中不存在与数据库之间的空闲连接。
[0063]另一种中间件判断连接池中是否存在与数据库之间的空闲连接的方式如下:中间件可以在判断拦截到数据库返回的响应结果时,则确定连接池中存在与数据库之间的空闲连接。
[0064]步骤S308:若中间件判断连接池中存在空闲连接,则选择一个空闲连接,然后,执行步骤S312。
[0065]步骤S310:若中间件判断自身的连接池中不存在空闲连接,中间件保存业务请求,并则返回步骤S306。
[0066]例如,中间件将业务请求存放入待处理队列,或者,将业务请求存放入预设的缓存。
[0067]也即,若中间件判断连接池中不存在空闲连接,则会返回步骤S306按照设定规则持续判断连接池中是否存在与数据库之间的空闲连接,直至连接池中出现空闲连接,选择出现的空闲连接。
[0068]优选地,设定规则可以设置成包括但不限于以下规则:
[0069]第一种规则,中间件按照设定时间间隔判断连接池中是否存在与数据库之间的空闲连接。其中,时间间隔的设定可以由本领域技术人员根据实际需求进行设置,例如:设置成在轮询连接池中的所有与数据库之间的连接后隔I秒再次对连接池中的连接进行轮询。
[0070]第二种规则,中间件实时判断连接池中是否存在与数据库之间的空闲连接。
[0071]需要说明的是,该步骤中判断连接池中是否存在与数据库之间的空闲连接,直至连接池中出现空闲连接时,可以选择采用步骤S306中说明的任一种优选的方式。
[0072]步骤S312:中间件将选择的空闲连接的连接状态从空闲更改为忙碌,并使用选择的空闲连接向数据库发送业务请求。
[0073]中间件通过将所选择的空闲连接的连接状态更改为忙碌,可以高效快速地判断出连接池中各个连接的当前状态,从而更为有效地为业务请求选择空闲连接。
[0074]中间件使用选择的空闲连接向数据库发送业务请求时,会根据业务请求在队列中所处的位置或者业务请求的优先级来发送业务请求,具体地:
[0075]当业务请求存放于待处理队列时,从待处理队列中依次取出业务请求,并为取出的业务请求分配空闲连接,使用分配的空闲连接将业务请求发送至数据库。
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1