基于代理/参与者的并发设计的设计模式[关闭]

2024-03-25

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

到目前为止,我读过的大部分文档都集中在介绍级别。我正在寻找的是四人组中更高级的文档,但没有共享任何内容。

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


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

首先是让你的头脑正确地理解这些概念。一本书有帮助 你这样做是在存在软件错误的情况下打造可靠的分布式系统 http://erlang.org/download/armstrong_thesis_2003.pdf由 Erlang 大师 Joe Armstrong 撰写,其中解释了面向并发的编程 以一种非常方便的方式。它实际上是一个博士学位。论文,但不要让它吓到你。 与大多数常见的教科书相比,它更容易阅读,而且更令人愉快。

查看实际系统通常意味着您必须了解太多有关实际系统的信息 语言对于评估事物来说也是有意义的。对于 Erlang 来说文档 http://www.erlang.org/doc/design_principles/part_frame.html提供设计方法和行为(Erlang speek for 设计模式库)。 这将说明此设置中最常用的设计模式。还有这些 已被证明可以有效构建大规模系统,即数百万行代码(相当于 Java 等其他语言的 4 到 10 倍)以及在分布式机器集群中的一台机器上运行的数百万个并发进程。 最近的一个真实系统的例子是脸书聊天 http://www.facebook.com/note.php?note_id=51412338919.

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于代理/参与者的并发设计的设计模式[关闭] 的相关文章

