http://blog.csdn.net/wsscy2004/article/category/2430395
Actor生命周期理解 镇图:Actor内功心法图 Actor的生命周期可以用Hooks体现和控制,下面是默认的Actor Hooks的方法,我们可以选择性的进行重写: def preStart(): Unit = () def postStop(): Unit = () def preRestart(reason: Throwable, message: Option[Any]...
Akka相关概念理解 Actor适用 Actors可以替代: 一个线程一个对象或者组件一个callback或者listener一个单例或者服务一个路由转发者,负载均衡器,池一个Java EE的session bean或者事件驱动bean 创建很多的Actors: Actors不像线程一样重,可以把它们当做轻量级的对象来看 为每个请求创建一个actor?没问题为处理一...
Akka学习笔记(七):配置 使用Akka可以不用任何配置,Akka提供了明智的默认配置。为了适应特别的运行环境,修改默认行为,你可能需要修改: log level and logger backendenable remoting消息系列化路由设置调度器调优 Akka使用Typesafe Config Library,纯java实现的配置库。之前博客有介绍过here 从哪...
Akka学习笔记(六):消息传递可靠性 一般规则 关于消息发送,有两条基本规则: 最多一次,即不保证消息传递可靠性message ordering per sender–receiver pair 消息传递机制 最多一次,意味消息有可能丢失最少一次,保证消息传递可靠,但可能冗余保证只成功一次,性能最差,消息成功传递,不冗余 为什么不保证传递可靠性 问题是,...
Akka TestKit测试包的使用 TestKit,测试类必须继承几个接口: class SendingActor01Test extends TestKit(ActorSystem("testsystem")) //TestKit创建testsystem用于测试 with WordSpecLike //可以用must,in等语句描述测试方法 with MustMatchers ...
- actor要如何分解才合适,在一个JVM上随意为每个功能启动多个actor?那远程actor一般作为其中的一个功能还是服务? - actor和线程的关系 actor数和线程数不是一一对应的。2.7 million actors占1GB内存. 而1GB内存只能运行4096个线程.奥秘在于Actor直接可以复用线程。Actor和线程是不同的抽象,他们的对应关系是由Dispa...
Akka学习笔记(五):Akka与Java的内存模型 Akka简化了编写并发软件的过程,本文主要讨论Akka如何在并发应用中访问共享内存。 Java内存模型 Java5之前的JMM是相当混乱的。多线程访问共享内存很有可能会得奇怪的结果,如: 可见性问题,无法及时看到其他线程写入的值指令乱序,观测到其他线程不可能的行为 从Java 5的JSR 133的实现,很多问题就解...
Akka学习笔记(三):什么是Actor 上一节讲到actor是actor system最基本的单元。这一节详细的讲讲actor.更详细here。actor是一个拥有state,behavior,mailbox,children,supervisor strategy的容器.Akka保证所有actor都只运行在自己的轻量级线程,并一次处理一个消息,这样程序员就不用处理同步、竞态 A...
Akka学习笔记(二):Actor Systems 图中表示的是一个Actor System,它显示了在这个Actor System中最重要实体之间的关系。 什么是actor,是一个封装了状态和行为的对象,每个actor都通过message交流,从自己的mailbox中读取别的actor发送的消息。 注意: ActorSystem是重量级的对象,会创建1...N个线...
Akka学习笔记(四):监督和监控 Supervision是什么 supervision表示actors之间的关系。监督者分配任务给下属,因此需要处理反馈的错误。根据不同的错误,监督者supervisor可以做如下操作: 恢复下属,让下属继续运行,继续接收message。当且仅当下属还可以正常运行重启下属,清空status。一般是第一条情况中,child的异常导致无法正常运行。关...
Akka学习笔记(一):创建Hello World工程 创建工程 使用IDEA,创建SBT工程,在build.sbt中添加akka依赖: name := "My Project" version := "1.0" scalaVersion := "2.10.4" resolvers += "Typesafe Repository" at "http://repo.typesaf...