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

从架构原理和编码风格方面比较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中文站投稿或者参与内容翻译工作,请邮件至[email protected]。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

你可能感兴趣的:(从高层次并发角度比较AkkaActor和JavaEJB)