随机推荐

  • 更改 Eclipse 选项卡以像 Emacs 一样正确缩进行

    在 Emacs 中 当我在一行中的任意位置按下 Tab 时 该行将正确缩进 或至少缩进到模式设置 当我再次点击选项卡时 它将移回到下一个块 在 Python 编程时 这确实很有帮助 因为关闭块是通过降低缩进级别来完成的 有没有办法配置 Ec
  • 结构中的位是否得到保证

    我有一个与结构位字段相关的问题 请参阅下文 因为我对应该使用哪些关键字来最好地描述我的问题有点无能为力 背景 我正在为 MIPS R3000A 汇编指令编写一个反汇编程序 该指令在 2000 年初用于 Playstation 程序 问题 我
  • 反射发出:如何为此构建构造函数

    我想要动态构建的代码如下 public class Sample public Sample Items new ObservableTestCollection
  • 使用 DOS 批处理文件从文件中删除某些内容

    我有一个文件 Text dat 其中包含一些不需要的数据 我需要编写一个 DOS 批处理文件来删除不需要的数据 并将其放入其他文件 例如 file2 dat 中 并保留包含所需数据的原始文件 请帮忙 代替find我会用findstr哪个更强
  • 使用点符号导入自定义包的子模块?

    我猜这个问题可能已经得到解答 但我所有的搜索都发现了其他导入问题 话又说回来 也许我只是不知道要搜索的正确术语 如果我创建一个带有模块的包 似乎我可以使用from mypackage import mymodule to use mymod
  • 在 Firefox 中使用 CSS 实现圆角

    我实际上想把桌子内的角弄圆 就我而言 这似乎是不可能的 我已经尝试了几乎所有的方法 但我无法让它发挥作用 问题是我基本上有一张桌子 其螺纹具有特定的颜色 比如说黑色 我想通过将其角磨圆来给它一点圆角 谁能告诉我这怎么可能 这是我到目前为止尝
  • 注册django后发送确认邮件

    我在 django 应用程序中完成注册过程后发送了一封电子邮件确认 出于安全原因 我需要找出如何验证在 url 中发送的代码 而不在用户模型中添加新的代码字段 到目前为止 我在 url 和用户名中发送了一个随机代码 该代码已验证但不是代码
  • 使用 Modelmapper,如何映射到没有默认/无参数构造函数的类?

    我想映射到一个只有一个带有 3 个参数的构造函数的源目标 我收到以下错误 无法实例化目标 com novasol bookingflow api entities order Rate 的实例 确保 com novasol bookingf
  • 有没有办法在 Angular 中单击按钮时从 SQL Server 数据库表下载数据的 csv 文件

    我需要将 SQL Server 数据库表中的所有数据放入一个 csv当我单击前端 Angular 网页中的按钮时 会生成一个文件 我已经用 C 编写了一个 Web API 来访问 SQL Server 表中的所有数据并将其显示在我的网页中
  • 将 keras ImageDataGenerator.flow_from_directory() 与 Talos Scan() 结合使用

    Talos 是一个模块 允许您对已经编写代码的 keras 模型进行超参数调整 在示例中使用它的传统方式是Scan实例化的类x and y参数 这些参数应包含一个分别包含训练数据和标签的数组 def modelbuilder x train
  • Rails 中的 ActiveModel::Serializer - JSON 结果中忽略序列化器方法

    我在用active model serializers https github com rails api active model serializers为我的 Rails 模型创建 JSON 串行器 class OptionSeria
  • 如何从 umbraco CMS 导出数据?

    我有一个使用 umbraco cms 的项目 即 MSSQL 现在我们正在 WordPress 中重建网站 我无法理解其中的关系 在乌布拉科这很困难 所以我想直接从 Umbraco CMS 下载 导出内容 但在 cms 中我找不到任何导出批
  • 在 Xamarin UWP 中创建包后,视频仅通过语音播放,我看不到视频

    我正在使用最新版本的 MediaManager 插件来播放视频 当我在调试模式下运行应用程序时 一切正常 但是当我为窗口创建包时 视频不显示 只听到声音 我正在使用下面的包 插件 MediaManager Forms 这是我的 XAML 页
  • 在 ruby​​ 中定义全局方法的方法

    我正在写一个小 gem 我想定义一个类似 DSL 的方法 与desc and task中的方法Rake Rake 将它们定义为私有方法Rake DSL模块然后 self extend Rake DSL 将模块混合到主对象中 我是新手 如有错
  • 如何在 iOS 中访问 JPEG COM 段?

    JPEG 有很多标记段级别 我想读取和写入注释标记段级别 COM 读 写 它需要低级编程 我如何在 iOS 中访问它 参考 http help accusoft com ImageGear v18 1 Mac IGDLL 10 05 htm
  • 在 Adob​​e Flex 中将数据写入文本文件

    我是 Adob e Flex 新手 我想将存储在字符串变量中的一些数据写入文本 txt 文件中 有人可以在这里添加示例代码对我有帮助吗 谢谢 如果您的目标是 Flash 10 则可以写入文件 阅读本文以了解如何执行此操作 http www
  • 我怎样才能同时捕获 2 个以上的按键?

    最近我对创建 JS 游戏产生了兴趣 不是我有经验但我感兴趣的领域 我知道有几个 JS 游戏引擎 但我并不是真的想创建一个游戏 相反 我很好奇事物是如何工作的 我如何创建一个 我有几个问题 有人建议我在哪里可以阅读它吗 先决条件 需要什么知识
  • 从数据库 php 和 mysql 检索图像的损坏文件图标

    我需要从数据库上传和检索图像 我可以将图像存储在数据库中 但稍后无法显示 请帮忙 我编写了以下代码来从数据库中检索 result1 mysql query INSERT INTO userdata id username firstname
  • 从 SQL 存储过程导出文本文件

    我当前有一个进程存在于 2 个导出文本文件的 MS Access 数据库中 此过程在一天中发生两次 一次是在设定时间触发的自动化过程中 第二次是由应用程序前端的用户触发 这在两个数据库中都是相同的 现在我们正在将此应用程序重写为 SQL S
  • 基于代理/参与者的并发设计的设计模式[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 最近 我一直在研究支持参与者 代理 无共享架构的替代语言 即 scala clojure 等 clojure 也支持共享状态 到目前为止 我读过