这个akka入门系列大量参考了akka文档。主要是翻译+自己的一些理解。这里对akka文档吐一下槽,它的文档初看上去感觉挺详细的。但是很多示例代码都是片段,对初学者来说甚至都无法运行起来,所以我这里会对它的文档进行扩展,至少至少会有完整的代码。
what is akka?
我们都知道,要想写一个能正确并发、容错性好的可扩展应用是非常非常困难的。最主要的原因是我们用错了工具和在错误的级别上进行抽象(actor模式的抽象级别要远高于共享内存模式)。akka正式为了应对这种情况而孕育而生。actor模型提高了抽象级别并且提供了一个更好的平台去构建正确的、并发的可扩展应用。akka采用的是一种称为“let it crash”(让它去死)模式去获得良好的容错性。这种模式在电信领域获得了极大的成功,erlang就是采用这种模式。有了上面这些,akka就可以很容易构建自我恢复和永不停息的应用(好NB的口气啊)。actor模型也提供了这样一种抽象,使得分布式更加透明化。
用下面的图来总结一下吧:
akka本身用scala写的,但是因为scala是基于JVM的语言。所以akka自然而然的可以允许在java平台,并且提供了java API。我用的就是akka的java 版API,虽然没有scala版本简洁,但是整体来说还算比较简单。唉,本身scala这种混合型语言提供的抽象系统就比java强大的多。scala的模式匹配功能+actor简直就是绝配。
后面让我们直接进入akka核心模块去了解这个框架。主要是下面几个模块。其他的模块穿插着进行描述。主要使用的java API,因为scala使用的人毕竟很少(最最关键是我也只是略懂啊),当然我会适当对比这两种API风格,借此来领略scala的强大和优雅。
关键模块:
Actor
Futures
Dispatchers
Routing
Transactors