问题标签 [distributed-computing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
concurrency - 与共享数据相比,消息传递的性能损失
现在有很多关于不使用锁和使用像 Erlang 这样的消息传递方法的讨论。或者关于使用不可变数据结构,例如函数式编程与 C++/Java。
但我关心的是以下几点:
- AFAIK,Erlang 不保证消息传递。消息可能会丢失。如果您不得不担心消息丢失,算法和代码是否会变得臃肿并再次变得复杂?无论您使用什么分布式算法,都不能依赖于有保证的消息传递。
- 如果 Message 是一个复杂的对象怎么办?复制和发送消息与将消息保存在共享位置(例如两个进程都可以访问的数据库)相比,是否存在巨大的性能损失?
- 你真的可以完全取消共享状态吗?我不这么认为。例如在数据库中,您必须访问和修改相同的记录。您不能在那里使用消息传递。您需要锁定或假设乐观并发控制机制,然后对错误进行回滚。Mnesia 是如何工作的?
- 此外,您并不总是需要担心并发性。任何项目也将有一大段代码,它们根本不需要对并发或事务做任何事情(但它们确实需要考虑性能和速度)。许多这些算法依赖于共享状态(这就是为什么传递引用或指针如此有用)。
鉴于这一事实,用 Erlang 等编写程序是一件痛苦的事情,因为您无法做任何这些事情。可能是,它使程序变得健壮,但对于解决线性规划问题或计算凸包等问题,性能更重要,当算法与并发/事务无关时,强制不变性等是一个糟糕的决定. 不是吗?
erlang - 在 Erlang 中提供健壮的消息传递
这与我之前的问题中正在进行的讨论有关
正在讨论的问题之一是在 Erlang 中使用消息传递与共享状态的分布式算法所需的工作量。我的观点是,使用共享状态(可能是数据库中的记录)实现分布式领导选举比设计一种对消息丢失具有鲁棒性的算法更容易。不是吗?
实现基于消息传递的算法的问题在于,我们必须使分布式算法对消息丢失具有鲁棒性,或者以某种方式确保即使需要多次尝试也始终传递消息。当然,分布式领导选举是一个众所周知的问题,我认为已经存在一个健壮的消息传递算法(可能是 nancy lynch 的书给出的),但我只是以这个问题为例来说明一下。
谢谢!
excel - 如何在 Excel 中进行分布式计算
几年前,我实现了一个异步点对点面向消息的中间件,该中间件在 Excel VBA 中使用起来非常友好,我发现自己再次需要进行大量计算,这些计算可能很容易分发,如果我有机制。
我可以重新实现 MOM 层,但如果存在第三方产品,我更愿意使用它。
我的要求是这些:
- 能够从 Excel VBA 和 VB6 轻松发送消息,
- 具有资源发现机制来查找计算服务,
- 发送异步消息(我不想在计算完成时锁定 Excel),
- 提供排队机制,以便我可以让多台服务器轻松完成工作,
- 设置管理员权限低
任何人都可以提出任何建议吗?
很多谢谢
-- DM
algorithm - how to partition the 2d arrays among the processes for "The Game of Life"
I am doing an assignment using MPI to implement Game of Life. I was wondering if I should use a block-row partitioning, a cyclic row partitioning or a block-checkerboard partitioning?
language-agnostic - 在对等网络中维护网络完整性
我正在寻找有关如何在动态对等网络中维护网络完整性的技术、算法等信息。欢迎实际实施、学术论文和该类别中的任何其他内容。
想象一个完全基于点对点的网络,其中每个节点只连接到x 个其他节点。在没有所有节点的完整列表的情况下,每个节点都负责维护与网络的连接。节点动态地下降和上升,这意味着每个节点需要询问它的邻居(和他们的邻居?)以便新节点连接到,以保持x数量的连接。
网络分段(网络的两半仅由每个网络的一个节点连接 - 如果其中任何一个出现故障,网络将分成两部分)以及如何避免这种情况和有效的路由(距离指标等)是我的主要兴趣,但任何与具有类似描述的网络相关的内容都会很有趣。
我目前正在研究 Chord DHT 协议,因为它与我所要求的有一些相似之处。
asp.net - 为什么我会收到错误代码当我取下一台速度缓存主机时?
当我关闭托管用户会话的三节点集群中的一个节点时,我的 Web 应用程序中出现以下异常。
会话缓存也有辅助,没有驱逐。
这是错误消息和堆栈:
如果我稍后重试请求,该消息将消失。为什么我首先收到此消息,并且服务器不应该自行确定主机已关闭并切换到其他客户端之一。我在 web.config 文件中将会话客户端定义为简单,以防万一它是路由问题,但问题仍然存在。
distributed-computing - Any experience programming for BOINC?
I am attracted by BOINC for a little project of mine. I heard of BOINC but not read much about how it works, mostly because I am focusing on other priorities right now. What I would like to know is if any of you actually tried to program for BOINC and have a program run on the distributed computer network. In particular I am interested in the following questions:
- How does it work? do you compile the code, post it somewhere and the clients download it and you receive workunit requests and results ?
- What languages does it support? how does it deal with runtimes (I guess you will be able to provide a full, independent package with all the required stuff)
- How do people know that your project exists, and opt-in to participate?
- What services does it provide to make my life easier ? Is there a pre-made library for common tasks ?
I prefer real life experience. Wikipedia can be a great source of info but I prefer actual use cases.
java - 分布式作业调度、管理和报告
我最近玩了Hadoop,对 MapReduce 作业的调度、管理和报告印象深刻。它似乎使新作业的分配和执行非常无缝,使开发人员可以专注于他们的作业的实施。
我想知道 Java 域中是否存在任何用于分布式执行作业的东西,这些作业不容易表示为 MapReduce 问题?例如:
需要任务协调和同步的作业。例如,它们可能涉及任务的顺序执行,但同时执行一些任务是可行的:
/li>您想要分发但不提供任何输出以减少的 CPU 密集型任务 - 例如图像转换/调整大小。
那么有没有提供这种分布式计算环境的Java框架/平台呢?或者使用 Hadoop 是否可以接受/实现这种事情 - 如果是的话,这些工作是否有任何模式/指南?
c# - 分布式应用程序(WCF/Remoting/web servervices)与 Web 应用程序
我正在制作一个中型标准 LOB 应用程序。目前它是一个 Web 应用程序,但我正在制定一项将其改造成桌面远程应用程序的提案。我的意思是数据库和应用程序服务器将托管在远程位置。客户端应用程序将通过互联网通过(WCF / Webservices / Remoting)与服务器通信。
我的问题是:我将其从 Web 平台转移的唯一原因是由于 Web 的限制(我不想使用 AJAX 或 Java 脚本来最小化这些限制,所以请不要推荐 JS/AJAX)。我制作了传统的桌面应用程序,它们的速度相当快,但我从未制作过远程或分布式应用程序。我不确定应用程序的速度是否会比网络更快。
据我了解,远程桌面应用程序会快得多。一方面,不会有任何回帖,(我非常讨厌他们)。数据显然将来自互联网,所以在这方面,仅仅为了速度和力量而转移到远程桌面会更好吗?
在正确方向上的任何帮助都会非常有用。非常感谢。
泽山
methods - BOINC:有没有一个简单的例子,如何为它编写一个程序,以及如何在他们的客户端/服务器系统中实现它?
我做了一个数字方法作为我的毕业论文,并用 java 编码。当充分执行时,它需要大量的计算时间。所以我寻找替代方案并找到了 BOINC。不幸的是,我没有时间在 BOINC 中执行我的方法,因为我是航空航天学生而不是程序员,我决定优先考虑我的 java 程序。现在它已经完成了,我仍然想将它移植到 BOINC 环境。
不幸的是,我正在学习重做示例,但在官方网站http://boinc.berkeley.edu和互联网上都找不到。那么您是否知道一个好的简单示例,或者您是否有任何 BOINC 经验并想为这样的 boinc 项目启动一个新平台?
我对我的方法很现实,它不会 24/7 运行,因为没有像 seti 或折叠项目那么多的工作单元。所以我想有一个平台,而不仅仅是我的项目,这样当项目的一部分当时没有任何工作单元时,可以在另一个平台项目上工作。
但要开始这个,我会保持简单,只想知道如何编写代码并在客户端和服务器系统中使用它。示例项目将用于什么并不重要,只要它足够简单,我可以理解它并为我的方法扩展它。
提前谢谢你,安德烈亚斯!:)
PS:我知道BOINC支持JAVA作为编程语言,我的方法是用JAVA编码的。