Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript分布式计算_Javascript_Ajax_Distributed Computing - Fatal编程技术网

Javascript分布式计算

Javascript分布式计算,javascript,ajax,distributed-computing,Javascript,Ajax,Distributed Computing,为什么没有Javascript分布式计算框架/项目?我觉得这个想法非常棒,因为: 客户端是浏览器 可以使用AJAX进行迭代 网站管理员可以通过链接各自的Javascript来帮助项目 数百万甚至数十亿的用户会在不经意间帮助DC项目 请分享你对这个问题的看法 编辑:另外,您认为什么样的问题适合JSDC? 例如,不可能实现。我首先想到的是安全性。 我所知道的几乎所有分布式协议都有加密,这就是为什么它们可以防止安全风险。虽然这门课没有那么创新 还有一个分布式系统,它是使用JavaApplet实现

为什么没有Javascript分布式计算框架/项目?我觉得这个想法非常棒,因为:

  • 客户端是浏览器
  • 可以使用AJAX进行迭代
  • 网站管理员可以通过链接各自的Javascript来帮助项目
  • 数百万甚至数十亿的用户会在不经意间帮助DC项目
请分享你对这个问题的看法

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


例如,不可能实现。

我首先想到的是安全性。 我所知道的几乎所有分布式协议都有加密,这就是为什么它们可以防止安全风险。虽然这门课没有那么创新


还有一个分布式系统,它是使用JavaApplet实现的。

我认为首要问题是javascript计算效率低下。这不值得,因为纯c/c++的应用程序速度要快100倍。

这里有一些关于“用户权限”的说法。听起来你在描述一种情况,Foo.com的网站管理员在其中包含了脚本,Folding@Home在他们的网站上。因此,所有访问Foo.com的访问者都会将部分CPU“捐赠”给Folding@Home,直到他们离开Foo.com。没有一些免责声明或选择,我会认为这是一种恶意软件,避免浏览任何网站。
这并不是说你不能构建一个需要确认或许可的系统,但肯定存在滥用的可能性。

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

我自己在项目推荐的背景下考虑过这一点

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

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

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

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

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


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

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


他们有50000台计算机,在这些计算机上,他们成功地运行了网络爬网(80条腿)等应用程序。

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

假设我们有n个项目,需要对其进行排序。我们会给1号工人,1号工人会给我们结果。我们可以一次核实一下。请考虑至少需要O(n*log(n))时间来产生结果。另外,我们应该考虑N个项目有多大?(关注网络速度)


另一个例子,f(x)=12345,并给出函数。目的是求x的值。我们可以用一些工人的结果替换x来测试它。我认为一些不可验证的问题很难告诉别人。

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

  • 单点故障-节点之间没有直接通信方式
  • 节点的自然故障-每个节点都可以正常工作,只要浏览器
  • 根据节点的自然故障,无法保证发送的消息将被接收到
  • 无法保证收到的消息已经发送过——因为某些黑客可以介入
  • 客户端的恼人负载
  • 伦理问题
虽然只有一个(但非常诱人)优势:

  • 轻松、免费访问数以百万计的节点——如今几乎每台设备都有支持JS的浏览器
然而,最大的问题是可伸缩性和烦恼之间的相关性。假设您提供了一些有吸引力的web服务,并在客户端运行计算。你使用计算机的人越多,就有越多的人感到烦恼。更多的人感到烦恼,更少的人使用你的服务。好吧,你可以限制烦恼(计算),可伸缩性或尝试两者之间的东西

以谷歌为例。如果谷歌将在客户端运行计算,一些人将开始使用bing。有多少取决于烦恼程度


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

不久前我发现了一个类似的问题,所以我构建了一个这样做的东西。它使用web workers并动态获取脚本(但不进行评估!)。Web工作人员对脚本进行沙箱处理,使其无法访问窗口或DOM。您可以查看代码和主网站


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

只有100?可能更多。这意味着让10000个人安装基于C++的分布式计算客户端将在LEA中产生。