我应该在哪里进行大量计算?客户端还是服务器端?

2 投票
1 回答
2154 浏览
提问于 2025-04-18 00:39

我有一个桌面应用程序,是用Python和PyQT以及scipy/numpy做的。这个程序的目的是根据一些数据,找到一个微分方程的最佳参数组合。

为此,我们使用了一个数值求解器和numpy中的优化工具。计算过程比较复杂,但速度也很快(最多30秒),不过如果我们使用自定义的参数空间探索,可能会变得很慢(几个小时)。

接下来的步骤是“把它放到云端”,这样用户就不用烦恼如何安装这个应用程序了。因此,我们想创建一个Flask应用,使用d3.js或类似的东西来展示数据。

我之前从来没有接触过JavaScript,所以我想知道什么样的架构是最好的:

  • 用户上传他们的数据,这些数据会发送到服务器,服务器进行计算后再把结果发回给用户 => 我们可以在服务器上使用scipy/numpy,但如果同时连接的人太多,可能会导致服务器崩溃。

  • 用户上传他们的数据,这些数据在客户端用JavaScript处理 => 这样就不会对服务器造成压力,但我需要学习一种新语言,并自己实现科学计算(而且我觉得这可能比用numpy的Fortran例程要慢)。

使用或学习JavaScript并不是主要问题,如何高效地使用它才是更大的挑战。对于未来的修改(比如计算时间变长,我们想提供结果的聚类等)和开发时间,哪个选项更好呢?

你会怎么做?谢谢。

1 个回答

5

考虑这两种情况:如果计算是在客户端进行的,那么你的客户端会被加载,客户端电脑的计算能力(可能只是个手机或者其他设备)就会发挥作用,这时候其他用户是否同时在网站上进行计算就没那么重要了。

另一方面,如果计算是在服务器端进行的,那么服务器会被加载。在单用户的情况下,计算时间可能会更短(因为服务器通常比普通的客户端电脑更强大),但如果有很多用户同时访问你的服务器,计算时间就会大幅增加。

还有其他方面需要考虑:

  • 如果是在服务器端进行,你需要确保在传输参数或结果的过程中没有泄露私人数据(所以要使用 https 或类似的安全协议)。

  • 在服务器端进行计算可以方便以后升级计算能力(比如可以把任务分配到多个节点上,这样可以缩短计算时间,但服务器的费用可能会更高)。

  • 在客户端进行计算可能允许你在离线状态下完成,前提是有合适的缓存机制。

所以,总的来说,你的问题太宽泛,缺乏具体细节,无法给出明确的答案。

撰写回答