用于在中间件机器环境中支持协同并发性的系统和方法

文档序号:8476695阅读:304来源:国知局
用于在中间件机器环境中支持协同并发性的系统和方法
【专利说明】用于在中间件机器环境中支持协同并发性的系统和方法
[0001]版权声明
[0002]本专利文档公开内容的一部分包含受版权保护的素材。版权拥有者不反对任何人对专利文档或专利公开内容按照其在专利商标局的专利文件或记录中出现的那样进行影印再现,但是除此之外在任何情况下都保留所有版权。
技术领域
[0003]本发明一般而言涉及诸如中间件的计算机系统和软件,并且具体而言,涉及用于支持中间件机器环境中的队列的系统和方法。
【背景技术】
[0004]在任何大型机构中,经过多年之后,该机构通常发现自己具有包括各种不同的计算机硬件、操作系统和应用软件的杂乱的IT基础设施。尽管这种基础设施中每个单独的组件可能自身是精心设计并良好维护的,但是当试图互连这些组件或共享公共资源时,其通常是艰难的管理任务。近年来,机构已经将其注意力转向能够提供共享的基础设施的基础的诸如虚拟化和集中式存储的技术,并且甚至最近转向云计算。但是,几乎不存在特别适合于在这种环境中使用的一体化平台。这些是本发明的实施例想要解决的一般领域。

【发明内容】

