BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

从高层次并发角度比较AkkaActor和JavaEJB

| 作者 Jan Stenberg 关注 29 他的粉丝 ,译者 王振峰 关注 0 他的粉丝 发布于 2014年3月6日. 估计阅读时间: 3 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

从架构原理和编码风格方面比较Akka Actor和Java EE 7 EJB,尤其是无状态会话Bean和JMS消息驱动Bean,既有共同点,如三种类型都支持垂直和水平扩展。又有不同点,例如对异常和事务的处理方面。这是Gerald Loeffler博士在最近的一次介绍性讲座中,从高层次并发角度解释和比较这三种方式后作出的总结。

Gerald是一名高级集成架构师,在此次讲座中,他将高层次并发定义为一种编程范式,在组件级别处理并发,并且要尽可能地向上抽象,使其与处理单个线程或任务以及向线程池提交等具体操作解除耦合。

他围绕着Active Object设计模式思想展开演讲,该模式与传统设计模式相对独立,但是思想是相同的。演讲中的案例使用Scala语言,但是他认为所讲内容Java也适用。

对于Gerald来说,从Active Object角度,有一个简单的心智模型:

  • Akka Actor接收任意对象形式的消息,并以队列形式存储在邮箱中。通过统一的接口分别管理和定位这些消息。
  • 无状态会话Bean暴露在应用服务器中执行的异步方法,由容器控制其生命周期。
  • JMS消息驱动Bean从JMS队列/主题中接收和处理预定义类型的消息。和会话Bean类似,该类型的Bean也由容器管理。

这三种类型的相同点是由线程异步执行,线程一般从线程池中获取,对同一个实例顺序访问。

Gerald使用以下三种模式对这三种类型进行了比较,并配有相应的代码案例:

  • 本地单向异步请求,请求者向响应者发送异步请求,而响应者不会响应请求。
  • 请求异步上下文外请求,请求者向响应者发送消息,响应者响应请求并返回消息,请求者接收到消息后需要重建上下文。
  • 请求异步上下文内请求,当接收返回消息时,请求者通过某种方式已经保存了上下文。

最后,Gerald简短地总结了这三种类型的相同点,如三种类型都使用线程池,支持垂直和水平扩展,以及不同点,如异常处理,监督策略和事务处理。

Akka是一款开源工具包和运行环境,用于在JVM中构建并发和事件驱动型应用。 企业Java Bean,即EJB,是Java EE标准的一部分,目前版本是Java EE 7

查看英文原文:Akka Actors vs. Java EJBs from a High-Level Concurrency Perspective


感谢邵思华对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT