21

最近我一直在研究支持演员/代理/无共享架构的替代语言 - 即。scala、clojure 等(clojure 也支持共享状态)。

到目前为止,我阅读的大多数文档都集中在介绍级别。我正在寻找的是四个更高级的文档,但没有共享任何基础。

为什么 ?它有助于理解设计思维的变化。简单的示例很简单,但在现实世界的 Java 应用程序(单线程)中,您可以拥有具有 1000 个具有复杂关系的成员的对象图。但是随着基于代理的并发开发,它引入了一套全新的想法,以便在设计大型系统时理解。IE。代理粒度 - 一个代理应该管理多少状态 - 对性能等的影响,或者是将共享状态对象图映射到基于代理的系统的良好模式。将域模型映射到设计的技巧。讨论不是关于技术,而是更多关于如何在设计中最好地使用技术(现实世界的“复杂”示例会很棒)。

4

3 回答 3

11

即使我无法想出任何好的现实世界示例来直接为您提供设计模式,也有几个地方可以开始。

首先是让你的头脑正确地围绕这些概念。帮助您做到这一点的一本书是由 Erlang Guru Joe Armstrong 编写的在存在软件错误的情况下构建可靠的分布式系统, 其中以一种非常容易理解的方式解释了面向并发的编程。它实际上是一个博士学位。论文,但不要让那吓到你。与大多数普通教科书相比,它更容易阅读,而且讨价还价。

查看实际系统通常意味着您必须对实际语言了解太多,因为它对于评估事物也很有意义。对于 Erlang,文档 提供了设计方法和行为(Erlang speek for design pattern library)。这将说明此设置中最常用的设计模式。并且这些已被证明在构建大规模系统方面是有效的,即数百万行代码(相当于 Java 等其他语言的 4 到 10 倍)和在分布式机器集群中的一台机器上运行的数百万并发进程。一个真实的实时系统的最新例子是 Facebook 聊天

对于其他框架,恐怕我无法真正帮助您。

于 2009-02-26T09:42:10.887 回答
4

An "actor" is itself the unifying pattern for concurrent programming (an asynchronous message queue plus an execution context for processing it), but there are many design patterns which assist in specifying aspects or elements of agent-based systems. Many of the most common can be found in Wikipedia's article on Concurrency Patterns. Some highlights:

If you haven't come across it already, Akka may be of interest to you -- it is a "purely" event-driven actor framework running on the JVM.

于 2010-05-10T23:38:20.843 回答
1

我在这里问了一个类似的问题,其中有一些合理的答案可能会有所帮助。我在仔细观察你的。我还没有找到真正帮助我的东西,但我非常积极地寻找。

我认为思维转变是迈向并发架构和语言的最大障碍,在此之前,开发人员将坚持使用易于学习的 MS 样式范例。为了让它真正成为主流,它需要找到进入学校的途径,并与 C# 和 VB 一起教授。

我对2080 程序员问题的回答是“同时”。

于 2009-02-20T09:18:14.740 回答