为什么没有 Javascript 分布式计算框架/项目?这个想法对我来说绝对很棒,因为:
- 客户端就是浏览器
- 可以使用 AJAX 完成迭代
- 网站管理员可以通过链接各自的 Javascript 来帮助项目
- 数百万甚至数十亿用户会在不知不觉中帮助 DC 项目
请分享您对这个主题的看法。
编辑:另外,您认为什么样的问题适合 JSDC?
例如, GIMPS将无法实施。
为什么没有 Javascript 分布式计算框架/项目?这个想法对我来说绝对很棒,因为:
请分享您对这个主题的看法。
编辑:另外,您认为什么样的问题适合 JSDC?
例如, GIMPS将无法实施。
我认为Web Workers很快就会被用来创建分布式计算框架,在这个概念上有一些早期的尝试。可以在使用 setTimeout 之前完成非阻塞代码执行,但这有点意义,因为大多数浏览器供应商最近才专注于优化他们的 JS 引擎。现在我们有了更快的代码执行速度和新功能,所以当我们浏览网页时,在后台无意识地运行一些任务可能只是几个月的事情;)
这里有一些关于“用户权限”的内容。听起来您正在描述一种情况,即 Foo.com 的网站管理员在他们的网站上包含了 Folding@Home 的脚本。因此,所有访问 Foo.com 的访问者都将一部分 CPU “捐赠”给 Folding@Home,直到他们离开 Foo.com。如果没有某种免责声明或选择加入,我会认为这是一种恶意软件,并避免访问任何这样做的网站。
这并不是说你不能建立一个要求确认或许可的系统,但肯定存在滥用的可能性。
我自己在项目推荐的背景下思考过这个问题。
首先,速度没有问题!JIT 编译的 javascript 可以和未优化的 C 一样快,尤其是对于数字代码。
更大的问题是在后台运行 javascript 会降低浏览器的速度,因此用户可能不喜欢您的网站,因为它运行缓慢。
显然存在安全问题,您如何验证结果?
还有隐私,你能确保敏感数据不被泄露吗?
除此之外,这是一件相当困难的事情。您收到的访问次数能否证明您必须付出的努力?如果您可以在服务器端或客户端透明地运行代码会更好。将其他语言编译为 javascript 可以提供帮助。
总而言之,它没有普及的原因是因为开发人员的时间比服务器时间更有价值。丢失用户数据和给用户带来的不便的风险超过了潜在的收益。
我首先想到的是安全性。我知道的几乎所有分布式协议都有加密,这就是它们防止安全风险的原因。虽然这个主题没有那么创新..
http://www.igvita.com/2009/03/03/collaborative-map-reduce-in-the-browser/
Wuala也是一个分布式系统,使用 java 小程序实现。
我知道 pluraprocessing.com 做类似的事情,不确定是否完全是 javascript,但它们通过浏览器运行 Java,并且完全在内存中运行,具有严格的安全性。
他们有 50,000 台计算机网格,在上面成功运行了应用程序,甚至像网络爬虫 (80legs)。
我认为我们可以验证某种问题的结果。
假设我们有 n 个项目并且需要对其进行排序。我们将它交给 worker-1,worker-1 会给我们结果。我们可以验证它 O(n) 时间。请考虑到产生结果至少需要 O(n*log(n)) 时间。此外,我们应该考虑 n 个项目有多大?(担心网速)
另一个例子,f(x)=12345,给出函数。目的是找到 x 的值。我们可以通过用一些工人的结果替换 x 来测试它。我认为一些无法验证的问题很难交给某人。
Javascript分布式计算的整个想法有很多缺点:
虽然只有一个(但非常诱人)优势:
然而,最大的问题是可扩展性和烦恼之间的关联。假设您提供了一些有吸引力的 Web 服务并在客户端运行计算。你用更多的人来计算,更多的人会生气。更多的人感到烦恼,更少的人使用您的服务。好吧,您可以限制烦恼(计算)、可扩展性或尝试介于两者之间的东西。
以谷歌为例。如果 google 会在客户端运行计算,那么有些人会开始使用 bing。多少 ?取决于烦躁程度。
Javascript 分布式计算的唯一希望可能是多媒体服务。只要它们消耗大量 CPU,没有人会注意到任何额外的负载。
我认为第一大问题是 javascript 在计算方面效率低下。这不仅仅是值得的,因为纯 c/c++ 中的应用程序会快 100 倍。