用于数据库绑定型应用的用户界面后端集群的扩展技术的制作方法

文档序号:18872944发布日期:2019-10-14 19:57阅读:188来源:国知局
用于数据库绑定型应用的用户界面后端集群的扩展技术的制作方法

本申请是国际专利申请,其要求2016年12月23日提交的美国申请序列号15/389,714的优先权权益,其文本和附图通过全文引用的方式并入本文中。

当前公开的实施例通常涉及用户界面后端集群,更具体地涉及用于数据库绑定型应用的用户界面后端集群的扩展技术。



背景技术:

通常,用户界面(ui)后端集群利用多个计算节点来运行ui后端代码/脚本。然而,为了保持强数据一致性语义,这样的ui后端集群通常共享单一的数据库。这样,传统的解决方案可以为cpu绑定型应用提供应用级可扩展性,例如基于超文本预处理器(php)的web开发应用。不幸的是,这样的传统解决方案对于数据库绑定型应用(例如,社区生物项目(ccp)v2ui、应用封装标准(aps)2等)不能扩展,因为数据库是不可扩展的。

克服数据库扩展不足的努力包括增加多个从机;然而,某些后端集群(例如,postgresql)仅支持同步复制。这样,添加多个从机可能导致最终的数据一致性问题和不可重复的读取尝试,这些读取尝试可能在使用期间改变ui,从而混淆ui的用户。因此,需要用于数据库绑定型应用的可扩展ui后端集群。



技术实现要素:

本发明的一个方面包括一种用于扩展用于数据库绑定型应用的用户界面(ui)后端集群的方法,其中该ui后端集群包括多个ui应用服务器和主数据库服务器。该方法包括:通过主数据库服务器从多个ui应用服务器的一个ui应用服务器接收数据修改请求,其中该数据修改请求包括待修改数据的标识信息;通过主数据库服务器修改在由主数据库服务器管理的主数据库中与接收到的数据修改请求相关联的数据;通过主数据库服务器更新主序列标识符,其中该主序列标识符定义与主数据库相关联的唯一值;通过主数据库服务器向ui应用服务器发送消息,其中该消息包括更新的主序列标识符;以及通过主数据库服务器执行与多个ui应用服务器中的每一个相关联的各个本地只读数据库的异步复制,其中执行该异步复制包括:将更新的主序列标识符存储到各个本地只读数据库的相应字段中。

在一些实施例中,将消息发送到ui应用服务器包括:与该消息一起发送数据修改操作状态,其中数据修改操作状态可用于确定与数据修改请求相关联的数据是否是未决修改。另外,在一些实施例中,数据修改操作状态指示本地只读数据库的数据是过期的。在其它实施例中,更新主序列标识符包括:将主数据库序列标识符的先前值增加整数值1。在其它实施例中,修改数据包括:在主数据库中插入、删除或更新相应数据中之一操作。

在另一方面,一种或多种计算机可读存储介质包括存储在其上的多个指令,该等指令响应于执行而使得:用户界面(ui)后端集群的主数据库服务器从该ui后端集群的多个ui应用服务器的一个ui应用服务器接收数据修改请求,其中该数据修改请求包括待修改数据的标识信息;修改在由主数据库服务器管理的主数据库中与接收到的数据修改请求相关联的数据;更新主序列标识符,该主序列标识符定义与主数据库相关联的唯一值;向ui应用服务器发送消息,该消息包括更新后的主序列标识符;以及执行与多个ui应用服务器中的每一个相关联的各个本地只读数据库的异步复制,其中执行该异步复制包括:将更新的主序列标识符存储到各个本地只读数据库的相应字段中。

在一些实施例中,向ui应用服务器发送消息包括:与该消息一起发送数据修改操作状态,其中数据修改操作状态可用于确定与数据修改请求相关联的数据是否是未决修改。另外,在一些实施例中,数据修改操作状态指示本地只读数据库的数据是过期的。在其它实施例中,更新主序列标识符包括:将主数据库序列标识符的先前值增加整数值1。在其它实施例中,修改数据包括:插入、删除或更新主数据库中的相应数据中之一操作。

