事务中间件机器环境中处理数据库状态通知的系统和方法_3

文档序号:9380363阅读:来源:国知局

[0057] 使用FCF特征,事务中间件机器201能够控制事务处理器的行为。例如,在事务服 务器211-212上的应用能够轮询数据库并检测问题,而不是等待事件的到来。然后,该系统 能够在事务应用接收到FAN事件221-222之后立即作出反应。此外,该系统还能够在实例 出故障时立即终止运行中的事务并且通知客户端。
[0058] 而且,事务中间件机器201能够提供快速故障检测。该系统能够在不需要测试数 据库连接的情况下确保数据库连接是有效的。此外,事务中间件机器201还能够从事务服 务器中移除无效的数据库连接并创建有效的数据库连接。如果事务服务器无法创建有效的 数据库连接,则该系统能够从路由列表中移除Tuxedo服务器。
[0059] 另外,事务中间件机器201能够适应数据库拓扑结构的变化,比如添加或移除节 点,并且能够将运行时工作请求分发给所有活动的数据库实例,包括重新加入集群的实例。
[0060] 而且,事务中间件机器201能够平稳地处理计划的和非计划的数据库服务中断。 对于计划的关闭,事务服务器允许进行中的事务在关闭连接之前完成。对于非计划的关闭, 事务服务器能够回滚进行中的事务并关闭连接。因而,能够为计划的关闭和非计划的关闭 在活动的数据库实例间对新请求进行负载均衡。
[0061] 根据本发明的一种实施例,RLB事件222能够指示在数据库服务内的每个数据库 实例的运行时负载和亲和性(affinity)。事务中间件机器201能够基于由数据库状态通知 服务202发布的RLB事件222来支持运行时连接负载均衡特征。运行时连接负载均衡特征 能够支持将工作请求路由到提供最佳性能的且使重定位工作的需求最小化的实例。
[0062] 例如,在Oracle RAC中,连接可以属于提供相关服务的任何实例。从高速缓存中 随机检索连接的方法可能并不适合,例如当一个实例表现得比其他实例更好时,在这种情 况下随机选择连接是效率低的。在Tuxedo中,应用能够利用负载均衡咨询FAN事件来将工 作请求引向在集群中当前正提供最佳的服务质量的实例。因而,Tuxedo能够将请求路由至 负载轻的数据库实例。
[0063] 另外,数据库状态通知服务202能够周期性地发送事件。如果负载信息(新的和 旧的)的值超过阈值,该系统能够更新不同实例的负载信息。因而,该系统能够避免对不同 实例的负载信息的不断更新,因为可能会存在大量的RLB事件。
[0064] 图3示出了根据本发明的一种实施例的在事务中间件环境300中处理数据库高可 用性(HA)事件的示图。如图3所示,在事务中间件环境300中提供各种事务服务320的事 务服务器302能够接收并处理与数据库服务301的状态变化310相关的HA事件。
[0065] 根据本发明的一种实施例,事务服务器302能够处理各种类型的HA事件,比如与 数据库服务301关联的上线事件和下线事件。而且,这些HA事件能够应用于不同的范围, 比如数据库311、服务312、节点313和实例314的范围。
[0066] 对于上线事件,当服务和实例被启动时,该系统能够创建新的数据库连接,使得应 用能够立即利用额外的资源。另一方面,对于下线事件,该系统能够通过终止与出故障的实 例或节点相关的会话而使对应用的妨碍最小化。此外,该系统能够终止未完成的事务并随 后立即通知应用用户。
[0067] 例如,当Tuxedo服务器接收到指示数据库状态由上线变为下线的HA事件时, Tuxedo服务器能够将N0ENTRY或RMERR消息返回给客户端303。
[0068] 当Tuxedo服务器接收到指示服务状态由上线变为用户下线并且实例状态为上线 的HA事件时,Tuxedo服务器能够被访问,但是tpopen()函数调用可以直接返回RMERR。
[0069] 当Tuxedo服务器接收到指示服务状态由上线变为故障下线的HA事件时,Tuxedo 服务器能够将N0ENTRY或RMERR消息返回给客户端303。
[0070] 当Tuxedo服务器接收到指示服务状态由用户下线变为上线的HA事件时,Tuxedo 服务器能够被访问,并且tpopenO函数调用能够被执行。
[0071] 当Tuxedo服务器接收到指示服务状态由故障下线变为上线的HA事件时,Tuxedo 服务器能够重新连接至数据库。
[0072] 当Tuxedo服务器接收到指示服务状态由上线变为下线并且实例状态为上线的HA 事件时,Tuxedo服务器能够重新连接至数据库。
[0073] 当Tuxedo服务器接收到指示新的实例被添加到数据库服务中的HA事件时,一些 Tuxedo服务器能够重新连接至新的实例。
[0074] 当Tuxedo服务器接收到指示主机状态由上线变为下线并且实例状态为上线的HA 事件时,实例状态由上线变为下线,Tuxedo服务器能够重新连接至数据库。
[0075] 当Tuxedo服务器接收到指示服务状态由上线变为下线并且实例状态由上线变为 下线的HA事件时,Tuxedo服务器能够将N0ENTRY或RMERR消息返回给客户端303。
[0076] 当Tuxedo服务器接收到指示服务状态由上线变为下线、主机状态由上线变为下 线或者实例状态由上线变为下线的HA事件时,Tuxedo服务器能够将N0ENTRY或RMERR消 息返回给客户端303。
[0077] 图4示出了根据本发明的一种实施例的在事务中间件环境400中支持服务路由的 示图。如图4所示,事务中间件环境400能够以路由策略410来配置,该路由策略410能够 利用各种数据库HA和RLB事件。
[0078] 在步骤401,该系统能够执行基于事务的路由,例如,Tuxedo GWTD0MAIN事务路由。
[0079] 在步骤402,该系统能够核查与事务服务器关联的数据库实例是否有效。例如,该 系统能够核查与事务服务器关联的数据库服务和实例的状态。如果数据库服务状态和实例 状态两者都关闭(或出故障),则该系统能够从路由列表中移除该事务服务器。
[0080] 在步骤403,该系统能够(对不同的数据库实例)执行基于事务亲和性的路由。在 步骤404,该系统能够执行基于服务版本管理的路由。在步骤405,该系统能够执行基于客 户端/服务器亲和性的路由。在步骤406,该系统能够执行基于XA亲和性的路由。
[0081] 在步骤407,该系统能够根据在不同数据库实例上的负载来执行负载均衡。例如, 如果一个数据库实例为无效的,则该系统能够选择与有效的数据库实例关联的事务服务 器。而且,该系统能够从与同一数据库服务关联的多个事务服务器中选出具有较轻的数据 库负载的事务服务器。
[0082] 最后,在步骤408,该系统能够根据服务负载来执行负载均衡。
[0083] 图5示出了根据本发明的一种实施例的用于支持在事务中间件机器环境中的数 据库状态通知集成的示例性流程图。如图5所示,在步骤501,该系统将一个或多个事务服 务器连接至数据库服务,其中该数据库服务与通知服务关联。然后,在步骤502,与所述一个 或多个事务服务器关联的通知服务客户端能够接收来自通知服务的一个或多个事件,其中 所述一个或多个事件指示在数据库服务上的一个或多个状态变化。而且,在步骤503,所述 一个或多个事务服务器能够自适应地响应在数据库服务上的一个或多个状态变化。
[0084] 本发明的许多特征能够在硬件、软件、固件或者它们的组合中、使用它们或者在它 们的辅助下执行。因此,本发明的特征可以使用处理系统(例如,包含一个或多个处理器) 来实现。
[0085] 本发明的特征能够在计算机程序产品中、使用计算机程序产品或者在其辅助下实 现,该计算机程序产品是具有存储于其上/内的能够用来对处理系统进行编程以执行本文 所给出的任何特征的指令的存储介质或计算机可读介质。存储介质能够包括但不限于:任 何类型的盘(包括软盘、光盘、DVD、CD-ROM、微驱动器和磁光盘)、ROM、RAM、EPROM、EEPR0M、 DRAM、VRAM、闪存器件、磁卡或光卡、纳米系统(
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1