如何在分布式应用程序中使用演员

演员使其更容易构建和管理可扩展的分布式云应用程序。每个演员都可以发送和接收消息并根据消息内容完成某些动作

如何在分布式应用程序中使用演员

为云构建和可扩展性意味着构建不同类型的应用。您需要将代码分解为可以在公共或私有云的计算结构中扩展的服务集合中的代码。

然而,这种分布式系统有自己的问题。根据应用程序,您可能需要在不可预测的,失败的环境中解决管理状态的复杂问题 - 虚拟基础设施的基础结构的底层结构可以随时预先撤销。

寻求构建分布式系统的开发人员很快发现我们用于当前生成应用程序的模型和模式不会扩展。你不会使用n-tier MVC. 例如,架构为分布式传感器网络或者 MVVM 处理国际VOIP服务的框架。

这就是演员 - 消息模式进入的地方。该概念出生于1973年,它越来越受欢迎 - 您会发现它嵌入了Microsoft Research和这种现代语言作为Erlang这样的现代语言。

了解演员

演员是分布式应用程序开发中的一个重要概念。它构建了一切能够接收和发送消息并表现出这些消息的内容的想法。并发性由系统中的消息处理,因为无法管理到达订单 - 对于准备大规模网络的重要点,我们需要管理的内容互联网到达时需要管理。

演员是相对简单的代码,可以使用熟悉的编程工具和技术来实现。 Microsoft .NET开发人员将找到C#的异步/等待配对一个有用的工具,而Go和Erlang中的类似构造使开发人员能够创建邮件处理API。同样,现代,轻量级的发布和订阅系统 MQTT. 可以充当演员 - 消息实现的骨干。

这些解决方案提供了一种可靠的消息传递框架,以及一组工具,使系统能够在需要时快速生成新的演员,以及当系统从峰值负载缩小时杀死不需要的端点。

简单的代码也很好地映射到了相对愚蠢的世界的世界,服务器和服务需要与可能没有操作系统的设备一起使用,内存非常小,或者使用标准Internet协议以外的其他内容。

与演员合作

演员模型整齐地映射到无状态的微服务PaaS世界。特别有用的是,如果您使用的常见敏捷方法,例如用户故事,则演员能够实现故事处理输入的关键元素,并提供适当的输出,包装相对简单的业务逻辑以及传递状态简单的存储服务。

您可以快速从用户故事到演员API定义,完成消息语义。将所产生的演员和消息映射到微服务变得相对简化,并且致动机设计的消息第一方法使得可以快速定义 Idempotent. API并使用它们作为微服务设计的基础。使用内存中的NoSQL系统为您提供处理状态的框架,并通过使用邮件传递指针来传递演员之间的状态元素。

开始思考演员开发的一种方法是考虑现有的Web服务如何映射到Actors并将这些服务分解为微服务。如果您认为RESTful(甚至是SOAP)Web服务端点作为演员消息API,并且HTTP获取或将JSON作为邮件放入,您可能已经开始实现了Actors,并且只需要构建现有服务分布式计算平台利用云面料和规模。

请注意,默认actor模型中存在固有的问题。您将需要具有某种形式的管理框架来处理演员创作和破坏,并确保系统有效缩放。例如,如果您直接使用Erlang,您就不会那么;您将需要开发自己的管理框架或使用像Akka这样更复杂的环境。

最后,您无需了解您需要了解分布式系统开发概念的事实。这可能是许多开发人员的重要障碍。

得到我们最多的演员

抛弃此类障碍,演员模型是一个强大的工具,使其更容易构建和管理可扩展的云应用程序。

微软在其中使用的可靠演员模型 Azure服务面料 基于项目Orleans虚拟演员模型的研究工作,它为演员模式添加了附加抽象层。

与传统演员不同,虚拟演员可能是最好的想法作为永久性消息地址。如果端点不存在,则会自动创建 - 在用于托管应用程序的任何服务器上 - 为您提供自动故障转移,这有利于在底层预先撤销计算资源的不可靠的云面料上工作调度程序。

请记住,即使您正在使用演员驱动的微服务,也不容易,构建分布式应用程序并不容易。虽然它们很多帮助管理并发和可扩展性,但您仍需要考虑如何保持系统保持一致。

在实践中,意味着使用演员作为可扩展服务端点,将数据编组和馈送到更复杂的服务中,并允许将大规模的数据馈送变成可操作的信息。然而,最终结果是您可以使用很少的代码管理数百和数千个信息来源。

版权© 2015 IDG通讯,Inc。