我正在努力寻找任何适当的链接来设计模式,最佳实践或良好的基本架构原则,这些原则应该用于构建基于Actor的应用程序 . 我知道的那几个是:
博客文章,文章,WIKI,指南
-
Patterns and Best Practices for Enterprise Integration(一般情况下,可以应用于任何消息驱动架构)
-
系列posts by James Iry on dealing with state in design with actors
-
系列posts on design with Scala actors由Ittay Dror提供
-
Concurrency patterns维基百科上的文章
-
Scalable System Design Patterns(与演员没有直接关系,但非常有用)
论文
由Joe Armstrong撰写
- Disseration on making reliable distributed systems
菲利普哈勒和马丁奥德斯基 - Scalabale Component Abstractions
009 Event-based programming without inversion of control由Martin Odersky和Matthias Zenger撰写
由Martin Sulzmann撰写的 - Actors with Multi-Headed Message Receive Patterns
书籍
菲利普哈勒和弗兰克索默斯
- Actors In Scala
Joe Armstrong - Programming Erlang
由Martin Logan,Eric Merritt和Richard Carlsson撰写的 - Erlang and OTP in Action
实施
-
Akka Framework(Scala中的actor的替代实现,具有多个Erlang行为的端口以及许多其他针对actor的重新模式)
-
Scalaz Actors(演员的作文,策略和承诺)
演讲
达勒舒马赫
-
1000 Year-old Design Patterns作者:Ulf Wiger
由Jamie Ridgway撰写的 -
Actor-based Programming
由Vasil Remeniuk撰写的
来自highscalability.com的示例
- Simple queuing service (SQS) - 此服务提供用于存储消息的互联网规模排队服务 . 分布式actor将工作放在队列中并从队列中取出工作 . 典型用途:集中式工作队列 . 您将作业放在队列中,不同的actor可以弹出队列的工作并在它们获得CPU时间时处理它们 . 部分可扩展性 . 有许多 生产环境 者和消费者 . 你不担心 . 队列分布在多台计算机和多个数据中心 .
3 回答
这与previous question有关,如果不完全相同的话!
这不是一个简单的问题,因为 actor model 并发允许构建许多不同类型的应用程序,从有状态的单VM应用程序(具有几个单独的actor类)到成千上万个actor类实例的无状态集群 .
然而,核心原则是相同的:
永远不要暴露演员的状态
仅通过传递不可变消息进行通信
几周前我在Scala上发布了一个关于learnings of actor development的博客 . 根据几年的范例经验,这是一个最佳实践和要避免的事情的帖子 .
“反应设计模式”一书正在曼宁制作 .
见:https://www.manning.com/books/reactive-design-patterns