6.1 横向扩展
你可能期望这是关于银弹的一章,其中的银弹使得任何应用都可以扩展到上千台机器,但是事实是:分布式计算很难。 臭名昭著地难。 但是别不读下去了! Akka 至少会给你一些特别好的工具使得分布式计算简单些。 再说一次,Akka 没有保证免费的午餐,但是正像 actors 简化了并发编程,我们会看到他们也简化了到真正并发编程的转移。 我们回到 Goticks.com 工程,并使其成为分布式。
大多数网络技术使用远程过程调用(RPC)方式的交互来在网络上的对象之间通信,其试图掩盖调用一个本地对象与调用一个远程对象的区别。 背后的想法是,本地编程模式最简单,所以让程序员只以那种方式工作,然后某些时间或地点需要时透明地将某些调用远程化。 这种通信风格对服务器之间的点对点联系可行,但是对于大规模网络来说,这不是一个好方案,如我们在下一节中看到的。 面向消息的中间件可以解决这个,但是是以将消息系统吸收进应用层为代价的。 当在网络上横向扩展应用时,Akka 使用不同的方法,这给了我们两个方法中最好的:我们有远程合作者的相对透明性,但是我们又不必改变我们的 Actor 代码:你会看到,顶层是不变的。
在深入前,我们在下一节中来看看网络拓扑的例子,以及一些常用的术语,以防你不熟悉这些。 如果你已经是这个领域的专家了,你可能想跳过 6.2 节。