了反应式系统的核心功能,也就是反应式宣言所定义的响应性、弹性、扩展性以及消息驱动。
Actor系统可以进行水平扩展,从一个节点扩展到具有众多节点的集群,这样的话就为我们提供了灵活性以应对大规模的负载。除此之外,还可能实现有弹性的扩展,也就是扩展系统的处理能力,不管是手动的还是自动的,都能充分支持系统活动所出现的高峰和低谷状态。
借助Actor和Actor系统,故障探测和恢复就成为一种架构上的特性,而不是事后才考虑增补上去的功能。我们可以使用内置的Actor监管策略来处理下属工作者Actor遇到的问题,能够一直向上追溯到Actor系统层级,集群节点会积极监控集群的状态,在这种环境中处理故障已经植入到了Actor和Actor系统的DNA之中了。这其实始于Actor之间异步交换消息的最基础层级:如果你给我发送一条消息的话,你必须要考虑可能的输出,如果得到了预期的答复该怎么办,没有收到预期答复又该怎么办?这种处理策略会一直延伸到集群中节点的加入和离开。
在设计系统时,按照Actor的方式思考在很多方面都会更加直观。Actor的交互方式对我们来说会更加自然,因为简单来讲,它的交互方式与人类之间的交互方式更加接近。这样的话,我们在设计和实现系统时,能够更加关注核心功能,忽略其他业务不相关的冗余内容。
Markus Eisele 是一位Java Champion、前Java EE专家组成员、JavaLand的创始人,在世界范围内的Java会议上是享有盛誉的讲师,在企业级Java领域颇为知名。他在Lightbend担任开发人员,读者可以在Twitter上@myfear联系到他。
查看英文原文:Building Reactive Applications with Akka Actors and Java 8