本发明的又一方面提供一种用于扩展用于数据库绑定型应用的用户界面(ui)后端集群的方法,其中该等ui后端集群包括多个ui应用服务器和主数据库服务器。该方法包括:通过多个ui应用服务器中的一个ui应用服务器的ui应用管理器执行数据读取操作,其包括:检索与当前用户会话相关联的会话序列id,其中该会话序列id对应于在当前用户会话期间,在将数据写入主数据库服务器的主数据库的最近写入操作期间,从主数据库服务器的主数据库管理器接收的第一主数据库序列id;响应于确定该会话序列id不为空,从与ui应用管理器相关联的本地只读数据库读取本地数据库序列id,其中该本地数据库序列id对应于在主数据库异步复制到本地只读数据库的最近异步复制期间,从主数据库管理器接收的第二主数据库序列id,其中本地只读数据库包括主数据库的异步复制副本;确定会话序列id是否小于或等于本地数据库序列id;以及在确定会话序列id小于或等于本地数据库序列id之后,从本地只读数据库读取数据。

在一些实施例中,执行数据读取操作还包括:响应于确定会话序列id为空,从本地只读数据库读取数据。在其他实施例中,从与ui应用管理器相关联的本地只读数据库读取本地数据库序列id包括:向ui应用服务器的数据库管理器发送数据读取请求,并且还包括:通过数据库管理器查询本地只读数据库以从本地只读数据库检索本地数据库序列id。在其他实施例中,从本地只读数据库读取数据包括:将数据读取请求发送到ui应用服务器的数据库管理器,并且还包括:通过数据库管理器查询本地只读数据库,以从本地只读数据库检索与数据读取请求对应的数据。

在一些实施例中,该方法还包括:通过ui应用管理器从通信地耦合到ui应用服务器的多个端点设备中的一个端点设备接收一个或多个消息;以及通过ui应用管理器根据所接收的消息来呈现用户界面的数据。在一些实施例中,接收消息包括:从通信地耦合到多个ui应用服务器中的每一个的负载均衡设备接收消息,其中负载均衡设备还经由网络通信地耦合到多个端点设备中的每一个。另外,在一些实施例中,该方法包括:从端点设备接收消息,其包括:在用户会话期间在ui应用服务器处从端点设备接收所有消息。

在一些实施例中,该方法还包括:通过ui应用管理器在已经接收到从本地只读数据库读取数据不成功的指示之后,确定自从已经接收到该指示以来是否已经经过阈值持续时间;以及通过ui应用管理器响应于确定已经经过阈值持续时间,执行另一数据读取操作。另外,在一些实施例中,该方法还包括通过ui应用管理器在接收到从本地只读数据库读取数据不成功的指示之后,通过ui应用管理器向主数据库服务器的数据库管理器发送数据读取请求,其中数据读取请求可由主数据库管理器用来查询主数据库,以从本地只读数据库检索与数据读取请求相关联的数据,从而从主数据库检索可应用的数据。

在又一方面,一种或多种计算机可读存储介质包括存储在其上的多个指令,该等指令响应于执行而使得ui后端集群的多个ui应用服务器中的一个用户界面(ui)应用服务器:通过ui应用服务器的ui应用管理器执行数据读取操作,其中该数据读取操作包括:检索与当前用户会话相关联的会话序列id,其中该会话序列id对应于在当前用户会话期间,在将数据写入主数据库服务器的主数据库的最近写入操作期间,从ui后端集群的主数据库服务器的主数据库管理器接收的第一主数据库序列id;响应于确定该会话序列id不为空,从与ui应用管理器相关联的本地只读数据库读取本地数据库序列id,其中该本地数据库序列id对应于在主数据库异步复制到本地只读数据库的最近异步复制期间从主数据库管理器接收的第二主数据库序列id,其中本地只读数据库包括主数据库的异步复制副本;以及确定会话序列id是否小于或等于本地数据库序列id;以及在确定会话序列id小于或等于本地数据库序列id之后,从本地只读数据库读取数据。

在一些实施例中,执行数据读取操作还包括:响应于确定会话序列id为空,从本地只读数据库读取数据。在其他实施例中,从与ui应用管理器相关联的本地只读数据库读取本地数据库序列id包括:(i)通过ui应用管理器向ui应用服务器的数据库管理器发送数据读取请求,以及(ii)通过ui应用服务器的数据库管理器查询本地只读数据库,以从本地只读数据库中检索本地数据库序列id。在其他实施例中,从本地只读数据库读取数据包括:(i)通过ui应用管理器向ui应用服务器的数据库管理器发送数据读取请求,以及(ii)通过ui应用服务器的数据库管理器查询本地只读数据库,以从本地只读数据库检索对应于数据读取请求的数据。

