初试超轻量级actor框架——akka

简介:

  akka的大名在之前学Scala的时候就时常听到,就连Scala作者都不得不赞叹它对actor实现的精妙。最近写一个服务端代码,对于接受到的请求需要查询后台多个数据库,这自然就想到用多线程来并行查询,然后把结果合并起来。这里最主要的就是多线程任务的执行以及执行结果的回调。这个时候突然回忆起用Scala时一个简单的“!”就实现了多线程调用的清爽和方便,那现在用java+akka框架是什么样呢?

  先找到官方网站大概的翻阅了一下,惊讶的发现这个框架比想象中强太多了。一下载下来就看到很多高质量库,httpclient, netty, jetty, asm等等,这都不知道他具体想做成什么了。在官方看到一处说明,akka有两种使用方式,一种就是作为一个模块调用,另外一种就是作为一个服务。

  看完文档后,感觉akka确实非常出色!实现了actor模式这点就不说了,首先就是有非常好的容错性,其次它居然还有对内存对象实现事务的功能,还有他能非常方便的实现远程调用以及线程间通讯,还能定制路由策略,对第三方框架的集成也非常好。基于上述的功能,akka完全有实力作为系统的核心框架,通过它简单的多线程调用方式和支持远程调用,实现一个分布式计算的系统非常容易。

  最后还是给个小例子,代码很简单,只是用到的库非常多,放的位置也比较分散,自己慢慢找吧。

  这个是TypedActor的接口:

 
  1. import akka.dispatch.Future;  
  2.  
  3. public interface MathTypedActor {  
  4.     public Future<Integer> square(int value);  

 

  这个是TypedActor的具体实现:

 
  1. import akka.actor.TypedActor;  
  2. import akka.dispatch.Future;  
  3.  
  4. public class MathTypedActorImpl extends TypedActor implements MathTypedActor {  
  5.  
  6.     @Override 
  7.     public Future<Integer> square(int value) {  
  8.         return future(value * value);  
  9.     }  
  10.  

  这是调用的main方法:

 
  1. import akka.actor.TypedActor;  
  2. import akka.dispatch.Future;  
  3.  
  4. public class MathTypedActorTest {  
  5.  
  6.     public static void main(String[] args) {  
  7.         test();  
  8.     }  
  9.  
  10.     private static void test() {  
  11.         MathTypedActor math = TypedActor.newInstance(MathTypedActor.class, MathTypedActorImpl.class);  
  12.         Future<Integer> future = math.square(10);  
  13.         future.await();  
  14.         Integer result = future.result().get();  
  15.         System.out.println(result);  
  16.         TypedActor.stop(math);        
  17.     }  
  18.  

 


本文转自passover 51CTO博客,原文链接:http://blog.51cto.com/passover/517931,如需转载请自行联系原作者

相关文章
|
消息中间件 前端开发 Java
Actor 模型工作机制和消息机制 | 学习笔记
快速学习 Actor 模型工作机制和消息机制
Actor 模型工作机制和消息机制 | 学习笔记
|
消息中间件 前端开发 Java
AKKA 的 Actor 模式介绍 | 学习笔记
快速学习 AKKA 的 Actor 模式介绍
AKKA 的 Actor 模式介绍 | 学习笔记
|
Java 设计模式 安全
akka设计模式系列(Actor模型)
  谈到Akka就必须介绍Actor并发模型,而谈到Actor就必须看一篇叫做《A Universal Modular Actor Formalism for Artificial Intelligence 》的论文,它最早发表于1973年,提出了一种并发计算的理论模型,Actor就源于该模型。
8291 0
|
Java 存储 测试技术
|
设计模式 前端开发 Java
Akka并发编程——第七节:Actor模型(六)
主要内容: 1. Typed Actor定义 2. Typed Actor创建 3. 消息发送 1. Typed Actor定义 Akka中的Typed Actor是Active Objects设计模式的实现,Active Objects模式将方法的执行和方法的调用进行解耦合,从而为程序引入并发性。Typed Actor由公用的接口和对应实现两部分构成,其后面深层次
3246 0
|
前端开发
Akka并发编程——第八节:Actor模型(七)
本节主要内容 停止运行Typed Actor 当Typed Actor不再需要时要将其停止,有3种方法停止Typed Actor的运行: (1)通过system.shutdown()停止ActorSystem中所有的Typed Actor; (2)调用TypedActor(system).stop(mySquarer)停止指定的Typed Actor;
4336 0
[翻译]AKKA笔记 - ACTOR生命周期 - 基本 -5
原文地址:http://rerun.me/2014/10/21/akka-notes-actor-lifecycle-basic/ (请注意这了讨论的生命周期并不包括 preRestart 或者postRestart方法,当我们讨论supervision时候我们会说这个) 基本的Actor生命周期很直观。
1226 0