包括中间件机环境的系统的制作方法

文档序号:6361409阅读:173来源:国知局
专利名称:包括中间件机环境的系统的制作方法
技术领域
本发明涉及计算机系统和诸如中间件之类的软件,尤其涉及提供中间件机或类似 平台的系统和方法。
背景技术
在任何大型组织内,在多年之后,该组织常常发现自己具有杂乱无序的IT基础架 构,该IT基础架构包含各种不同的计算机硬件、操作系统和应用软件。虽然这种基础架构 的每个个体组件可能本身设计良好,并且被维护得良好,不过当尝试互连这些组件,或者共 享公共资源时,这常常是一项困难的管理任务。近年来,各组织已把其注意力转向诸如虚拟 化和集中存储之类的技术,甚至最近已转向能够提供共享基础架构的基础的云计算。不过, 几乎不存在特别适合于用在这种环境中的一体化平台。这些正是本发明的实施例打算所致 力于的大致领域。发明内容
这里说明一种提供中间件机或者类似平台的系统和方法。按照一个实施例,所述 系统(这里在一些实现中,称为“Exalogic”)包含高性能硬件,以及应用服务器或中间件环 境的组合,以提供完备的JavaEE应用服务器复合体,所述应用服务器复合体包括大规模并 行的内存中网格,能够被快速提供,并且能够按需伸缩。按照一个实施例,系统可被部署 成提供支持应用服务器、中间件或其它功能,比如WebLogic服务器、JRockit JVM、Oracle Linux,和Oracle VM的运行的应用服务器网格、存储区域网和InfiniBand网络的全机架、 半机架或四分之一机架或者其它结构。系统的其它特征可包括例如零缓存拷贝、分散/聚 集I/O、T3连接和惰性反串行化。