在一些实施例中,多个指令还使得ui应用服务器:通过ui应用管理器从通信地耦合到ui应用服务器的多个端点设备中的一个端点设备接收一个或多个消息;以及由ui应用管理器根据所接收的消息来呈现用户界面的数据。另外,在一些实施例中,接收消息包括:从通信地耦合到多个ui应用服务器中的每一个的负载均衡设备接收消息,其中负载均衡设备还经由网络通信地耦合到多个端点设备中的每一个。

在一些实施例中,多个指令还使得ui应用服务器:通过ui应用管理器在已经接收到从本地只读数据库读取数据不成功的指示之后,确定自从已经接收到所述指示以来是否已经经过阈值持续时间;以及通过ui应用管理器响应于确定已经经过阈值持续时间,执行另一数据读取操作。另外,在一些实施例中,多个指令还使得ui应用服务器:通过ui应用管理器在接收到从本地只读数据库读取数据不成功的指示之后,向主数据库服务器的数据库管理器发送数据读取请求,其中数据读取请求可由主数据库管理器用来查询主数据库,以从本地只读数据库检索与数据读取请求相关联的数据,从而从主数据库检索可应用的数据。

附图说明

通过结合附图参考本公开的各种示例性实施例的以下描述,这里包含的实施例和其他特征,优点和公开以及实现它们的方式将变得显而易见,并且本公开将被更好地理解,其中:

图1是扩展用于数据库绑定型应用的ui后端集群的用户界面(ui)后端集群系统的示例性实施例的框图,该系统包括经由网络通信地耦合到多个ui应用服务器的一个或多个端点设备,每个ui应用服务器通信地耦合到主数据库服务器;

图2是图1的ui后端集群系统的服务器之一的示例性实施例的框图;

图3是用于处理可由图1的ui后端集群系统的主数据库服务器执行的数据修改请求的示例性方法的示意性流程图;以及

图4是用于执行可由图1的ui后端集群系统的ui应用服务器之一执行的数据读取操作的示例性方法的示意性流程图。

具体实施方式

为了促进对本公开的原理的理解,现在将参考附图中示出的实施例,并且将使用特定语言来描述这些实施例。然而,应当理解,并不旨在由此限制本公开的范围。

图1示出了用于扩展用于数据库绑定型应用的ui后端集群的用户界面(ui)后端集群系统100。ui后端集群系统100包括一个或多个端点设备102和多个服务器110,服务器110包括多个ui应用服务器120和主数据库服务器130。在示例性ui后端集群系统100中,一个或多个端点设备102经由网络106通信地耦合到负载均衡设备108,且负载均衡设备108通信地耦合到ui应用服务器120中的每一个(例如,参见ui应用服务器(1)112和ui应用服务器(n)122)。此外,ui应用服务器120中的每一个,或更具体地,其中的ui应用管理器(例如,参见ui应用管理器114和ui应用管理器124)通信地耦合到主数据库服务器130,或更具体而言,耦合到主数据库服务器130的主数据库管理器132。主数据库服务器130包括由主数据库管理器132管理的主数据库134。

每个ui应用管理器经由数据库管理器(例如,参见数据库管理器116和数据库管理器126)通信地耦合到只读本地数据库(例如,参见只读数据库118和只读数据库128),数据库管理器配置成管理(即,读取、写入、插入、删除等)各自的只读本地数据库的数据。每个只读本地数据库配置成存储主数据库134的只读异步副本。此外,主数据库管理器132配置成经由各自的ui应用服务器120的数据库管理器执行对主数据库134与每个只读本地数据库实例的异步复制(例如,在主数据库134上执行数据写入操作之后)。

在执行异步复制时,对应于主数据库的当前版本的全局唯一序列标识符值(即主数据库序列id)由此作为本地数据库序列id储存在各自的只读本地数据库中。换言之,存储在每个只读本地数据库中的本地数据库序列id表示在复制时只读本地数据库所对应的主数据库134的版本。因此,如下文所详述,本地数据库序列id可用于辨别只读本地数据库的数据是否代表主数据库134的最当前副本。

在示例性实例中,在端点设备102之一上执行的客户端应用104在用户会话期间向在ui应用服务器120之一上执行的ui应用管理器发送基于ui的请求。如下文将进一步详述,ui请求由接收的ui应用管理器处理(例如,接收、解析、分析等),此时,结果是ui应用管理器可发起一个或多个数据读取操作(例如,从数据库请求数据)或数据写入操作(例如,将数据写入数据库)。如前所述,各自的ui应用服务器120的本地数据库是在执行最后的异步复制时的主数据库134的数据的只读副本。因此,任何写入操作将在主数据库134上执行,而数据读取操作可以在各自的只读本地数据库上或主数据库134上执行。

