最近我开始使用支持演员/代理/无共享架构的替代语言 - 即.scala,clojure等(clojure也支持共享状态).
到目前为止,我所阅读的大部分文档都集中在介绍级别.我正在寻找的是四人帮中更高级的文档,而不是基于什么共享.
为什么?它有助于改变设计思维的变化.简单的例子很简单,但在现实世界的Java应用程序(单线程)中,您可以拥有1000个具有复杂关系的成员的对象图.但是,基于代理的并发开发,它在设计大型系统时引入了一整套全新的思路.即.代理粒度 - 一个代理应管理多少状态 - 对性能的影响等,或者是将共享状态对象图映射到基于代理的系统的良好模式.将域模型映射到设计的技巧.讨论不是关于技术,而是关于如何在设计中最好地使用该技术(现实世界"复杂"的例子会很棒).
即使我不能提出任何可以直接为您提供设计模式的现实世界的例子,也有一些地方可以开始.
首先是围绕概念正确包裹你的头部.帮助您实现这一目标的一本书是在 Erlang Guru Joe Armstrong编写的软件错误的情况下制作可靠的分布式系统,其中以非常易于理解的方式解释了面向并发编程.它实际上是博士学位.论文,但不要让那吓到你.与大多数常见的教科书相比,它更容易阅读,也更便宜.
查看实际系统通常意味着您必须过多地学习实际语言,因此评估事物也是有意义的.对于Erlang,文档 提供了设计方法和行为(Erlang speek for design pattern libraries).这将说明此设置中最常用的设计模式.事实证明,这些在构建大规模系统方面是有效的,即数百万行代码(相当于Java等其他语言的4到10个因子)和在分布式机器集群中的一台机器上运行的并发进程的数量.最近的一个真实的现场系统的例子是 Facebook Chat.
对于其他框架,我恐怕不能真正帮助你.