6.2 使用 Remoting 进行横向扩展
既然是对横向扩展的导论,我们来使用第二章中相对简单的例子 goticks.com。 下边的小节中我们会修改应用使其可以运行在多个节点上。 虽然 goticks.com 应用非常简单,我们感觉有必要对应用做出一些改变来让其适应扩展。
我们使用客户-服务器网络拓扑来定义两个节点间的静态成员关系,因为它是从本地到分布式最简单的路径。 在这种设置下,两个节点的角色分别是前端和后端。 REST 接口会运行在前端节点。 BoxOffice 和所有的 TicketSellers 会运行在后端节点上。 两个节点都有对方网络地址的静态引用。 图 6.2 显示了我们即将做出的修改:
Figure 6.2 从单节点到客户-服务器
我们使用 akka-remote 模块来做修改。 当应用的本地版创建出新 Events 时,BoxOffice Actor 创建出一些名为 TicketSeller 的 actors。 在客户-服务器拓扑中也需要这样做。 如我们即将看到的, akka-remote 模块使得可以远程创建和部署 actors。 前端即将查询在它知道的地址上的后端节点上的 BoxOffice,其创建 TicketSeller actor。 我们还会看到这个的变形,其中前端把 BoxOffice 远程部署到后端节点上。
下一节中我们开始着手 remoting。 我们从对 SBT 构建文件的修改开始看起,然后来看对其余代码的改变。