对于数据写入操作,ui应用管理器向主数据库管理器132发送数据修改请求。如下文在图3中进一步所述,主数据库管理器132接收数据修改请求,修改主数据库134中与数据修改请求相关联的数据。此外,主数据库管理器132将主数据库序列id发送到与从其接收数据修改请求的ui应用服务器120相关联的ui应用管理器。一旦接收到,ui应用管理器将会话序列id(即,对应于当前用户会话)设置为所接收的主序列id。

对于数据读取操作,发起数据读取操作的ui应用管理器必须首先确定从哪个数据库查询数据。为此,如图4中进一步所述,ui应用管理器确定存储在只读本地数据库中的数据是否是当前的。为了确定要读取的数据是否是当前的,ui应用管理器检查用户会话是否具有会话序列id(例如,来自先前的写入操作)。如果用户会话没有会话序列id,则向只读本地数据库请求数据;否则,如果用户会话具有会话序列id,则ui应用管理器将该会话序列id与本地数据库序列id进行比较,以确定是否从本地只读数据库读取数据,等待本地只读数据库被异步复制,或者从主数据库134读取数据。因此,涉及本地只读数据库和各自的序列id(例如,主数据库序列id、本地数据库序列id和会话序列id)的主数据库134的分层结构允许这样的ui后端集群被扩展。

一个或多个端点设备102可以实现为能够执行这里描述的功能的任何类型的计算设备,包括经由网络(例如,网络106)与ui后端集群系统100的ui应用服务器120通信。因此,一个或多个端点设备102可以包括但不限于台式计算机、移动计算设备、连接因特网的电器、连接因特网的电视,或任何其他类型的“智能”或以其他方式连接因特网的设备。在其中端点设备102实现为移动计算设备应当理解,这样的实施例中,端点设备102可以实现为任何类型的便携式计算设备,其使用移动专用硬件和软件组件在移动架构上来操作、执行和提供服务和应用,诸如智能电话、穿戴物(例如,智能手表、智能眼镜等)、平板电脑、膝上型计算机等。

客户端应用104可以实现为任何类型的基于网络的软件应用,其配置成在客户端-服务器架构中与ui应用服务器120的ui应用管理器通信。换言之,与独立应用或胖客户端相反,客户端应用104实现为瘦客户端(例如,web浏览器、电子邮件客户端等),其配置成通过网络(例如,网络106)与基于服务器的应用(例如,基于云的web服务器)通信,以为了向与其连接的端点设备102的用户提供服务。换言之,客户端应用104可以不具体化。应当理解,在一些实施例中,这里所用的用户可以指人(即,人类用户)或端点设备102本身。

网络106可以实现为任何类型的有线和/或无线网络,包括局域网(lan)、广域网(wan)、全球网络(因特网)等。因此,网络106可以包括一个或多个通信耦合的网络计算设备(未示出),用于促进经由一系列有线和/或无线互连的网络通信流量的流动和/或处理。这样的网络计算设备可以包括但不限于一个或多个接入点、路由器、交换机、服务器、计算设备、存储设备等。

例如,一个或多个这样的网络计算设备可以配置成在使用有线(例如,以太网、令牌环等)和/或无线(例如,无线宽带、等)通信技术和相关联的协议的lan配置中将一个或多个端点设备102耦合到网络106。为了促成该实例,lan可以经由网络106的附加网络计算设备耦合(例如,经由同轴、移动电话、光纤等)到一个或多个较大区域网络(例如,wan、城域网(man)、因特网等)。

负载均衡设备108可以实现为任何类型的负载均衡器设备,包括配置成执行本文中描述的功能的任何软件、硬件、固件和电路,执行所述功能包括作为反向代理操作,跨多个服务器(例如,ui应用服务器120)分配网络和/或应用流量。例如,在一些实施例中,负载均衡设备108可以支持粘滞会话,使得在用户会话期间从端点设备102中的特定一个设备接收到的所有请求路由到ui应用服务器120中的同一个,以便实现读取一致性。应当理解,尽管负载均衡设备108示例性地示出为单个设备,但是负载均衡操作可以由一个以上的负载均衡设备108来执行,以通过冗余来增加可靠性和可用性。

