通过LRWP加速Java技术

简介

多线程应用程序可以满足当前不断增长的业务需求,同时还可以减少所需系统 的数量。但是多线程应用程序的可伸缩性却受不到了不可并发执行的代码的限制 ;这些串行组件对可伸缩性造成了限制,请参见 阿达姆定律 和 I/O 问题。我们 的上一篇文章 Horizontal Scaling on a Vertical System Using Solaris Zones 介绍了如何使用分区(Zone)扩展 Xitami/NexSRS,即在每个分区中都运 行一个副本。在每个分区中都运行一个副本可将性能提升一倍,但是这仍然不是 Xitami 可伸缩问题的解决方案。一些解决方案要么将 Long Running Web Process (LRWP) 协议迁移到 Sun Web Server,要么让 NexSRS 使用 Netscape Server API (NSAPI)。我们决定采用完全不同的方式:在 Java 中实现 LRWP 协 议并在 Web 容器中运行。GlassFish 是现行可用的开放源码项目,因此我们选择 使用 GlassFish 来实现我们的想法。我们期望这种方式在小型系统上的性能能够 接近 Xitami/NexSRS 性能,并且可以很好地扩展到较大的系统中。

实现要快于 Xitami/NexSRS —— Xitami 是使用 C 语言编写的一款非常小的 Web 服务器,而且名列十佳 Web 服务器之一。我们的实现可以更好地扩展到较大 的 CMT 系统中,但是使用 Java 实现 LRWP 在单核系统中具有 23% 的性能优势 ,而在 4 核系统中具有 78% 的性能优势,这显示了其从单核系统到多核系统的 可伸缩性,而 Xitami 实现扩展到 4 核系统上只能达到约 15K CPM。如图 1 所 示。

图 1:Xitami/C 与 GlassFish/Java 的可伸缩性比较

Long Running Web Process (LRWP)

Xitami Web 服务器使用 LRWP 协议与其对等体(peer)进行通信。对等体是 与 Web 客户机通信的进程。Web 客户机可以是浏览器或其他类型的使用 HTTP 通 信的客户机。LRWP 类似于这样一种 CGI:Web 客户机请求调用 cgi-bin/context ,cgi-bin/context 允许 Web 容器调用 cgi-bin 可执行程序,并将来自 Web 客 户机的输入传递给可执行程序,再将输出返回给 Web 客户机。在 LRWP 中,LRWP 对等体与 LRWP 代理之间将建立一个 TCP 连接。LRWP 代理可以是 Web 容器或运 行在 Web 容器中的进程,LRWP 对等体可以是运行于网络中的任何进程。连接时 ,LRWP 对等体将注册感兴趣的 Web 上下文。Web 上下文可以是任何上下文,比 如说 /osp 、/tep 或 /cgi-bin 本身。当针对该上下文发起请求时,代理会将输 入传递给 LRWP 对等体,并将对等体返回的输出发送给 Web 客户机。LRWP 代理 还可以同时支持多个对等体。对等体可以是一个进程中的多个不同线程,也可以 多个进程。各个对等体将建立连接并注册感的上下文。

使用 Java 实现 LRWP

要使用 Java 实现此协议,我们需要一个 Web 容器来处理 HTTP。由于 ISV 比较喜欢开放源码的 Web 容器,因此我们选择使用 GlassFish。GlassFish 是一 款 Java Platform Enterprise Edition (Java EE) 应用服务器,它构建于 Apache Tomcat Web 容器之上。它使用 servlets 监听 HTTP 请求,并将请求传 递给在容器中运行的 LRWP 代理。然后,LRWP 代理将请求传递给正确的 LRWP对 等体,并将应答返回给 servlet。LRWP 代理服务器将注册对等体感兴趣的上下文 并等待对这些上下文的请求。如果有请求匹配某个上下文,则 servlet 线程将进 入上下文锁定休眠状态,然后代理会将该请求传递给 LRWP 对等体,并等待对等 体的应答,然后唤醒 servlet 线程并将应答传递给它。最后,servlet 线程将应 答返回给 Web 客户机。

使用 Java 实现 LRWP

我们已经实现了 LRWP 代理,即通过一个 Web 应用程序监听 "/*" 上下文, 这样所有请求都将传入这个应用程序。如果请求的对象是 LRWP 对等体注册的某 个上下文,则将请求传递给 LRWP 对等体进行下一步处理;如果请求的对象是未 通过 LRWP 代理注册的上下文,则将该请求发送给默认 servlet 使用 ServletContext RequestDispatcher 对象进行下一步处理。希望提供 LRWP 服务 的 Service Provider(LRWP 对等体应用程序)必须通过 LRWP 代理使用 LRWP 协议注册自己。经过初始信息交换之后(依照 LRWP 协议),LRWP 代理和对等体 之间将通过 LRWP RequestHandler 建立起连接。每个对等体应用程序将创建一个 LRWP RequestHandler 实例。对等体应用程序将注册一个相关的 URL 上下文,对 该上下文的请求都将转发给对等体应用程序。LRWP 对等体可以与 LRWP 代理建立 多个连接,从而通过注册相同的上下文实现负载均衡。LRWP 对等体应用程序还可 以注册多个 URL 上下文。

时间: 2024-10-31 05:13:46

通过LRWP加速Java技术的相关文章

甲骨文和IBM将共同开发Java技术

