我应该在哪里进行繁重的计算?客户端或服务器端

Where should I make heavy computations ? Client or server side?

本文关键字:计算 客户端 服务器端 在哪里 我应该      更新时间:2023-09-26

我有一个桌面应用程序,用Python制作,带有PyQT和scipy/numpy。该程序的目的是,在给定一些数据的情况下,为微分方程找到最佳参数集。

因此,我们使用 numpy 的数值求解器和优化例程。计算非常容易,但也很快(最长 30 秒),但如果我们使用自定义参数太空探索,可能会变得更长(几个小时)。

下一步是"把它放在云上",这样用户就不必费心如何安装应用程序。因此,我们想要创建一个 Flask 应用程序,使用 d3 或类似的东西显示.js。

我从来没有做过任何JS,所以我想知道什么是最好的架构:

  • 用户上传他的数据,它们被发送到服务器上,它执行计算并将它们发回 => 我们可以在服务器上使用 SCIPY/NUMPY,但是同时连接太多可能会关闭一切。

  • 用户上传他的数据,它们在客户端用 JavaScript 处理=>服务器上没有更多的问题,但我必须发现一种新的语言并自己实现科学计算(我认为它会比 numpy 的 Fortran 例程更长)

使用/学习JS不是真正的问题,高效使用它更成问题。这是未来修改(计算时间更长,我们希望提供结果聚类......)和开发时间的最佳选择。

你会怎么做?谢谢。

考虑这两种情况:如果计算是客户端的,那么你的客户端就会被加载,客户端计算机(可能只是一部手机或其他什么)的计算能力就会发挥作用,并且站点的其他用户是否同时进行计算并不重要。

另一方面,如果计算是在服务器端完成的,那么你的服务器就会被加载,单用户情况下的计算时间可能更小(因为你的服务器可能比普通客户端计算机更强大),但如果你有很多用户同时访问你的服务器,它会急剧下降。

其他方面也发挥作用:

  • 如果在服务器端执行此操作,则应确保在传输参数或结果的过程中不会泄露任何私有数据(因此请使用https或类似方法)。

  • 在服务器端执行此操作允许以后升级计算能力(可以将任务拆分到多个节点上,以便具有更小的计算时间而具有更高的服务器成本)。

  • 在客户端执行此操作可能允许在给定适当的缓存机制的情况下离线执行此操作。

所以,总而言之,

你的问题太宽泛了,而且不够明确,无法给出明确的答案。