服务器110中的每一个(即,ui应用服务器120和主数据库服务器130)可实现为能够执行本文所描述的功能的任何类型的计算和/或存储设备。现在参考图2,所示为代表ui应用服务器120和主数据库服务器130中的一个或多个的服务器110的示例性实施例。示例性服务器110包括中央处理单元(cpu)200、输入/输出(i/o)控制器202、存储器204、网络通信电路206和数据存储设备210,以及在一些实施例中的一个或多个i/o周边设备208。应当理解,替代的实施例可包括比示例性服务器110的组件更多、更少的组件和/或为服务器110的替代的组件,例如图形处理单元(gpu)。另外应当理解,一个或多个示例性组件可组合在单个集成电路(ic)上的单个芯片上系统(soc)上。

cpu200或处理器可实现为能够处理数据的任何类型的硬件或电路组合。因此,cpu200可以包括单核处理器架构中的一个处理核(未示出),或者多核处理器架构中的多个处理核。不论处理核的数量为多少,cpu能够读取和执行程序指令。在一些实施例中,cpu200可包括缓存内存(未示出),其可直接与cpu200集成或置于与cpu200单独互连的单独芯片上。应当理解,在一些实施例中,管线逻辑可用于执行软件和/或硬件操作(例如,网络流量处理操作),而不是向/从cpu200发出的命令。

i/o控制器202或i/o接口可以实现为能够在输入/输出设备与服务器110之间接口的任何类型的计算机硬件或电路组合。示例性地,i/o控制器202配置成从cpu200接收输入/输出请求,并向各自的输入/输出设备发送控制信号,从而管理流向/来自服务器110的数据流。

存储器204可实现为能够保存数据和指令以用于处理的任何类型的计算机硬件或电路组合。这样的存储器204可以称为主存储器。应当理解,在一些实施例中,服务器110的一个或多个组件可以直接访问存储器,使得某些数据可以独立于cpu200而经由直接存储器访问(dma)来存储。

网络通信电路206可实现为能够经由无线和/或有线通信模式管理网络接口通信(例如,消息、数据报、数据包等)的任何类型的计算机硬件或电路组合。因此,在一些实施例中,网络通信电路206可以包括能够配置成将服务器110连接到计算机网络(例如,网络106)以及ui后端集群系统100的其他设备(例如,负载均衡设备108、ui应用服务器120、主数据库服务器等)的网络接口控制器(nic)。

一个或一个以上的i/o周边设备208可实现为配置成连接到计算设备102并与其通信的任何辅助设备。例如,i/o周边设备208可以包括但不限于鼠标、键盘、监视器、触摸屏、打印机、扫描仪、麦克风、扬声器等。因此,应当理解,一些i/o设备能够具有一个功能(即,输入或输出)或两个功能(即,输入和输出)。

在一些实施例中,i/o周边设备208可以经由服务器110的电缆(例如,带状电缆、电线、通用串行总线(usb)电缆、高清晰度多媒体接口(hdmi)电缆等)连接到服务器110。在这样的实施例中,电缆连接到服务器110的相应端口(未示出),在它们之间进行的通信可以由i/o控制器202管理。在替代性实施例中,i/o周边设备208可经由可由网络通信电路206管理的无线通信模式(例如,等)连接到服务器110。

数据存储装置210可实现为能够非易失性存储数据的任何类型的计算机硬件(例如,半导体存储介质、磁存储介质、光存储介质等)。这样的数据存储设备210一般称为辅助或第二存储器,并且通常用于存储相对于上述存储器204的大量数据。

应当理解,可以基于各自服务器110的类型和预期用途来预测各自服务器110的组件的类型。例如,主数据库服务器130可配置为相对于ui应用服务器120的计算容量而具有较小计算容量的数据库服务器。类似地,ui应用服务器120可以配置为相对于主数据库服务器130的计算容量而具有更多计算容量的应用服务器。

再次参考图1,应当理解,一个或多个端点设备102中的每一个以及负载均衡设备108可以包含与图2的示例性服务器110的组件类似的组件。因此,为了使描述保持清楚,这里不描述这样类似的部件。应当进一步理解,在一些实施例中,一个或一个以上端点设备102中的每一个和负载均衡设备108可包含比图2的示例性服务器110的组件更多或更少的组件。

