Javascript分布式计算
为什么没有Javascript分布式计算框架/项目?我觉得这个想法非常棒,因为:Javascript分布式计算,javascript,ajax,distributed-computing,Javascript,Ajax,Distributed Computing,为什么没有Javascript分布式计算框架/项目?我觉得这个想法非常棒,因为: 客户端是浏览器 可以使用AJAX进行迭代 网站管理员可以通过链接各自的Javascript来帮助项目 数百万甚至数十亿的用户会在不经意间帮助DC项目 请分享你对这个问题的看法 编辑:另外,您认为什么样的问题适合JSDC? 例如,不可能实现。我首先想到的是安全性。 我所知道的几乎所有分布式协议都有加密,这就是为什么它们可以防止安全风险。虽然这门课没有那么创新 还有一个分布式系统,它是使用JavaApplet实现
- 客户端是浏览器
- 可以使用AJAX进行迭代
- 网站管理员可以通过链接各自的Javascript来帮助项目
- 数百万甚至数十亿的用户会在不经意间帮助DC项目
例如,不可能实现。我首先想到的是安全性。 我所知道的几乎所有分布式协议都有加密,这就是为什么它们可以防止安全风险。虽然这门课没有那么创新
还有一个分布式系统,它是使用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的浏览器
Javascript分布式计算的唯一希望可能是多媒体服务。只要它们消耗大量CPU,就没有人会注意到任何额外的负载。不久前我发现了一个类似的问题,所以我构建了一个这样做的东西。它使用web workers并动态获取脚本(但不进行评估!)。Web工作人员对脚本进行沙箱处理,使其无法访问窗口或DOM。您可以查看代码和主网站
库在第一次加载时有一个同意弹出窗口,因此用户知道后台发生了什么。只有100?可能更多。这意味着让10000个人安装基于C++的分布式计算客户端将在LEA中产生。