图1表示按照一个实施例的中间件机环境的例示。
图2表示按照一个实施例的中间件机平台或环境的另一种例示。
图3表示按照一个实施例,作为四分之一机架结构提供的中间件机的例示。
图4表示按照一个实施例,作为半机架结构提供的中间件机的例示。
图5表示按照一个实施例,作为全机架结构提供的中间件机的例示。
图6表示按照一个实施例,可用于与其它系统和网络接口的中间件机平台或环境 的例示。
图7表示按照一个实施例的提供零缓存拷贝的系统。
图8表示按照一个实施例的用于零缓存拷贝的方法的流程图。
图9表不按照一个实施例的利用以太网协议的系统。
图10表不按照一个实施例的利用IPoIB和并行复用的系统。
图11表示按照一个实施例,提供分散/聚集I/O的方法的流程图。
图12表示按照一个实施例,利用服务器之间的单一连接的系统。
图13表示按照一个实施例,利用服务器之间的并行连接的系统。
图14表示按照一个实施例,提供集群中的服务器之间的并行复用的方法的流程 图。
图15表示按照一个实施例,支持服务器集群中的内存中会话复制的系统的例示。
图16表示按照一个实施例,支持服务器集群中的内存中会话复制的示例性流程 图。
图17表示按照一个实施例,利用负载均衡器支持服务器集群中的内存中会话复 制的系统的例示。
图18表示按照一个实施例,利用代理插件支持服务器集群中的内存中会话复制 的系统的例示。
图19表示按照一个实施例,支持跨服务器集群的内存中会话复制的系统的例示。
具体实施方式
如上所述,在任意大型组织内,多年之后,该组织常常发现自己具有杂乱无序的IT 基础架构,该IT基础架构包含各种不同的计算机硬件、操作系统和应用软件。虽然这种基 础架构的每个个体组件可能本身设计良好,并且被维护得良好,不过当尝试互连这些组件 或者共享公共资源时,这常常是一项困难的管理任务。近年来,各组织已把其注意力转向 诸如虚拟化和集中存储之类的技术,甚至最近已转向能够为共享基础架构提供基础的云计 算。不过,几乎不存在特别适合于用在这种环境中的一体化平台。
为了解决这个问题,这里说明一种提供中间件机或类似平台的系统和方法。按 照一个实施例,所述系统(这里在一些实现中,称为“Exalogic”)包含以下各项的组合:例 如64位处理器技术的高性能硬件、高性能大容量存储器,以及冗余无线带宽和以太网联网 部件;以及应用服务器或中间件环境,比如WebLogic套件,以提供完备的JavaEE应用服 务器复合体,所述应用服务器复合体包括大规模并行的内存中网格,能够被快速提供,并 且能够按需缩放。按照一个实施例,系统可被部署成提供应用服务器网、存储区域网络和 InfiniBand网络的全机架、半机架或四分之一机架或者其它结构。中间件机软件能够提供 应用服务器、中间件和其它功能,比如WebLogic服务器、JRockit或Hotspot JVM> Oracle Linux或Solaris,和Oracle VM。按照一个实施例,该系统可包括通过InfiniBand网络相 互通信的多个计算节点、InfiniBand交换机网关和存储节点或单元。
当被实现成机架结构时,机架的未使用部分可以保持空着或者被填充物占据。系 统的其它特征可包括例如零缓存拷贝、分散/聚集I/o、T3连接和惰性反串行化。
图1表示按照一个实施例的中间件机环境100的例示。如图1中所示,每个中间 件机系统102包括若干中间件机机架组件104,每个机架组件104包括高性能中间件机硬件节点106 (例如,64位处理器、高性能大容量存储器,以及冗余InfiniBand和以太网联网), 和中间件机软件环境108的组合。这使得能够提供可在数分钟内而不是数天或数月内供给 的、并且能够按需伸缩的完备应用服务器环境。
按照一个实施例,每个中间件机系统可被部署成全机架、半机架、或者四分之一机 架,或者机架组件的其它结构,并且若干中间件机系统可以同样利用InfiniBand被耦接在 一起,从而创建更大的环境。每个中间件机软件环境可配有若干应用服务器或者其它软件 实例,例如如图1中所示,第一应用服务器实例109可包括虚拟机116、操作系统120、虚拟 化层124和应用服务器层128 (例如,WebLogic,包括小服务程序(servlet) 132、EJB134和 Gridlinkl36容器);而第二或者另外一个应用服务器实例110可包含虚拟机116、操作系统 120、虚拟化层124和数据网格层140(例如,Coherence,包括活动高速缓存142)。按照一个 实施例,通过利用中间件机集成组件150 (这里称为Exalogic集成包),每个应用服务器实 例能够相互通信,并且能够与其中间件机硬件节点和其它节点通信,中间件机集成组件150 本身提供若干种优化特征,比如对InfiniBand和其它特征的支持,下面进一步分别详细说 明这些特征。
图2表示按照一个实施例的中间件机平台或环境的另一种例示。如图2中所示, 每个应用服务器实例可以充当中间件机环境内的发送器和/或接收器160、161。按照一个 实施例,每个应用服务器实例与一复用器162,163关联,复用器162,163允许应用服务器实 例通过InfiniBand网络164与其它应用服务器实例通信。在图2中所示的例子中,取决于 特定的实现方式,应用服务器实例可包括内核空间162,内核空间162又可包括套接字直接 协议168,应用服务器实例还可包括用户空间164、应用服务器(例如,WebLogic) 166、JVM (例如,JRockit/Hotspot层)170,和WLS核172,小服务程序容器174及JSP编译器176组 件。按照其它实现方式,可以包括中间件型软件和组件的其它组合。按照各个实施例,机器 集成组件还可提供一个或多个特征,比如零缓存拷贝、分散/聚集1/0、T3连接和惰性反串 行化,以提供共孚基础架构的基础,和提闻共孚基础架构内的性能,下面进一步分别详细说 明这些特征。
本领域的技术人员易于理解,本发明的功能块可用硬件、软件或者硬件和软件的 组合来实现,从而实现本发明的原理。本领域的技术人员明白附图中说明的功能块可被组 合,或者分成子块,以实现如上所述的本发明的原理。于是,这里的说明可支持这里说明的 功能块的任意可能组合或分离或者进一步的定义。
图3表示按照一个实施例,作为四分之一机架结构提供的中间件机的例示。如图 3中所示,当作为四分之一机架结构202提供时,中间件机可包括多个高性能服务器,比如 X4170M2服务器节点;一个或多个InfiniBand交换机/网关,比如匪2-GW节点;一个或多个 存储组件,比如Maguro Rff-2节点;和一个或多个管理交换机,比如Cisco4948交换机。机 架的任何未用部分可以保持空着或者被填充物占据。
图4表示按照一个实施例,作为半机架结构提供的中间件机的例示。如图4中 所示,当作为半机架结构216提供时,中间件机可类似地包括大量的高性能服务器,比如 X4170M2服务器节点;一个或多个InfiniBand交换机/网关,比如匪2-GW节点;一个或多个 存储组件,比如Maguro Rff-2节点;和一个或多个管理交换机,比如Cisco4948交换机。机 架的任何未用部分可以保持空着或者被填充物占据。尽管更充实,不过硬件组件和四分之一机架结构的硬件组件相同。图5表示按照一个实施例,作为全机架结构提供的中间件机的例示。如图5中所示,当作为全机架结构222提供时,中间件机可包括数目更大的高性能服务器,比如X4170M2服务器节点;一个或多个InfiniBand交换机/网关,比如匪2-GW节点;一个或多个存储组件,比如RW-2节点;和一个或多个管理交换机,比如Cisco4948交换机。同样地,尽管更充实,不过硬件组件和半机架和四分之一机架结构的硬件组件相同。图6表示按照一个实施例,可用于接口其它系统和网络的中间件机平台或环境的例示。如图6中所示,无论是以四分之一机架、半机架还是以全机架结构提供中间件机230,中间件机硬件232可包括利用InfiniBand耦接在一起,并且可利用管理网络234管理的多个高性能服务器,比如X4170M2服务器节点;一个或多个InfiniBand交换机/网关,比如匪2-GW节点;一个或多个存储组件,比如MaguroRW-2节点;和一个或多个管理交换机,比如Cisco4948交换机。按照一个实施例,InfiniBand交换机/网关,比如NM2-GW节点可用于向一个或多个数据中心服务网络236提供IOGb以太网连接。所述一个或多个管理交换机,比如Cisco4948交换机可用于向一个或多个数据中心管理网络236提供IGb以太网连接。InfiniBand网络还可被用于把中间件机连接到其它中间件机,或者连接到其它机器环境,比如 Exadata 机 240。按照一个实施例,无论是以四分之一机架、半机架还是以全机架结构提供中间件机230,中间件机硬件和/或软件环境可包括改善中间件机的性能的另外特征,例如零缓存拷贝、分散/聚集I/O、T3连接和惰性反串行化。零缓存拷贝按照一个实施例,系统可以利用零缓存拷贝,零缓存拷贝避免诸如WebLogic服务器(WLS)、JRockit 或 Hotspot JVM>OracIe Linux 或 Solaris、和操作系统(OS)之类组件中的缓存拷贝。传统地,系统的每一层(例如,服务器层、JVM层、OS层等)保留其它层、应用和进程不能访问的专用存储空间。这是为了通过防止外部系统破坏关键存储空间和数据,从而造成系统崩溃,而保护系统的整体稳定性。因而,在请求和响应处理期间,从专用存储空间到专用存储空间地在各层之间拷贝与请求和响应相关的数据。即,在特定层处理了数据之后,它把数据推送到下一层,所述下一层随后把该数据拷贝到其专用存储空间中,对该数据进行操作,然后推送到再下一层,等等。不过,本发明的实施例提供各层之间的紧密集成,从而使它们能够安全地共享存储空间,而不会增大系统稳定性方面的风险。因而,这减少了用户和内核空间中的CPU利用,从而减小了等待时间。图7表示按照一个实施例,提供零缓存拷贝的系统300。如图7中所示,在应用服务器302、用户空间304和内核空间306中,都可提供多个不同的特征。在服务器级,可以使用字节缓冲器,而不是静态字节阵列和临时缓冲器。例如,JSP编译器可以使用字节缓冲器308,而不是静态字节阵列。通过绕回(wrapping)后备(backing)字节阵列,可以创建字节缓冲器。对字节缓冲器或者后备字节阵列作出的变化可在另一者中反映出来。从而,可以保存一个字节阵列,并使字节缓冲器环绕该字节阵列,而不是为每一层创建新的字节阵列以进行操作并且随后把该字节阵列拷贝到下一层的新的字节阵列中。由于每一层对该字节阵列进行操作,因此变化被应用于该字节阵列。这限制了所需的拷贝的量,从而提高了性能。类似地,小服务程序容器可以利用310字节缓冲器,而不是拷贝到临时缓冲器中,服务器核可利用312字节缓冲器感知流,而不是内核级分块流,从而使JVM能够把本地内存指定(pin)到WLS缓冲器,而不是利用拷贝314。通过指定内存,JVM确保该内存不会被垃圾回收,或者被任何其它进程使用。从而,在数据处理过程中的每个步骤,可以使用指向内存中的数据的指针或索引,而不是在每个步骤拷贝该数据。这些改进允许在服务器层的零拷贝316,从而节省CPU周期和提高性能。按照一个实施例,平台还支持套接字直接协议(SDP)的使用318,套接字直接协议避免把字节缓冲器数据从在用户空间中运行的JVM拷贝到内核空间中的网络栈。这进一步减少了在服务HTTP请求时的缓存拷贝的数目。避免拷贝节省了用户空间和内核空间中的CPU周期,这减小HTTP业务的等待时间。在示例性实施例中,应用服务器(例如,WebLogic服务器)可被修改,以便在服务HTTP请求时实现零缓存拷贝。WebLogic服务器JSP编译器可把静态JSP内容直接写入Java新I/O (NIO)字节缓冲器中。在运行时,web容器可把这些字节缓冲器直接传给字节缓冲器感知WebLogic服务器IO流,而没有任何拷贝。这些字节缓冲器随后可由NIO复用器利用聚集的写操作(gathered write)直接写出。在Exalogic上运行的JVM (例如,JRockit或HotSpot JVM)可在内存中指定这些字节缓冲器,并避免把数据拷贝到本地内存。图8表示按照一个实施例的零缓存拷贝方法的流程图。在步骤400,提供一个或多个高性能计算系统,每个高性能计算系统包括一个或多个处理器,和一个高性能存储器。在步骤402,提供用户空间,所述用户空间包括Java虚拟机(JVM)和一个或多个应用服务器实例。在步骤404,提供JVM和一个或多个应用服务器实例可访问的多个字节缓冲器。在步骤406,第一应用服务器实例接收请求。在步骤408,与该请求相关的数据被保存在与JVM相关的堆空间中。在步骤410,JVM指定保存数据的堆空间的一部分。在步骤412,数据被推送到第一字节缓冲器,在那里所述数据被第一应用服务器实例访问。在步骤414,第一应用服务器利用该数据产生响应。在步骤416,第一应用服务器发送该响应。按照一个实施例,图8中所示的方法还可包括提供内核空间的步骤,所述内核空间包括对套接字直接协议(SDP)的支持;和提供内核空间和用户空间可以访问的一个或多个字节缓冲器感知流(bytebuffer-aware stream)的步骤。另外,在图8中所示的方法中,每个字节缓冲器可以是Java新I/O (NIO)字节缓冲器。此外,请求可以是HTTP请求。另夕卜,在图8中所示的方法中,第一字节缓冲器可包括指向堆空间中保存数据之处的索引。分散/聚集I/O按照一个实施例,系统可以利用分散/聚集1/0,分散/聚集I/O使网络分组的分段减到最少,从而允许OS根据Java新I/O (NIO)的使用进行分段。另外,按照一个实施例,系统利用InfiniBand上的网际协议(IPoIB)协议,该协议具有64KB的最大传输单元(MTU)0比较起来,以太网具有1.5KB的MTU0利用IPoIB使应用服务器,例如WebLogic服务器每次能够写入更多的数据。另外,典型的以太网连接提供约lGb/s的速度,然而通过利用InfiniBand网络,可以获得40Gb/s以上的速度。这提供更大的灵活性,并且允许通过连接传送多得多的数据。理想地,利用这样的连接的系统可适合于通过网络推送更多的数据,以使可用带宽饱和,从而有效地利用可用带宽。图9表示按照一个实施例,利用以太网协议的系统。在利用以太网网络500的系统中,只能在较小的部分中写入数据。如图9中所示,服务器502通过以太网网络500连接到服务器504。这两个服务器利用单一复用器506和508,通过单个通道通信。数据传输受以太网连接限制,如图9中所示,以太网连接迫使服务器用4KB分块进行通信。如果试图每次传送大于4KB的数据,那么将会超过网络的容量。这迫使在内核级进行更多的工作,具体地说,内核级把数据分成更小的单元,并且随时施加流量控制。这在时间和资源方面代价较闻。图10表示按照一个实施例,利用IPoIB和并行复用的系统。如上所述,与典型的以太网连接相比,InfiniBand网络提供更大的带宽。这种更大的带宽便于使用更大的MTU0如图10中所示,服务器506通过InfiniBand网络510连接到服务器508。通过利用靠InfiniBand可获得的更大带宽,系统能够用与以太网相比大得多的64KB分块推送数据。在这样的系统中,内核级认识到增大的带宽,从而推送更大的数据单元,而不进行把数据进一步分成较小的单元,和施加流量控制的额外工作。按照一个实施例,在集群内,在服务器之间可以使用多个并行逻辑连接,(即,通道)。这允许同时在服务器之间传送更多的数据,从而使多个线程能够并行执行。如图10中所示,每个服务器利用并行复用器512和514,并行复用器512和514能够管理各个连接,以确保多个线程不会相互干扰,或者相互妨碍。这进一步改善了可用带宽的使用,从而提高了服务器之间的数据传送的效率。图11表示按照一个实施例,提供分散/聚集I/O的方法的流程图。在步骤600,提供一个或多个高性能计算系统的集群。每个高性能计算系统可包括一个或多个处理器,和一个高性能存储器。集群可通过InfiniBand网络通信。在步骤602,提供在集群上运行的包括一个或多个应用服务器实例的中间件环境。在步骤604,提供多个复用器。每个应用服务器实例包括至少一个复用器。在步骤606,在第一应用服务器实例上的第一复用器收集来自高性能存储器中的多个位置的数据。在步骤608,第一复用器把数据成批地传送给在第二应用服务器上的第二复用器。按照一个实施例,图11中所示的方法还可包括利用每个复用器,管理跨多个并行通道传送数据的多个线程。用户可以配置在所述多个并行通道中包括多少个并行通道。另夕卜,如上所述,每个复用器可以是New I/O (NIO)复用器。此外,每个数据传送可以利用分散/聚集数据处理。T3连接(并行复用)特别地,如这里所述,提供在集群中的服务器之间提供并行复用的系统和方法。一个这样的系统可包括一个或多个高性能计算系统的集群,每个高性能计算系统包括一个或多个处理器和一个高性能存储器。集群通过InfiniBand网络通信。系统还可包括在集群上运行的包括一个或多个应用服务器实例的中间件环境。系统还可包括多个复用器,其中每个应用服务器实例包括至少一个复用器。每个复用器可接收来自多个线程的信息,以利用多个并行通道,通过Infiniband网络传送给在不同的应用服务器实例上的一个不同的复用器。图12表示按照一个实施例,利用服务器之间的单一连接的系统。如图12中图解所示,在典型的集群情形下,在服务器702和704之间实现单一连接700。例如,来自服务器702的通信被发送给单一复用器706,在所述复用器706,这些通信通过单一连接700被传送给服务器704。在服务器704处的对应的单一复用器708随后把通信转发到它们的适当目的地。不过,这种单一连接不能充分利用InfiniBand (IB)网络中的可用带宽。图13表示按照一个实施例,利用服务器之间的并行连接的系统。如图13中所示,在服务器712和714之间可以维持多个并行连接710。每个服务器包括并行复用器716和718,以通过服务器之间的多个连接并行发送通信。按照一个实施例,可以修改T3协议或类似协议以允许多个连接,这避免了每连接(per-connection)瓶颈,允许更好地把网络带宽用于诸如内存中会话复制之类的特征。这能够更好地利用可用的IB带宽,并且在对等体之间提供减速更少的高效通信。如上所述,按照一个实施例,平台在其背板(backplane)中支持InfiniBand上的网际协议(IPoIB)网络,其中IB的网络带宽为25Gbps。由于单一连接,比如Weblogic服务器中的T3不能把IB带宽充分用于集群通信,因此并行地创建了多个连接,以便更好地利用网络带宽。多个连接有助于散开会话复制网络业务。按照一个实施例,服务器,例如利用T3协议的WebLogic服务器能够把来自所有线程的消息集合成单个发送器队列,该单个发送器队列是通过单一线程通过网络转储清除的。当多个进程需要相同的锁,以便继续下去时,会发生锁竞争,例如,在试图把消息添加到发送器队列中的线程之间会发生锁竞争。通过并行地创建多个连接,锁竞争被分散在多个连接之间,从而减少每连接的锁竞争。另外,存在向远程服务器实例发送消息的多个发送器线程,从而引起工作流的并行化。按照一个实施例,通过利用在ClusterMBean上配置的复制通道作为模板,能够创建隐式复制通道。创建的隐式通道的数目以ServerMBean.getReplicationPorts()属性为基础。隐式通道从ClusterMBean.ReplicationChannels拷贝全部属性,同时重写(overriding)端口信息以使之保持唯一。重写端口信息从ServerMBean.getReplicationPorts ()获得。另外,系统可包括效用函数,所述效用函数可用于判定是否配置多个通道。效用函数可以进行一次判定、每隔一定时间自动进行判定、响应配置的变化进行判定,和/或奉用户之命进行判定,并且为后续调用缓存结果。系统还可为配置的每个复制通道创建独有的RMI存根(stub)(为每个连接分配的存根)。系统可以对sessionID进行散列处理,以利用例如轮询或其它类似的均衡算法,在所有存根之间均衡复制请求。系统还可确保在为服务器配置的复制通道之一上接收复制调用。按照一个实施例,利用InfiniBand可比现有系统提供更多的带宽,这实际上提供可通过其传送数据的更大管道。为了更好地利用该更大的管道,可以使用多个并行逻辑连接,即信道,而不是单个逻辑连接。多个连接意味能够在各个正在执行的线程不会相互妨碍的情况下执行更多的并发活动。这可用于例如聚类;即多个服务器在集群中相互通信的情况。在集群中,服务器之间的会话数据复制是一个重要的特征。会话数据可包括例如特别针对对网站的特定访问或者会话而言的购物车或其它用户数据。通过利用集群中的服务器之间的多个连接,能够更可靠并且更高效地实现相对于每个服务器的内存中会话复制。这将在服务器故障的情况下保存会话数据,从而改善最终用户和服务提供者的体验。图14表示按照一个实施例,提供集群中的服务器之间的并行复用的方法的流程图。在步骤800,提供一个或多个高性能计算系统的集群。每个高性能计算系统可包括一个或多个处理器和一个高性能存储器。另外,集群可通过InfiniBand网络通信。在步骤802,提供在集群上运行的中间件环境。所述中间件环境可包括一个或多个应用服务器实例。在步骤804,提供多个复用器。每个应用服务器实例可包括至少一个复用器。在步骤806,在第一应用服务器实例处的第一复用器接收来自多个线程的信息,以传送给在第二应用服务器实例处的第二复用器。在步骤808,利用多个并行通道,通过Infiniband网络将信息传送
给第二复用器。按照一个实施例,图14中所示的方法还可包括根据来自用户的输入,配置在所述多个并行通道中包括多少个并行通道。另外,传送的信息可包括会话数据。此外,每个复用器可以是New I/O (NIO)复用器。图14中所示的方法还可包括为多个并行通道中的每个并行通道创建RMI存根。服务器集群中的内存中会话复制按照一个实施例,通过利用惰性反串行化方法,系统能够支持服务器集群中的内存中会话复制。中间件机平台或环境可包括应用服务器的一个或多个集群。系统能够从服务故障中恢复过来,使得中间件机平台能够提供高可用性。按照一个实施例,在中间件机平台中利用会话状态来保存重要的用户会话信息。系统可以利用不同的方法跨集群复制与用户服务请求相关的会话状态,比如内存中复制和基于JDBC的持久性。利用内存中复制,系统把会话状态从一个服务器实例拷贝到另一个服务器实例。主应用服务器在客户端首先连接到的服务器上创建主会话状态,在集群中的另一个服务器实例上创建辅助副本。使该副本保持最新,使得如果主应用服务器,例如,托管小服务程序的服务器故障,那么可以使用该副本。在基于JDBC的持久性中,系统利用基于文件或者基于JDBC的持久性,保持会话状态,比如小服务程序或JSP的会话状态。基于JDBC的持久性还用于广域网(WAN)内的会话状态复制。按照一个实施例,系统可以进行串行化步骤,以便为数据传输转换主会话数据。串行化步骤是把复杂数据结构,比如数据的并行排列转换成串行形式的处理。数据的并行排列沿着并行通道每次传送多个比特,而串行形式每次传送一个比特。使会话数据串行化会引入用于复制会话状态的一些开销。所述开销随着串行化对象的大小的增长而增大。例如,如果用户计划在HTTP会话中创建极大的对象,那么需要测试小服务程序的性能,以确保性能是可接受的。按照一个实施例,为了支持会话的内存中复制,会话状态需要是可串行化的。为了使对象被认为是可串行化的,对象中的每个字段需要是可串行化的或者是瞬时的。例如,HTTP会话状态中的所有小服务程序和JSP会话数据需要是可串行化的。如果小服务程序(servlet)或JSP利用可串行化对象和不可串行化对象的组合,那么系统可不复制不可串行化对象的会话状态。按照一个实施例,可以利用系统提供的函数,变更会话状态。例如,特殊的函数HttpSession.setAttribute ()可用于改变实现 j avax.servlet, http.HttpSession 的HTTP小服务程序中的会话对象中的属性。如果用户利用setAttribute设定会话对象中的属性,那么利用内存中复制,在集群中复制该对象及其属性。如果用户利用其它设定方法来改变会话中的对象,那么系统可不复制这些变化。每当对会话中的对象作出改变时,就可调用setAttribute O,以便跨该集群地更新所述对象。同样地,可以利用removeAttribute()从会话对象中除去属性。图15表不按照一个实施例,支持服务器集群中的内存中会话复制的系统的例不。如图15中所示,客户端901能够与服务器集群900交互,服务器集群900包括主应用服务器902和辅助应用服务器903。主应用服务器操作为在步骤921从客户端接收与会话911相关的请求,并保持与该会话相关的会话信息912。主应用服务器还可根据该会话信息响应客户端。此外,辅助应用服务器操作为在步骤922接收并保持来自主应用服务器的串行化的会话信息913。按照一个实施例,在客户端和主应用服务器之间的交互中,在步骤924,可以改变保持在主应用服务器上的会话信息。在运行时,在步骤925,主应用服务器可把这些会话更新904发送给辅助应用服务器。然后,辅助应用服务器操作为根据从主应用服务器接收的会话更新,更新保存的串行化会话信息。按照一个实施例,串行化会话数据可以二进制格式,例如作为字节阵列保存在辅助应用服务器中。系统可以应用不同的逻辑,以便高效地更新二进制的串行化会话数据。在一个实施例中,系统检测辅助应用服务器中的字节阵列中受特定会话更新影响的条目。系统随后能够直接更新字节阵列中受影响的条目,而不需要替换字节阵列中的整个串行化会话数据。这在保存的串行化会话数据尺寸较大时尤其有用。按照一个实施例,当主应用服务器故障时,辅助应用服务器操作为在步骤923根据更新的串行化会话信息,产生反串行化会话信息914。在步骤926,辅助应用服务器或者中间件环境中的另一个应用服务器可利用该反串行化会话信息并响应客户端。按照一个实施例,通过只有当主应用服务器故障时才进行反串行化步骤,系统能够优化内存中会话复制处理。优化防止在主应用服务器活动时的反串行化操作。借助这样的优化,系统能够避免对于每个会话更新,都在主应用服务器中执行串行化步骤,和在辅助应用服务器中执行反串行化步骤,这样做在CPU利用成本和等待时间开销方面代价高,尤其是当存在频繁的会话更新时更是如此。按照一个实施例,用户还可利用复制组控制在哪里放置辅助状态。复制组是要用于保存会话状态副本的集群的服务器的优选列表。用户可把服务器分配给一个复制组,以及一个优选辅助复制组,用于托管在该服务器上创建的主HTTP会话状态的串行化副本。当客户端连接到集群中的一个服务器,并创建主会话状态时,托管主状态的服务器对集群中的其它服务器排序,以便确定哪个服务器应托管辅助状态。服务器排序是利用服务器的位置(它是否和主应用服务器驻留在相同机器上),和其在主应用服务器的优选复制组中的参与状况的组合被分配的。图16图解说明按照一个实施例,支持服务器集群中的内存中会话复制的示例性流程图。如图16中所示,在步骤1001,主应用服务器从客户端接收与会话相关的请求。主应用服务器还保持与会话相关的会话信息,并根据该会话信息响应客户端。随后,在步骤1002,辅助应用服务器可接收并保持来自主应用服务器的串行化会话信息。在步骤1003,辅助应用服务器还可根据从主应用服务器接收的一个或多个会话更新,更新串行化会话信息。最后,在步骤1004,只有当主应用服务器故障时,更新的串行化会话信息才可被反串行化,并且应用服务器可根据该反串行化的会话信息响应客户端。HTTP会话复制为了对集群内的小服务程序和JSP支持自动复制和故障切换,系统可支持两种机制来保留HTTP会话状态:硬件负载均衡器和代理插件。
按照一个实施例,当主应用服务器故障时,负载均衡硬件可简单地把客户端请求重定向到应用服务器集群中的任何可用服务器。集群可从集群中的辅助应用服务器获得客户端的HTTP会话状态的副本。图17表示按照一个实施例,利用负载均衡器,支持服务器集群中的内存中会话复制的系统的例示。如图17中所示,当在步骤1121,web应用的客户端1101利用公开IP地址请求小服务程序时,负载均衡器1110按照它的配置策略,把客户端的连接请求路由给应用服务器集群1100。在步骤1122,系统把请求定向到充当客户端的小服务程序会话状态的主宿主的应用服务器A1102。在步骤1123,系统可利用排序系统来选择要托管与会话相关的串行化会话状态的辅助应用服务器B1103。在步骤1124,客户端可把两个应用服务器实例A和B的位置记录在本地COOkiellll中。如果客户端不允许cookies,那么主应用服务器和辅助应用服务器的记录可被记录在借助URL重写返回给客户端的URL中。当客户端向集群发出另外的请求时,负载均衡器利用客户端侧的cookie中的标识符确保这些请求继续转到应用服务器A,而不是被负载均衡到集群中的另一个服务器。这确保在整个会话生命期,客户端保持与托管主会话对象的服务器相联系。响应连接故障,在步骤1125,负载均衡硬件利用它的配置策略,把请求定向到集群中的可用服务器。在上面的例子中,假定在服务器A故障之后,负载均衡器把客户端的请求路由到应用服务器C1104。当客户端连接到服务器C时,服务器C利用在客户端的cookie中的信息,或者在HTTP请求中的信息(如果使用URL重写的话)连接到服务器B。此外在步骤1126,通过对在服务器B上的串行化会话状态进行反串行化,应用服务器C能够进一步获得会话状态。对客户端来说,故障切换过程保持完全透明。在连接故障之后,反串行化步骤只需要被执行一次。在步骤1127,服务器C变成客户端的主会话状态的新宿主,并且服务器B继续托管串行化的会话状态,接收来自服务器C的会话更新。在客户端的cookie中,或者借助URL重写,再次更新关于主宿主和辅助宿主的该新信息。按照一个实施例,应用服务器代理插件保持托管集群的小服务程序或JSP的应用服务器实例的列表,并利用轮询策略把HTTP请求转发给这些实例。所述插件还提供如果应用服务器实例故障,那么定位客户端的HTTP会话状态的串行化副本所必需的逻辑。图18表示按照一个实施例,利用代理插件支持服务器集群中的内存中会话复制的系统的例示。如图18中所示,当在步骤1221,HTTP客户端1201请求小服务程序时,HTTP服务器1210上的HttpClusterServletl212代理给应用服务器集群1200的请求。HttpClusterServlet保持集群中的所有服务器的列表,和当访问该集群时使用的负载均衡逻辑。在上面的例子中,在步骤1222, HttpClusterServlet可把客户端请求路由给托管在应用服务器A1202上的小服务程序,应用服务器A1202变成托管客户端的小服务程序会话的主应用服务器。为了为小服务程序提供故障切换服务,在步骤1222,主应用服务器把串行化的客户端的小服务程序会话状态传送给集群中的辅助应用服务器。在上面的例子中,应用服务器B1203被选为辅助应用服务器。小服务程序页面可通过HttpClusterServlet被返回给客户端,在步骤S1224,客户端浏览器被指示写入列出小服务程序会话状态的主位置和辅助位置的C00kiel211。如果客户端浏览器不支持cookies,那么应用服务器可改为使用URL重写。当主应用服务器A故障时,HttpClusterServlet可利用客户端的cookie信息来确定托管会话状态的副本的辅助应用服务器的位置。在步骤1225,HttpClusterServlet可自动把客户端的下一个HTTP请求重定向到辅助应用服务器。对客户端来说,故障切换是透明的,在步骤1226,服务器B能够使串行化的会话状态反串行化,并获取会话状态。在故障之后,服务器B变成托管小服务程序会话状态的主应用服务器,可在例如应用服务器C604上创建新的辅助应用服务器。服务器C从而能够托管串行化的会话状态,并在步骤1227,接收来自服务器B的会话更新。在HTTP响应中,代理更新客户端的cookie,以反映新的主应用服务器和辅助应用服务器,以考虑到后续故障切换的可能性。跨集群会话复制按照一个实施例,除了提供跨集群内的服务器的HTTP会话状态复制之外,应用服务器提供跨多个集群复制HTTP会话状态的能力。通过允许集群分散在多个地理区域、电力网和因特网服务提供商之间,这改善了高可用性和容错性。图19表示按照一个实施例,支持跨服务器集群的内存中会话复制的系统的例示。如图19中所示,在支持跨集群复制的网络配置中,全局负载均衡器1302负责在集群1305和1306间均衡HTTP请求。当在步骤1311,请求从客户端1301进入时,全局负载均衡器根据每个集群当前正在处理的请求的数目,确定把该请求发送给哪个集群。随后,在步骤1312或1313,该请求被传送给所选集群的本地负载均衡器1303或1304。当本地负载均衡器从全局负载均衡器收到HTTP请求时,在步骤1314或1315,本地负载均衡器负责在集群内的服务器间均衡HTTP请求。为了把会话数据从一个集群复制到另一个集群,复制通道1310可被配置成把会话状态信息从主集群传送到辅助集群。复制通道可以是专用于在集群之间复制业务的网络通道。当集群内的服务器故障时,本地负载均衡器负责把请求传送给集群内的其它服务器。当整个集群故障时,本地负载均衡器把HTTP请求返回给全局负载均衡器。全局负载均衡器随后把该请求重定向到另一个本地负载均衡器。利用一个或多个常规的通用或专用数字计算机、计算设备、机器或微处理器,包括一个或多个处理器、存储器和/或按照本公开的教导编程的计算机可读存储介质,可便利地实现本发明。对软件领域的技术人员来说,显然根据本公开的教导,有经验的程序员能够容易地准备适当的软件编码。在一些实施例中,本发明包括一种计算机程序产品,所述计算机程序产品是保存有指令的存储介质或计算机可读介质,所述指令可用于对计算机编程,以执行本发明的任意处理。存储介质可包括(但不限于)任意种类的磁盘,包括软盘、光盘、DVD、⑶-ROM、微驱动器和磁光盘,ROM, RAM, EPROM, EEPR0M,DRAM, VRAM,闪速存储器件,磁卡或光卡,纳米系统(包括分子存储器1C),或者适合于保存指令和/或数据的任何种类的介质或器件。出于举例说明的目的,提供了本发明的上述说明。上述说明不是详尽的,也不意图把本发明局限于公开的具体形式。对本领域的技术人员来说,许多修改和变化是显而易见的。选择和说明实施例是为了更好地说明本发明的原理及其实际应用,从而使本领域的其他技术人员能够能够关于具有适合于预期的特定应用的各种修改的各个实施例,理解本发明。本发明的范围由以下的权利要求及其等同物限定。
权利要求
1.一种提供中间件机或类似平台的系统,包括:高性能计算硬件,所述高性能计算硬件包括一个或多个处理器、高性能存储器,及冗余的InfiniBand和以太网联网部件;和在高性能计算硬件上工作的中间件环境,所述中间件环境包括一个或多个应用服务器实例;其中所述系统包括以下各项中的一个或多个:零缓存拷贝、分散/聚集I/O、并行复用 T3连接,和/或惰性反串行化,并且能够被快速提供和按需伸缩。
2.按照权利要求1所述的系统,其中系统还包括:用户空间,所述用户空间包括Java虚拟机(JVM)和一个或多个应用服务器实例;和能被所述JVM和所述一个或多个应用服务器实例访问的多个字节缓冲器;其中所述系统被配置成使得当第一应用服务器实例收到请求时:与该请求相关的数据被保存在与所述JVM相关的堆空间中,所述JVM指定保存所述数据的所述堆空间的部分,所述数据被推送到第一字节缓冲器,在那里所述数据被第一应用服务器实例访问,第一应用服务器利用该数据产生响应,和第一应用服务器发送该响应。
3.按照权利要求1或2所述的系统,其中所述系统还包括:一个或多个高性能计算系统的集群,每个高性能计算系统包括一个或多个处理器,和高性能存储器,其中所述集群通过InfiniBand网络通信;在所述集群上运行的包括一个或多个应用服务器实例的中间件环境;和多个复用器,其中每个应用服务器实例包括至少一个复用器,其中每个复用器操作为:收集来自所述高性能存储器中的多个位置的数据,和成批地传送所述数据。
4.按照权利要求1-3任意之一所述的系统,其中所述系统还包括:一个或多个高性能计算系统的集群,每个高性能计算系统包括一个或多个处理器,和高性能存储器,其中所述集群通过InfiniBand网络通信;在所述集群上运行的包括一个或多个应用服务器实例的中间件环境;和多个复用器,其中每个应用服务器实例包括至少一个复用器,其中每个复用器接收来自多个线程的信息,以利用多个并行通道通过Infiniband网络传送给在不同的应用服务器实例上的一个不同的复用器。
5.按照权利要求1-4任意之一所述的系统,其中系统还包括:主应用服务器,主应用服务器操作为从客户端接收与会话相关的请求,其中主应用服务器保持与该会话相关的会话信息,并根据该会话信息响应所述客 户端;和辅助应用服务器,辅助应用服务器操作为接收并保持来自主应用服务器的串行化会话信息,其中辅助应用服务器操作为根据从主应用服务器接收的一个或多个会话更新来更新串行化的会话信息;其中只有当主应用服务器故障时,辅助应用服务器才操作为根据更新的串行化会话信息产生反串行化会话信息,并且根据反串行化会话信息响应所述客户端。
6.按照权利要求1-5任意之一所述的系统,其中所述系统被部署成提供应用服务器网格、存储区域网和InfiniBand网络的全机架、半机架或四分之一机架或者其它结构。
7.按照权利要求6所述的系统,其中所述全机架、半机架或四分之一机架或者其它结构包括通过InfiniBand网络相互通信的一个或多个计算节点、InfiniBand交换机网关和存储节点或单元。
8.按照权利要求1-7任意之一所述的系统,其中所述中间件环境提供诸如WebLogic服务器、JRockit 或 Hotspot JVM, Oracle Linux 或 Solaris,和 Oracle VM 之类的应用服务器、中间件和其它功能。
9.一种提供中间件机或类似平台的方法,包括以下步骤:提供高性能计算硬件系统,所述高性能计算硬件系统包括一个或多个处理器、高性能存储器,及冗余的InfiniBand和以太网联网部件;和在所述高性能计算硬件系统上提供中间件环境,所述中间件环境包括一个或多个应用服务器实例;其中所述系统包括以下中的一个或多个:零缓存拷贝、分散/聚集I/O、并行复用T3连接和/或惰性反串行化,并且能够被快速提供和按需伸缩。
10.按照权利要求9所述的方法,其中所述系统包括:用户空间,所述用户空间包括Java虚拟机(JVM)和一个或多个应用服务器实例;和能被所述JVM和一个或多个应用服务器实例访问的多个字节缓冲器;其中所述方法还包括当第一应用服务器实例收到请求时:把与该请求相关的数据保存在与所述JVM相关的堆空间中,所述JVM指定保存数据的所述堆空间的部分,把所述数据推送到第一字节缓冲器,在那里所述数据被第一应用服务器实例访问,第一应用服务器利用该数据产生响应,和第一应用服务器发送该响应。
11.按照权利要求9或10所述的方法,其中所述系统包括:一个或多个高性能计算系统的集群,每个高性能计算系统包括一个或多个处理器,和高性能存储器,其中所述集群通过InfiniBand网络通信;在所述集群上运行的包括一个或多个应用服务器实例的中间件环境;和多个复用器,其中每个应用服务器实例包括至少一个复用器,其中每个复用器操作为:收集来自所述高性能存储器中的多个位置的数据,和成批地传送所述数据。
12.按照权利要求9-11任意之一所述的方法,其中所述系统包括:一个或多个高性能计算系统的集群,每个高性能计算系统包括一个或多个处理器,和高性能存储器,其中所述集群通过InfiniBand网络通信;在所述集群上运行的包括一个或多个应用服务器实例的中间件环境;和多个复用器,其中每个应用服务器实例包括至少一个复用器,其中每个复用器接收来自多个线程的信息,以利用多个并行通道通过Infiniband网络传送给在不同的应用服务器实例上的一个不同的复用器。
13.按照权利要求9-12任意之一所述的方法,其中所述方法还包括:操作主应用服务器,以从客户端接收与会话相关的请求,其中主应用服务器保持与该会话相关的会话信息,并根据该会话信息响应所述客户端;和操作辅助应用服务器,以接收并保持来自主应用服务器的串行化会话信息,其中辅助应用服务器根据从主应用服务器接收的一个或多个会话更新,更新串行化的会话信息;其中只有当主应用服务器故障时,辅助应用服务器才根据更新的串行化会话信息产生反串行化会话信息,并且根据反串行化信息响应所述客户端。
14.按照权利要求9-13任意之一所述的方法,其中所述系统被部署成提供应用服务器网格、存储区域网和InfiniBand网络的全机架、半机架或四分之一机架或者其它结构。
15.按照权利要求14所述的方法,其中所述全机架、半机架或四分之一机架或者其它结构包括通过InfiniBand网络相互通信的一个或多个计算节点,InfiniBand交换机网关和存储节点或单元。
16.按照权利要求9-15任意之一所述的方法,其中中间件环境提供诸如WebLogic服务器、JRockit 或 Hotspot JVM> Oracle Linux 或 Solaris,和 Oracle VM 之类的应用服务器、 中间件和其它功能。
17.一种包含程序可读指令的计算机程序,当被载入一个或多个计算机系统中,并由所述一个或多个计算机系统执行时,所述程序可读指令使所述一个或多个计算机系统执行按照权利要求9-16任意之一所述的方法。
18.—种包含计算机可读存储介质的计算机程序产品,所述计算机可读存储介质保存按照权利要求17所述的计算机程序。
19.一种包括保存于其上的指令的非临时性计算机可读存储介质,当由计算机执行时, 所述指令使计算机执行若干步骤,所述若干步骤包括:提供高性能计算硬件系统,所述高性能计算硬件系统包括一个或多个处理器、高性能存储器,及冗余的InfiniBand和以太网联网部件;和在高性能计算硬件系统上提供中间件环境,所述中间件环境包括一个或多个应用服务器实例;其中所述系统包括以下中的一个或多个:零缓存拷贝、分散/聚集I/O、并行复用T3连接和/或惰性反串行化,并且能够被快速提供和按需伸缩。
20.一种使计算机执行以下步骤的计算机程序:提供高性能计算硬件系统,所述高性能计算硬件系统包括一个或多个处理器、高性能存储器,及冗余的InfiniBand和以太网联网部件;和在高性能计算硬件系统上提 供中间件环境,所述中间件环境包括一个或多个应用服务器实例;其中所述系统包括以下中的一个或多个:零缓存拷贝、分散/聚集I/O、并行复用T3连接和/或惰性反串行化,并且能够被快速提供和按需伸缩。
全文摘要
一种提供中间件机或者类似平台的系统和方法。按照一个实施例,所述系统(这里在一些实现中,称为“Exalogic”)包含高性能硬件,以及应用服务器或中间件环境的组合,以提供完备的Java EE应用服务器复合体,所述应用服务器复合体包括大规模并行的内存中网格,能够被快速提供,并且能够按需伸缩。按照一个实施例,系统可被部署成提供支持应用服务器、中间件或其它功能,比如WebLogic服务器、JRockit JVM、Oracle Linux,和Oracle VM的运行的应用服务器网格、存储区域网和InfiniBand网络的全、半或四分之一机架或者其它结构。系统的其它特征可包括例如零缓存拷贝、分散/聚集I/O、T3连接和惰性反串行化。
文档编号G06F17/30GK103140851SQ201180039804
公开日2013年6月5日 申请日期2011年9月15日 优先权日2010年9月15日
发明者N·雷瓦那鲁, B·毕哈尼, S·拉森, S·刘, L·潘, S·瓦克斯, P·托斯滕森, A·弥辛格尔, N·雷诺尔德斯, O·奥藤考, J·多尔, B·卡梅伦, O·托卢德巴肯, P·巴塔查尔雅 申请人:甲骨文国际公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1