快速业务通道

Java EE:迎合Web 2.0 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20
人员直接使用它。

使用并发性工具编写的应用程序则很少发生由于多线程处理引发的故障,因为 Java 5 的并发性工具提供了更高级的操作。然而,很容易发生死锁并且难于调试和查找错误根源

为了在 Java 平台上以通用的方式支持异步交互,人们作出了很多尝试。所有这些尝试都基于一个消息传递通信模型。大部分使用了 actor 模型的一个变体来定义对象。此外,这些框架在可用性、可用库和方法方面各有不同。

阶段式事件驱动架构

阶段式事件驱动架构(SEDA)是一种有趣的框架,它将异步编程和自主计算的原理结合在一起。SEDA 是 J2SE 1.4 对 Java NIO API 引入的最大一项补充。该项目本身已经被中断,但是 SEDA 为 Java 应用程序的可伸缩性和适应性设定了新的基准,并且其有关异步 API 的思想对其他项目也产生了影响。

SEDA 试图将异步和同步 API 设计结合起来,产生有趣的结果。这个框架具有比 ad-hoc 并发性 更加良好的可用性,但它还无法达到用户认可的程度。

使用 SEDA,应用程序被划分为若干个阶段。每个阶段表示的组件包含一定数量的线程。请求被分配到一个阶段然后进行处理。阶段可以通过以下几种方式管理自身的容量:

根据负载增加和减少使用线程的数量。这允许服务器动态适应组件的实际使用情况。如果某个组件的使用急剧上升,则会分配更多线程。如果为空闲状态,则减少线程的数量。

根据负载更改行为。例如,可以根据负载生成更加简单的页面。避免对页面使用图像,使用更少的脚本,禁用不必要的功能等等。用户仍然可以使用应用程序,但是生成的请求和通信量将变少。

对试图纳入请求或拒绝接受请求的阶段进行阻塞。

前两种方法非常不错,采用了智能应用程序实现自主计算的思想。然而,第三种方法揭示了为什么该框架至今无法得到广泛应用的原因。除非在设计应用程序时加倍小心,否则这样做会因为增加了死锁风险而引入一个故障点。下面介绍了致使该框架难于使用的其他一些原因:

阶段是一种非常粗粒度的组件。比如网络接口和 HTTP 支持。在将网络层作为整体处理时,很难解决诸如某些客户机带宽有限这样的问题。

无法使用简单的方法返回异步调用的结果。结果只是被分配给阶段,寄希望于阶段能自己找到相关的操作状态。

目前,大多数可用的 Java 库都是同步的。框架并没有尝试以一种一致的方式将同步代码从异步代码中分离开来,从而使编写出的代码很容易意外阻塞整个阶段。

贯彻 SEDA 项目思想的实现中部署最多的可能是 Apache MINA 框架。它用于 OSFlash.org Red5 流服务器的实现、Apache Directory Project 和 Jive Software Openfire XMPP Server。

Java EE:迎合Web 2.0(8)

时间:2011-01-26 IBM Constantine Plotniko

E 编程语言

严格来讲,E 编程语言是一种动态输入的函数性编程语言,而非一种框架。它强调提供安全的分布式计算,它还为异步编程提供了一些有趣的概念。在异步编程方面,该语言仿效了其前辈 Joule 和 Concurrent Prolog,但是其并发性支持和整体语法更加自然,而且对于拥有主流编程语言(例如 Java 语言、JavaScript 和 C#)背景的编程人员来说也十分友好。

该语言目前通过 Java 和 Common-Lisp 实现。可以通过 Java 应用程序使用。但是,要将其应用于高负荷的服务器端应用程序,仍然存在着一些障碍。大多数问题源于其早期开发,但将来很可能会得到解决。其他一些问题则是由该语言的动态特性引起的,但是这些问题大部分与该语言提供的并发性扩展并无关系。

E 提供了以下核心语言概念来支持异步编程:

vat 表示对象的容器。所有对象都保存在一些 vat 的上下文中,并且不能从其他 vat 同步访问这些对象。

promise 变量用来表示某些异步操作的结果。它的初始状态为未解决状态,表示该操作还未结束。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号