再次参考ui应用服务器120,在一些实施例中,ui应用服务器120可以构建成集群,该集群可以根据用户(例如,端点设备102)的数量和/或所需的性能度量(例如,服务质量)水平扩展。图1的示例性ui应用服务器120包括被指定为ui应用服务器(1)112的第一ui应用服务器和被指定为ui应用服务器(n)122的第n个ui应用服务器。应当理解,第n个ui应用服务器(即,ui应用服务器(n)122)表示“n”个附加的ui应用服务器120,其中“n”是正整数值。示例性ui应用服务器(1)112包括ui应用管理器114、数据库管理器116和ui应用服务器(1)112的本地只读数据库118。类似地,示例性ui应用服务器(n)122包括ui应用管理器124、数据库管理器126和ui应用服务器(2)122的本地只读数据库128。

ui应用服务器112、122可以实现为能够执行本文描述的功能的软件、硬件、固件和电路的任意组合。这样的功能包括与以下所列接口:端点设备102的客户端应用104(例如,经由网络106上的负载均衡设备108),只读数据库118、128(例如,经由各自的数据库管理器116、126),以及主数据库服务器130的主数据库管理器132(例如,经由各自的数据库管理器116、126)。ui应用管理器114、124中的每一个被配置成呈现数据和提供者ui并由其来管理所呈现的数据。ui应用服务器112、122的数据库管理器116、126中的每一个被配置成管理由ui应用管理器114、124发起的读取操作,例如可响应于从端点设备102的客户端应用104接收的请求而发起。

应当理解,在某些条件下,可以将由ui应用管理器120之一(例如,ui应用管理器114)发起的一些读取操作发送到ui应用管理器120中的另一个(例如,ui应用管理器124),以为了从另一个ui应用管理器120的只读数据库读取数据。例如,为了从ui应用管理器124的只读数据库读取数据,ui应用管理器114可以向ui应用管理器124发送数据读取请求。还应当理解,在一些实施例中,只读数据库(即,只读数据库118和只读数据库128)对于各自的ui应用服务器120可以不是本地的,而是可以与ui应用服务器120和其上存储只读数据库的服务器110之间的互连最接近或相关联的成本最低。

例如,在这样的实施例中,ui应用服务器120可以包括处理计算操作的应用服务器和管理只读数据库的存储服务器。在这样的实施例中,为了描述这里所呈现的功能,应用服务器和存储服务器的组合,尽管没有被容纳在同一服务器110上,但是意欲涵盖ui应用服务器120。不管各自的只读数据库与其管理的ui应用管理器的接近程度如何,应当理解,只读数据库应当尽可能靠近ui应用管理器,以便最小化数据获取时间。在一些实施例中,只读数据库可以托管在与单个数据库硬件资源不同的资源上,以减小对性能和重新分配的影响。

主数据库服务器130可实现为能够执行本文所述功能的软件、硬件、固件和电路的任何组合,包括与ui应用服务器120(例如,ui应用服务器112、122)的ui应用管理器(例如,ui应用管理器114、124)接口并管理主数据库134。为了管理主数据库134,示例性主数据库服务器130包括主数据库管理器132,主数据库管理器132配置成对主数据库134执行读/写操作,以读取、插入、删除和更新主数据库134的内容。主数据库管理器132进一步配置成执行将主数据库134的修改的数据异步复制到主数据库134的异步副本(即,只读数据库118、128)。应当理解,只读数据库118、128是主数据库134的只读异步副本。因此,只读数据库118、128应该遵循与主数据库134相同的数据库架构。

主数据库管理器132另外被配置成生成/更新主数据库序列id(即,在执行数据修改操作之后)并将主数据库序列id发送到ui应用服务器120。因此,如前所述,主数据库序列id可用于识别本地只读数据库的数据是当前的还是过期的。主数据库序列id可以由主数据库管理器132基于常规序列相关的数据库架构或本领域技术人员已知的任何其它逻辑来生成,并且可以基于前一主数据库序列id的增加值来更新。不管生成/更新过程如何,所生成的主数据库序列id在ui后端集群系统100的整个生命周期中应当是唯一的,并且生成架构应当是线程安全的。换言之,不同的数据修改(例如,根据两个不同的并行数据修改请求来执行)不应该能够分配相同的主数据库序列id。

现在参见图3,提供了用于处理数据修改请求(即,接收到的数据写入请求)的示例性方法300,该数据修改请求可由主数据库服务器(例如,图1的主数据库服务器130)执行,或者更具体地由主数据库服务器130的主数据库管理器(例如,图1的主数据库管理器132)执行。方法300开始于框302,其中主数据库服务器130确定是否已经从ui应用服务器(例如,图1的ui应用服务器120之一)接收到数据修改请求。

