22

为什么没有 Javascript 分布式计算框架/项目?这个想法对我来说绝对很棒,因为:

  • 客户端就是浏览器
  • 可以使用 AJAX 完成迭代
  • 网站管理员可以通过链接各自的 Javascript 来帮助项目
  • 数百万甚至数十亿用户会在不知不觉中帮助 DC 项目

请分享您对这个主题的看法。

编辑:另外,您认为什么样的问题适合 JSDC?

例如, GIMPS将无法实施。

4

9 回答 9

7

我认为Web Workers很快就会被用来创建分布式计算框架,在这个概念上有一些早期的尝试。可以在使用 setTimeout 之前完成非阻塞代码执行,但这有点意义,因为大多数浏览器供应商最近才专注于优化他们的 JS 引擎。现在我们有了更快的代码执行速度和新功能,所以当我们浏览网页时,在后台无意识地运行一些任务可能只是几个月的事情;)

于 2009-08-11T00:07:11.513 回答
5

这里有一些关于“用户权限”的内容。听起来您正在描述一种情况,即 Foo.com 的网站管理员在他们的网站上包含了 Folding@Home 的脚本。因此,所有访问 Foo.com 的访问者都将一部分 CPU “捐赠”给 Folding@Home,直到他们离开 Foo.com。如果没有某种免责声明或选择加入,我会认为这是一种恶意软件,并避免访问任何这样做的网站。

这并不是说你不能建立一个要求确认或许可的系统,但肯定存在滥用的可能性。

于 2009-08-10T23:57:52.953 回答
4

我自己在项目推荐的背景下思考过这个问题。

首先,速度没有问题!JIT 编译的 javascript 可以和未优化的 C 一样快,尤其是对于数字代码。

更大的问题是在后台运行 javascript 会降低浏览器的速度,因此用户可能不喜欢您的网站,因为它运行缓慢。

显然存在安全问题,您如何验证结果?

还有隐私,你能确保敏感数据不被泄露吗?

除此之外,这是一件相当困难的事情。您收到的访问次数能否证明您必须付出的努力?如果您可以在服务器端或客户端透明地运行代码会更好。将其他语言编译为 javascript 可以提供帮助。

总而言之,它没有普及的原因是因为开发人员的时间比服务器时间更有价值。丢失用户数据和给用户带来的不便的风险超过了潜在的收益。

于 2010-11-08T13:15:03.647 回答
3

我首先想到的是安全性。我知道的几乎所有分布式协议都有加密,这就是它们防止安全风险的原因。虽然这个主题没有那么创新..

http://www.igvita.com/2009/03/03/collaborative-map-reduce-in-the-browser/

Wuala也是一个分布式系统,使用 java 小程序实现。

于 2009-08-10T23:43:32.780 回答
1

我知道 pluraprocessing.com 做类似的事情,不确定是否完全是 javascript,但它们通过浏览器运行 Java,并且完全在内存中运行,具有严格的安全性。

他们有 50,000 台计算机网格,在上面成功运行了应用程序,甚至像网络爬虫 (80legs)。

于 2011-01-10T10:58:42.813 回答
1

我认为我们可以验证某种问题的结果。

假设我们有 n 个项目并且需要对其进行排序。我们将它交给 worker-1,worker-1 会给我们结果。我们可以验证它 O(n) 时间。请考虑到产生结果至少需要 O(n*log(n)) 时间。此外,我们应该考虑 n 个项目有多大?(担心网速)

另一个例子,f(x)=12345,给出函数。目的是找到 x 的值。我们可以通过用一些工人的结果替换 x 来测试它。我认为一些无法验证的问题很难交给某人。

于 2011-10-21T02:12:49.747 回答
1

Javascript分布式计算的整个想法有很多缺点:

  • 单点故障——节点之间没有直接的通信方式
  • 节点的自然故障- 只要浏览器,每个节点都在工作
  • 不保证发送的消息将被接收- 根据节点的自然故障
  • 不保证收到的消息已经发送过- 因为一些黑客可以介入
  • 客户端烦人的负载
  • 伦理问题

虽然只有一个(但非常诱人)优势:

  • 轻松免费访问数百万个节点- 现在几乎每个设备都有支持 JS 的浏览器

然而,最大的问题是可扩展性和烦恼之间的关联。假设您提供了一些有吸引力的 Web 服务并在客户端运行计算。你用更多的人来计算,更多的人会生气。更多的人感到烦恼,更少的人使用您的服务。好吧,您可以限制烦恼(计算)、可扩展性或尝试介于两者之间的东西。

以谷歌为例。如果 google 会在客户端运行计算,那么有些人会开始使用 bing。多少 ?取决于烦躁程度。

Javascript 分布式计算的唯一希望可能是多媒体服务。只要它们消耗大量 CPU,没有人会注意到任何额外的负载。

于 2014-03-31T19:29:13.047 回答
-1

我认为第一大问题是 javascript 在计算方面效率低下。这不仅仅是值得的,因为纯 c/c++ 中的应用程序会快 100 倍。

于 2009-08-10T23:46:09.233 回答
-1

不久前我发现了一个类似的问题,所以我建立了一个可以做到这一点的东西。它使用网络工作者并动态获取脚本(但没有 Eval!)。Web 工作者将脚本沙箱化,因此他们无法访问窗口或 DOM。您可以在此处查看代码,并在此处查看主网站

该库在首次加载时会弹出一个同意弹出窗口,因此用户知道后台发生了什么。

于 2016-10-29T17:21:32.333 回答