Akka是什么?
Akka 是一个用 Scala 编写的库,用于简化编写容错的、高可伸缩性的 Java 和 Scala 的 Actor 模型应用。
在容错性方面采用了“let it crash”(让它崩溃)模型,该模型已经在电信行业构建出“自愈合”的应用和永不停机的系统,取得了巨大成功。Actor还为透明的分布式系统以及真正的可扩展高容错应用的基础进行了抽象。
Akka是开源的,可以通过Apache 2许可获得。
可以从 http://akka.io/downloads/ 下载
请注意所有的代码示例都是可编译的,所以如果你想直接获得源代码,可以查看github的"Akka Docs"子项目——java和scala
Akka提供了如下功能:
Akka actor模型抽象了并发处理,让开发专注于业务逻辑处理。
Actors为你提供:
- 对并发/并行程序的简单的、高级别的抽象。
- 异步、非阻塞、高性能的事件驱动编程模型。
- 非常轻量的事件驱动处理(1G内存可容纳数百万个actors,每个Actor大小只有3百KB)。
参阅 Actors (Scala) 和 Actors (Java)
容错性
- 使用“let-it-crash”语义的监控层次体系。
- 监控层次体系可以跨越多个JVM,从而提供真正的容错系统。
- 非常适合编写永不停机、自愈合的高容错系统。
参阅 容错性 (Scala) 和 容错性 (Java)
位置透明性
Akka的所有元素都为分布式环境而设计:所有actor只通过发送消息进行交互,所有操作都是异步的。
持久性
actor接收到的消息可以选择性的被持久化,并在actor启动或重启的时候重放。这使得actor能够恢复其状态,即使是在JVM崩溃或正在迁移到另外节点的情况下。
Scala 和 Java APIs
Akka同时提供 Scala API 和 Java API。
Akka的两种使用方式
以库的形式:在web应用中使用,放到 WEB-INF/lib 中或者作为一个普通的Jar包放进classpath。
以微内核的形式:可以将你的应用放进一个独立的内核。
参阅用例与部署场景了解细节。
商业支持
Typesafe提供Akka的商业许可,提供开发和产品支持,详见这里
你不应该担心的事
一个actor系统管理它所配置使用的资源,运行它所包含的actor。 在一个系统中可能有上百万个actor,不用担心,内存一定是够用的,因为每个actor实例仅占差不多300个字节。自然地,一个大系统中消息处理的具体顺序是不受应用开发者控制的,但这并不是有意为之。放松些,让Akka去做幕后的繁重事务吧。