[0005]提供了用于支持优先级队列中的协同并发性的系统和方法。其中包括日历环和快道的优先级队列能够检测竞争申明优先级队列中的一个或多个请求的一个或多个线程。然后,牺牲者线程能够将请求放置在优先级队列中的快道中,并且释放竞争线程,其中竞争线程继续消费快道中的请求。
[0006]根据对各种实施例的以下详细描述,当结合附图阅读时,对本领域技术人员而言本发明的其它目的和优点将变得明显。
【附图说明】
[0007]图1根据本发明的实施例示出了中间件机器环境100的说明。
[0008]图2根据本发明的实施例示出了中间件机器平台或环境的另一个图示。
[0009]图3根据本发明的各种实施例示出了利用优先级队列处理中间件机器环境中的请求的图示。
[0010]图4示出了在中间件机器环境中支持非阻塞队列的图示。
[0011]图5根据本发明的各种实施例示出了支持并发优先级队列的图示。
[0012]图6根据本发明的各种实施例示出了将请求添加到并发优先级队列中的图示。
[0013]图7根据本发明的各种实施例示出了从并发优先级队列中申明请求的图示。
[0014]图8根据本发明的各种实施例示出了支持优先级队列中的协同并发性的图示。
[0015]图9根据本发明的实施例图示了用于从优先级队列中申明请求的示例性流程图。
[0016]图10根据本发明的实施例图示了用于支持优先级队列中的协同并发性的示例性流程图。
【具体实施方式】
[0017]本文描述的是能够支持中间件机器环境中的协同并发性的系统和方法。
[0018]图1根据本发明的实施例示出了中间件机器环境100的图示。如在图1中示出的,每个中间件机器系统102包括若干个中间件机器机架组件104,其中每个组件包括高性能中间件机器硬件节点106(例如,64-位处理器、高性能大存储器以及冗余InfiniBand和以太网联网)和中间件机器软件环境108的组合。结果是能够按分钟而不是按天或月提供并且能够按需缩放的完整的应用服务器环境。根据实施例,每个中间件机器系统能够被部署为全部、一半、四分之一的机架或机架组件的其它配置,并且若干个中间件机器系统能够再次利用InfiniBand耦合到一起,以创建更大的环境。每个中间件机器软件环境能够具有若干个应用服务器或其它软件实例。例如,如在图1中示出的,应用服务器实例109可以包括虚拟机116、操作系统120、虚拟化层124和应用服务器层128 (例如包括小服务程序132、EJB134和Gridlink 136容器的WebLogic)。另一个应用服务器实例110可以包括虚拟机118、操作系统122、虚拟化层126和数据网格层140 (例如包括活动高速缓存142的Coherence)。每个实例都能够利用中间件机器集成组件150彼此间以及与其中间件机器硬件节点和其它节点两者进行通信,其中中间件机器集成组件150诸如ExaLogic集成包,该中间件机器集成组件150自身提供了若干种优化特征,诸如支持InfiniBand以及其它特征,如以下进一步详细描述的。
[0019]图2根据本发明的实施例示出了中间件机器平台或环境的另一个图示。如在图2中示出的,每个应用服务器实例可以在中间件机器环境中充当发送者160和/或接收者161。每个应用服务器实例还与多路复用器162、163相关联,其中多路复用器允许应用服务器经InfiniBand网络164彼此通信。在图2示出的例子中,应用服务器实例能够包括内核空间165、用户空间167以及应用服务器(例如,WebLogic空间)166,其又能够与套接字直接协议168、JVM(例如JRockit/Hotspot层)170、WLS内核172、小服务程序容器174和JSP编译器176相关联。根据其它的例子,能够包括中间件类型软件的其它组合。根据各种实施例,机器集成组件能够提供诸如零缓冲区拷贝(Zero Buffer Copies)、分散/收集I/O (Scatter/Gather 1/0)、T3 连接、惰性反序列化(Lazy Deserializat1n)和 GridLink 数据源的特征180,以便为共享的基础设施提供基础,并提高其中的性能。
[0020]优先级队列
[0021]根据本发明的各种实施例,并发系统能够使用优先级队列来对传入的请求划分优先级,以便提供具有适当服务水平协议(SLA)的服务。
[0022]图3根据本发明的各种实施例示出了利用优先级队列处理中间件机器环境中的请求的图示。如在图3中示出的,一个或多个线程,例如反序列化线程A-B 311-312,能够反序列化包含一个或多个请求320的传入网络流量310。反序列化线程A-B 311-312能够例如利用add()方法将请求320放置在优先级队列301中。然后,多个工作者线程,例如工作者线程A-C 321-323,能够并发地访问优先级队列301并且能够例如利用delete_min()方法申明请求320。
[0023]优先级队列301能够被设计为满足苛刻的并发性标准,使得竞争者之间的交互不会引起系统吞吐量整体上的退化。此外,优先级队列301可以实现为具有固定的存储器占用空间(footprint),使得JVM能够更好地在原语的固定大小的数组上优化其操作,并且能够实现相当高的高速缓存效率。
[0024]根据本发明的各种实施例,优先级队列301能够基于日历队列实现,例如在WebLogic应用服务器中提供的日历队列。日历队列能够包括具有多个桶的日历,其中每个桶可以存储落在特定时间片内的事件。例如,能够通过将目标服务时间与当前时间进行比较来排序和布置多个桶。如果时间中的差异在第一个字节,则请求可以被存储在第一个256个桶的桶中。能够利用执行该请求的目标时间的实际值选择具体的桶。此外,如果时间中的差异在第二个字节,则请求可以存储在第二个256个桶的桶中。
[0025]当消费者,例如通过工作者线程A-C 321-323的其中之一,试图去除被配置为要最早被执行的下一个请求时,系统能够为非空的第一个桶扫描日历。如果这个桶不是第一个256个桶之一,则日历队列能够使用循环和提升方法将请求移动到朝第一个256个桶的方向的“下一级”的桶中。最终,一些请求能够被提升到第一个256个桶中的一个或多个桶中,并且消费者能够申明请求并相应地继续进行。
[0026]上面的提升过程会涉及对数成本,这可能对系统的整体性能产生影响。此外,可以存在日历队列的其它设计,其性能可以限定于在“O (I) add,O(1gN) delete_min”和“O(1gN) add,0(1) delete_min” 之间的选择。
[0027]图4示出了在中间件机器环境中支持非阻塞队列的图示。如在图4中示出的,多个消费者,例如消费者A-B 411-412,能够并发地访问中间件机器环境400中的优先级队列401。优先级队列401能够被实现为非阻塞队列,并且能够经请求管理器402进行访问。
[0028]管理线程池403的请求管理器402能够具有用于将不同线程与不同请求相关联
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1