如前所述,可以从当前在ui应用服务器120中的个别一个上执行的ui应用管理器(例如,ui应用管理器114、ui应用管理器124等)接收数据修改请求。数据修改请求可以是由主数据库服务器130(例如,通过主数据库管理器132)可用来修改(例如,插入、删除、更新等)存储在主数据库服务器130的主数据库(例如,主数据库134)处的数据的任何类型的消息。因此,数据修改请求包括可用于标识要修改的数据的任何信息。

在框304中,主数据库服务器130修改与框302中接收的数据修改请求相关联的数据。另外,在数据修改操作期间,在框306中,主数据库服务器130更新主数据库序列id。如前所述,主数据库序列id可以由主数据库管理器132基于常规序列相关的数据库架构或本领域技术人员已知的任何其它逻辑来生成。例如,主数据库服务器130可以配置成通过使主数据库序列id的值增加1来更新主数据库序列id。同样如前所述,不管生成过程如何,所生成的主数据库序列id应当在ui后端集群系统100的整个生命周期中是唯一的,并且生成架构应当是线程安全的。

在框308中,主数据库服务器130向请求的ui应用服务器(即,在框302中从其接收到数据修改请求的ui应用服务器120中之一)发送包括框306中更新的主数据库序列id的消息。在一些实施例中,在框310中,主数据库服务器130将数据修改的状态(即,数据修改操作状态)与该消息一起发送。例如,数据修改操作状态可以提供关于修改是成功还是不成功的指示。

在框312中,主数据库服务器130执行主数据库134与所有复制的只读数据库(例如,只读数据库118、只读数据库128等)的异步复制。为此,主数据库管理器132配置成与每个数据库管理器(例如,数据库管理器116、数据库管理器126等)通信。应当理解,在执行每个异步复制时,在框314中,作为异步复制的结果,主数据库服务器130将本地数据库序列id值(例如,在本地只读数据库和主数据库134的字段中)设置为每个本地只读数据库中的更新的主数据库序列id。换言之,在主数据库134中包括主数据库序列id的字段现在在每个本地只读数据库中作为已经在其上执行的异步复制的副产品是可用的,该主数据库序列id在框306中由主数据库管理器132更新。

一旦检测到该数据字段(即,对应于主数据库序列id的数据字段)被改变(例如,异步复制一旦完成),各个ui应用服务器120中的每一个配置成通过将会话序列id设置为等于所接收的主数据库序列id来设置主数据库序列id或以其他方式将主数据库序列id与用户会话相关联。因此,应该以引入最少量延迟的方式(例如,努力满足用户需求和/或期望)来执行异步复制。应当理解,可以在本地只读数据库上执行读取操作,而无需异步复制已完成。换言之,可以从本地只读数据库读取数据,该本地只读数据库包括对应于来自主数据库134的版本的数据,该数据不代表主数据库134的最当前数据。

如前所述,负载均衡设备108可以配置成支持粘滞会话。在这样的实施例中,负载均衡设备108可以将在用户会话期间从特定一个端点设备102中接收到的所有请求路由到同一个ui应用服务器120。或者,在其它实施例中,ui应用管理器可以配置成管理用户会话,而非负载均衡设备108。应当理解,在这样的实施例中,ui应用管理器可以配置成复制每个用户会话和相关联的会话序列id,使得ui应用管理器可以配置成管理用户会话。

现在参考图4,提供了用于执行数据读取操作的示例性方法400,该数据读取操作可以由ui应用服务器(例如,图1的ui应用服务器120之一)执行,或者更具体地由ui应用服务器120之一的ui应用管理器(例如,ui应用管理器114、ui应用管理器124等)执行。方法400开始于框402,其中ui应用管理器确定是否执行数据读取操作。数据读取操作可响应于已从端点设备(例如,图1的端点设备102中的一者)接收到ui请求而执行,例如可能要求通过ui应用管理器呈现用户界面。

