对复制型数据库的访问进行负载平衡的制作方法_4

文档序号:8449515阅读:来源:国知局
指定了优选数据库实例时,GDS框架100试图确保服务始终运行在已为该全局服务指定的所有优选数据库上。因此,优选数据库的数量被称为服务的数据库基数。必须为服务指定至少一个优选数据库。
[0132]当添加或修改服务时,用户也可以为该服务指定可用数据库列表。如果优选数据库之一不能提供全局服务,则GDS框架100将服务重新定位到可用数据库之一,以为该服务维持期望的数据库基数。如果失效的服务运行在单个数据库上,并且没有对该服务可用数据库,则GDS框架100向管理员发出不能提供该服务的警告。
[0133]具体而言,如果在优选数据库失效后,可用数据库的数量不足以为服务维持数据库基数,则实际的服务基数将降低到优选数据库的数量之下。此外,当例如由于网络中断不能通知GDS框架100关于全局服务在一个或多个数据库上的故障时,假定该服务仍然在那些数据库上运行。因此,为服务指定N个优选数据库只保证该服务将永远不会运行在多于N个的数据库上,但是它可以有时运行在少于N个的数据库上。
[0134]在一种实施例中,当用于特定全局服务的“可用的”数据库失效时,全局服务被重新定位到用于那个全局服务的另一个“可用的”数据库。在可替代的实施例中,服务可以从可用数据库重新定位回优选数据库。
[0135]在使用基于角色的服务的系统中,只有当数据库被列为对该服务优选或可用并且数据库的角色(无论它是首要的或备用的)对应于为该服务指定的角色时,才能在数据库上启动基于角色的服务。例如,在配置中可以在任何数据库上运行的服务,只要它是首要的,应该用角色“primary (首要的)”来指定,并且使配置中所有的数据库作为优选的。当在这些情况下指定优选/可用数据库时,应当考虑角色转换对服务基数的潜在负面影响。
[0136]全局单例服务
[0137]全局单例服务是在某一时间只在数据库池的一个数据库上提供的服务,S卩,其中数据库基数等于I的全局服务。单例服务保证只有主(首要的)数据副本能被更新,并且通过这样做,防止由于同时更新多个副本导致的数据损坏。
[0138]在使用基于角色的服务的配置中,只有首要数据库可以被更新,并且在任何时间最多只有一个首要数据库。因此,无论为服务指定了多少优选或可用数据库,都为具有角色属性设置为“primary”的任何服务隐含地提供了单例属性。
[0139]在多个主的环境中,用户可以跨多个数据库对其数据的主关系进行分区。在这种情况下,更新必须去其数据块的主站点。为了支持这个功能,应当为每个数据块建立单独的更新服务,并且为每个服务只指定一个优选数据库。
[0140]用于选择在运行时期间推荐的实例的策略
[0141]为了执行运行时负载平衡,连接请求被指向到分布式数据库系统中当前正在提供由请求客户端要求的服务的最优实例。在一种实施例中,实例基于其负载、负载平衡目标及客户端与服务器之间的网络延时进行选择。与本地服务器的密切关系程度应当受到重视。
[0142]如以上提到的,除非所有的本地服务器都过载并且远程服务器可以提供明显更好的服务质量,否则对全局服务的客户端请求被指向到与客户端在地理上靠近的数据库服务器。但是,在某些情况下,例如,为了利用本地服务器上的数据高速缓存,用户可能想始终将请求指向到本地服务器。根据一种实施例,GDS框架支持可以被指定为服务属性的各种类型的客户端-服务器密切关系。
[0143]处理复制滞后
[0144]由于性能原因,分布式数据库系统通常在数据库之间使用数据的异步复制。这意味着,在更新提交到首要数据库上的数据的时间和该更新在副本上出现的时间之间存在延迟的可能性。换句话说,副本会具有过时(stale)的数据,因为提交给副本的更新会滞后于提交给主数据库的更新。
[0145]根据一种实施例,GDS框架100允许应用区分提供实时数据的全局服务与由于复制滞后会返回过时数据的服务。对于可以容忍一定程度滞后的应用,GDS框架100允许用户以秒为单位设置最大可接受的滞后值。在一种实施例中,用于复制滞后的容忍度利用全局服务参数lag来指定。
[0146]如果滞后是不可接受的,则对这种服务的请求将只转发到首要数据库或其与首要数据库同步的副本。如果滞后是可接受的并且指定了最大值,则服务请求被转发到滞后于首要数据库不超过指定值时间的数据库。如果数据库落后首要数据库长于设置允许的时间间隔,则该服务被禁用,并且通知连接到该数据库的客户端。在这种情况下,新的客户端连接被路由到满足该服务的滞后要求的数据库。
[0147]对于不能容忍任何复制滞后的应用,应该将全局服务配置为“lag”参数设置为O。对这种服务的请求将只转发到首要(主)数据库,或转发到其与主数据库同步的副本。
[0148]对于许多应用,只要过时数据是一致的,读取过时数据就是可以接受的。这种应用可以使用在任何数据库副本上运行的全局服务,无论复制滞后有多大。会返回具有无限制过时的数据的全局服务应该配置为具有“lag”参数设置为“ANY”。在数据库失效的情况下,这种服务可以被移动到启动该服务的任何其它数据库。“ANY”是用于该参数的缺省值。
[0149]如果服务的lag参数被设置为任意数值,则客户端请求可以只转发到滞后于首要副本不超过参数值时间的数据库。如果不存在这样的数据库,则连接请求将失败。
[0150]根据一种实施例,为了支持具有lag参数的全局服务,每个GSM定期地从数据库接收滞后值,并且如果在特定数据库上的滞后超过为服务指定的值,则产生“服务成员停用”事件。该事件将迫使该服务的客户端从数据库断开连接。对该服务的新请求将被路由到满足指定滞后值的数据库。
[0151]在可替代的实施例中,滞后值不发送到GSM。相反,每个数据库服务器为其服务监视滞后值,并且当超过用于服务的最大滞后值时,关闭它正在运行的任何服务。当用于该服务的滞后值在可接受的范围内时,该服务可以被数据库服务器恢复。
[0152]在数据库失效的情况下,客户端连接可能被路由到满足为该服务指定的最大滞后值,但滞后于第一数据库的另一个数据库。这种“回到过去(going back in time) ”对一些应用会产生数据一致性问题。这个问题可以以多种方式进行处理,诸如将情况通知给客户端。
[0153]根据一种实施例,通过使请求客户端告诉GSM其当前时间,就避免了 “回到过去”的问题。基于这个信息,GSM可以确保为故障转移选择的数据库提供了足够当前以满足应用需求的数据。
[0154]处理故障
[0155]根据一种实施例,如果数据库不能提供服务,则客户端请求被转发到提供这个服务的另一个数据库。取决于服务基数和故障转移策略,数据库故障也会使得在另一个数据库上启动服务。
[0156]由于GDS框架提供了在发生故障时的灾难恢复和业务的连续性,因此该框架本身具有高可用性。因此,提供了在任何框架组件的单次故障、网络分区以及甚至整个站点故障的情况下允许GDS框架继续工作的机制(尽管可能在降级模式下)。由于高可用性和性能原因,关于参数和全局服务及GDS框架组件的状态的数据在多个存储库中被复制。当网络分区和/或数据库或GDSF组件的故障导致数据跨存储库的差异(discrepancy)时,触发自动的交叉检查,其检验并潜在地恢复在系统的不同组件中存储的数据的相互一致性。
[0157]根据一种实施例,在服务或数据库故障的情况下,在数据库上运行的服务故障转移到其中已启用但还没有运行的另一个数据库(假设数据库角色与服务角色匹配)。考虑故障转移目标时,“优选”数据库先于“可用”数据库考虑。在服务已从一个数据库实例转移到另一个之后,⑶S框架100可以将建议消息发送给所有客户端,以指示对那个服务的将来请求应该到新指定的服务器。这些建议消息可以响应于服务的故障转移被立即发送,或者在故障转移后发送的下一个定期发送的建议消息中发送。
[0158]根据一种实施例,当服务移动到可用数据库时,在优选数据库重启时,GDS框架100不将该服务移回。如果需要,用户始终可以在重启后手动地将服务重新定位回优选数据库。这可以在无需终止活动会话的情况下优雅地完成。
[0159]如以上提到的,当locality参数被设置为L0CAL_0NLY,并且区域间的故障转移未被启用时,服务不能从一个区域中的数据库故障转移到另一个区域中的数据库。
[0160]根据一种实施例,所有的全局服务管理器监视数据库云中所有数据库上的服务可用性。当由于故障不能再提供服务时,注意到它并且连接到目录数据库的第一个GSM将尝试在可用数据库上启动该服务。如果服务故障转移由于没有提供这种服务的可用数据库而无法完成,则GSM在目录数据库中创建关于不能维持指定的服务基数的警告。警告可以触发发送到池管理员的自动通知。
[0161]如果GSM不能连接到云目录,则GSM不能执行自动的服务故障转移。在这种情况下,GSM可以在它能够连接到的云数据库上创建警告。
[0162]硬件概述
[0163]根据一种实施例,本文所描述的技术由一个或多个专用计算设备实现。专用计算设备可以是硬连线的以执行所述技术,或者可以包括诸如被永久性地编程以执行所述技术的一个或多个专用集成电路(ASIC)或现场可编程门阵列(FPGA)的数字电子设备,或者可以包括编程为按照固件、存储器、其它储存器或者其组合中的程序指令执行所述技术的一个或多个通用硬件处理器。这种专用计算设备还可以合并定制的硬连线逻辑、ASIC或FPGA与定制的编程来实现所述技术。专用计算设备可以是台式计算机系统、便携式计算机系统、手持式设备、联网设备或者结合硬连线和/或程序逻辑来实现所述技术的任何其它设备。
[0164]例如,图4是说明本发明的实施例可以在其上实现的计算机系统400的框图。计算机系统400包括总线402或者用于传送信息的其它通信机制,以及与总线402耦合用于处理信息的硬件处理器404。硬件处理器404可以是例如通用微处理器。
[0165]计算机系统400还包括耦合到总线402用于存储信息和要由处理器404执行的指令的主存储器406,诸如随机存取存储器(RAM)或其它动态存储设备。主存储器406还可以用于在要由处理器404执行的指令执行期间存储临时变量或其它中间信息。当存储在处理器404可访问的非暂时性存储介质中时,这种指令使计算机系统400变成为执行指令中所规定的操作而定制的专用机器。
[0166]计算机系统400还包括只读存储器(ROM) 408或者耦合到总线402的其它静态存储设备,用于为处理器404存储静态信息和指令。提供了存储设备410,诸如磁盘、光盘或固态驱动器,并且耦合到总线402,用于存储信息和指令。
[0167]计算机系统400可以经总线402耦合到显示器412,诸如阴极射线管(CRT),用于向计算机用户显示信息。输入设备414,包括字母数字和其它键,耦合到总线402,用于向处理器404传送信息和命令选择。另一种类型的用户输入设备是光标控制416,诸如鼠标、轨迹球或者光标方向键,用于向处理器404传送方向信息和命令选择并且用于控制显示器412上的光标运动。这种输入设备通常具有在两个轴,第一个轴(例如,X)和第二个轴(例如,y),中的两个自由度,以允许设备在平面内规定位置。
[0168]计算机系统400可以利用定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑来实现本文所述的技术,这些与计算机系统相结合,使计算机系统400或者把计算
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1