北京时间10月12日早间消息,据国外媒体报道,IBM周一宣布,将把与Java开发有关的工作从Apache Harmony项目转向OpenJDK,这一举措将确保Java未来的发展. 在甲骨文今年初收购Sun之后,许多开发者对Java未来的发展感到担忧.今年8月,甲骨文起诉谷歌,称谷歌在Android系统中非法使用Java的理念和代码.因此外界普遍认为,甲骨文将对与Java有关的知识产权采取严厉的做法. 不过,IBM周一的声明为Java的发展提供了保障.IBM新兴技术副总裁罗德·史密斯(Rod Sm

Java技术,IBM风格: 监视和判断问题

随着时间的推移,IBM 为它的 Java 运行时实现开发了许多监视和问题诊断设施.利用这些工具,IBM 支持团队.Java 应用程序开发人员和生产操作人员可以诊断和解决在 Java 开发中遇到的问题. 本文讨论三种主要的设施,因为它们是在 Java 技术的 IBM 实现的最新版本中实现的:跟踪引擎.转储引擎和 DTFJ 工具 API.它们都有助于 Java 开发人员判断问题的根源. 跟踪引擎 在判断软件的问题时,跟踪信息是一种强大的工具:可以使用它有效地研究问题场景(比如功能性错误.竞争状态和性

使用java技术在IE浏览器中打开WORD、EXCEL、PDF和TXT文件

问题描述 使用java技术在IE浏览器中打开WORD.EXCEL.PDF和TXT文件 #使用java技术在IE浏览器中打开WORD.EXCEL.PDF和TXT文件 解决方案 http://www.cnblogs.com/zhwl/p/3757069.htmlhttp://wenku.baidu.com/link?url=SfOc2hl0hB-xo9PhjQfXPLemBgg1aj1fV54AW39sk0cJ8_AgCc1_6hb6Lx5aQCF44ILHhn23dyenpOEiBcqJ3Qo1r

XML 和 Java 技术: 数据绑定的多种用法

xml|数据 除将 XML 用作一种简单数据格式之外,数据绑定是 XML 最流行的用法之一.即使刚刚入门的程序员也能在一种原生编程语言中使用 XML,并且在大多数情况下完全不需要任何的 XML 专门知识.本文并不是介绍解决方案,取而代之,Brett 介绍了一些讨论主题,鼓励您思考如何使用 XML 和数据绑定.欢迎在 XML 和 Java 技术讨论论坛上与别人一起分享您的想法. XML 用于业务而非技术 随着 XML 的日趋盛行,人们也越来越注重可用性.换句话说,程序员和管理者并不希望把 XML

2005年Java技术年度综述:融合与开放

2005年是Java10诞生10年,全世界的Java程序员通过不同的方式为Java庆祝生日,10年前还很幼稚的小东西,今天已经成为软件业的一个重要体系.在10年的发展历程中Java阵营诞生了许多杰出的思想,这些思想演化成众多的开发架构和开发工具,也因此导致Java技术派系众多,让架构师难于选择,应用系统复杂而且昂贵.为了这解决这个问题,Java专家们们提出一系列的新的技术规范,这些技术的目的就是使Java更简单,不仅仅是Java语言,还包括开发工具和框架.融合与开放成为2005年Java发展的主

整合PDF和Java技术

摘要 自从Adobe公司1993年第一次发布公共PDF参考以来,支持各种语言和平台的PDF工具和类库就如雨后春笋般涌现.然而,Java应用开发中Adobe技术的支持相对滞后了. 自从Adobe公司1993年第一次发布公共PDF参考以来,支持各种语言和平台的PDF工具和类库就如雨后春笋般涌现.然而,Java应用开发中Adobe技术的支持相对滞后了.这是个奇怪的现象,因为PDF文档是企业信息系统存储和交换信息的大势所趋,而Java技术特别适合这种应用.然而,Java开发人员似乎直到最近才获得成熟可用

新Java技术工具亮相游戏开发商大会

我觉得这条消息比较重要,也很有用,转到这 近日,在旧金山举行的2005年游戏开发商大会(Game Developers Conference)上,Sun Microsystems公司展示了新的具有高性能的产品,为游戏开发商提供了更具扩展性的新技术,可使他们创建更多的内容丰富的新游戏.除了Sun Game Server 原型机和Sun Grid技术的继续进步之外,开发商们还能从跨平台的Java技术.具有突 破性的Solaris 10操作系统.创造了世界性能记录的Sun的x64服务器和工作站,以及S

新一代Java技术即将出现

[日经BP社报道] Java技术自问世时光已经过去了9个年头.作为一名一直关注其成长的记者,曾经一段时间有过这样的想法:"Java技术已经成熟,是不是发展速度该放慢一些了呢".然而,这种想法错了.近来Java技术的进化相当显著.Java技术正在迎来"又一次革命"的风暴.这就是本文的结论. "又一次"指的是什么?"革命"指的又是什么?光看结论的话肯定是一头雾水.其实,笔者要讲的并不是变化这样一个事实,而是"促进变化的原

企业Java技术开发技巧2则

技巧 欢迎阅读本期的 Enterprise Java Technologies Tech Tips.下面你将获得使用企业 Java 技术和 API 的技巧,如 Java 2 Platform 和 Enterprise Edition (J2EE) 中的 Java 技术和技巧. 本文讨论: 自定义标记文件 和 JSP Pages 一同使用 Enterprise Beans 这些技巧是使用 Java 2, Enterprise Edition, v 1.4 SDK 开发的.您可以下载 SDK,网址为