【问题标题】:Design Patterns with Actors使用 Actor 的设计模式
【发布时间】:2012-11-13 12:18:26
【问题描述】:

基于演员的范式非常酷。它的有效扩展能力使其成为必须评估任何并发系统的范例。我已经阅读了一些关于它的内容,并且对核心意图有一个不错的想法:使用消息和多个“参与者”驱动昂贵的操作,以最大限度地减少由于请求/响应交互引起的等待,从而提高系统的吞吐量。但是,我还没有充分了解人们与演员一起使用的设计模式。我正在寻找基于角色的系统的设计模式。

演员设计模式的一个常见示例是一个系统,其中有一个主协调演员和一群子工作演员。他们掌握将昂贵的操作映射到较小的块,将较小的块作为消息发送给一群工人,等待他们的响应,然后将它们全部归结为结果。在这种模式的一些复杂示例中,工作角色通知主节点他们已准备好进行更多工作,并且主节点根据需要向他们路由更多工作。这可确保工作的适当平衡,并且在工作规模变化很大时很有用。

我搜索了有关更多基于角色的模式的文献,但除了上述示例之外,还找不到任何示例。我还没有浏览 Akka Actors 项目示例,但任何指针都会非常有用。

【问题讨论】:

标签: design-patterns akka messaging actor event-driven-design


【解决方案1】:

我刚刚为类似的问题提供了more elaborate answer,但我将在这里总结我发现的关于 Actor 模型的最有趣的资源。

设计模式:

反应性演员和 DDD:

Proto Actor(由 Akka 的一位创作者在 Alexey Zimarev 的帮助下完成的项目)。我发现这个项目比 Akka 更容易理解,Akka 非常复杂(我与他们没有从属关系,但考虑使用):

然后在 Github 上搜索 actor-model 主题可能会产生有趣的东西。

我在 QCon 视频Actors or Not: Async Event Architectures 中找到了更多书籍推荐:

【讨论】:

    【解决方案2】:

    这里值得一提的是关于企业集成模式 (http://www.eaipatterns.com/) 的工作。完全有可能在他们的作品中从未提及“演员”这个词,但从队列处理器到演员的翻译是微不足道的,就像将 Poe 从英语翻译成法语一样。像您描述的负载平衡模式是您在这里学到的最少的东西。

    【讨论】:

      【解决方案3】:

      我强烈推荐 Derek Wyatt 的“Akka Concurrency”一书——它专注于最新的 Akka 发行版 (2.1),并介绍了使用 Akka 的几个最佳实践和许多设计模式(强调事件驱动设计)。但是,它确实假设您对 Scala 有一定的了解。

      来自 Akka Summer of Blog 系列的帖子也很有帮助(其中一些也是 Derek [和我] 写的)。

      【讨论】:

      • 这本书很棒。感谢您的来信。
      • 似乎 scala actor 使用 akka
      【解决方案4】:

      我发现了更多关于基于事件的编程的文献。

      http://www.amazon.com/Event-Based-Programming-Taking-Events-Limit/dp/1590596439/ref=pd_rhf_ee_s_cp_8

      关于基于事件的交互模式的章节看起来很有希望

      【讨论】:

        【解决方案5】:

        首先,熟悉http://en.wikipedia.org/wiki/Flow-based_programminghttp://en.wikipedia.org/wiki/Dataflow_programming。 Actor 模型是数据流编程的一个子集,Actor 模型的实现更加受限。

        【讨论】:

          猜你喜欢
          • 2013-11-04
          • 2011-04-25
          • 1970-01-01
          • 2018-03-30
          • 1970-01-01
          • 2012-08-12
          • 2011-07-05
          • 1970-01-01
          • 2014-04-12
          相关资源
          最近更新 更多