如果要执行数据读取操作,则方法400前进到框404,其中ui应用管理器检索会话序列id。如前所述,会话序列id对应于在主数据库服务器(例如,图1的主数据库服务器130的主数据库134)处执行的数据修改操作之后接收的主数据库序列id,该数据修改操作由ui应用管理器发起。在框406中,ui应用管理器确定检索到的会话序列id是否等于该会话序列id的原始空状态(例如,设置等于“无”(“none”))。如果是,则方法400分支到框408,其中ui应用管理器从与ui应用管理器相关联的本地只读数据库(例如,ui应用服务器112的只读数据库118、ui应用服务器(n)122的只读数据库128等)读取数据。为此,ui应用管理器可配置成向本地只读数据库的数据库管理器发送读取请求。因此,应当理解,读取请求包括可由数据库管理器用来从本地只读数据库检索数据的信息。

在一些实施例中,可以从不是与ui应用管理器相关联的本地只读数据库的只读数据库读取数据。换言之,在这样的实施例中,读取请求可以发送到ui后端集群系统100的任何本地只读数据库。在ui应用服务器(1)112正在执行正常数据读取例程的示例性实例中,ui应用服务器(1)112可以将数据检索请求发送到本地只读数据库118(例如,经由发送到数据库管理器116的一个或多个命令)或远程只读数据库,例如ui应用服务器(n)122的只读数据库128(例如,经由发送到ui应用服务器(n)122的数据库管理器126和/或ui应用管理器124的一个或多个命令)。

再参考框406,如果ui应用管理器确定检索到的会话序列id不为空,则方法400分支到框410。在框410中,ui应用管理器从本地只读数据库读取本地数据库序列id。如前所述,本地数据库序列id对应于在本地只读数据库的最近的异步复制期间接收的主数据库序列id的值。为了从本地只读数据库读取本地数据库序列id,ui应用管理器可以配置成向个别的本地只读数据库的数据库管理器发送读取请求。因此,应当理解,读取请求包括可由数据库管理器用来从个别的本地只读数据库检索数据的信息。

在框412中,ui应用管理器确定在框404中检索到的会话序列id是否小于或等于在框410中检索到的本地数据库序列id。换言之,ui应用管理器确定数据是当前的还是过期的。如果在框412中ui应用管理器确定会话序列id大于本地数据库序列id,则方法400分支到框420,如下所述;否则,方法400分支到框414。在框414中,ui应用管理器向本地只读数据库发送数据读取请求。换言之,ui应用管理器试图从本地只读数据库读取数据。

在框416中,ui应用管理器确定所请求的数据是否成功返回。举例来说,ui应用管理器可接收用于指示只读本地数据库目前不可用的指示(例如,响应于数据读取请求而接收的返回状态),例如这可能发生在如果在执行读取操作时只读本地数据库正与主数据库134同步时。如果ui应用管理器确定已成功返回所请求的数据,则方法400前进到框418,其中ui应用管理器在方法400返回框402之前将会话序列id的值设置为会话序列id的原始空状态(例如,设置为等于“无”(“none”))。

否则,如果在框416中ui应用管理器确定所请求的数据未被成功返回,则方法400分支到框420。在框420中,ui应用管理器确定是否尝试从主数据库134读取数据。换言之,ui应用管理器确定是尝试从本地只读数据库检索数据(即,在本地只读数据库发起另一读取操作),还是从主数据库134检索数据(即,向主数据库134发送数据读取请求)。如果在框420中ui应用管理器确定从本地只读数据库发起另一读取操作,则方法400返回到框410以从本地只读数据库检索更新的本地数据库序列id。

在一些实施例中,方法400可以在框420中循环,直到在本地只读数据库处发起后续读取操作之前满足阈值标准。举例来说,阈值标准可对应于持续时间(即,阈值持续时间),使得ui应用管理器可在尝试另一数据读取操作之前确定是否已经经过所述持续时间。在这样的实施例中,阈值持续时间可以对应于其中数据同步预期完成的预期持续时间。在另一实例中,阈值标准可对应于尝试次数(即,最大尝试计数)。在这样的实施例中,ui应用管理器可以确定从本地只读数据库读取数据是否已经进行了多次不成功的尝试,并且如果已经超过最大尝试计数,则尝试从主数据库134读取数据。

如果ui应用管理器确定不从本地只读数据库发起另一读取操作,则方法400前进到框422。在框422中,ui应用管理器向主数据库服务器130的主数据库134发送数据读取请求。在框424中,ui应用管理器确定所请求的数据是否已经从主数据库134返回。如果是,则方法400返回到框402以确定是否执行另一数据读取操作。

虽然已经在附图和前面的描述中详细地示出和描述了本公开,但是应认为是其是示出而非限制特征,应当明白,仅示出和描述了某些实施例,并且希望保护落入本公开的精神内的所有改变和修改。

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