2

我的问题是我在处理要求苛刻的网络应用程序时思考过的一个问题,该应用程序将使用服务器在网络上明确共享任务,将作业分别分配给每台计算机并“分担负载”。

我想知道:这可以以更隐含的方式完成吗?

问题

是否有可能将处理器密集型任务分布在自愿和公共的计算机网络上,以使作业更有效地运行,而无需在每台计算机上安装作业的程序或进程?

设想

假设我们有一个非常密集的数学场景,我试图让我的计算机计算从 1 到 10,000,000 的所有数字的每个素数分解分解并将它们存储在数据库中(假设我有空间并且算法已经实现在他们自己的类、程序、动态链接库或任何可运行的进程中。)

现在通过网络或在多核超级计算机上共享这个负担过程会更有效,但是这些都很昂贵。据我所知,您将需要一个专门设计的程序来运行特定算法并在所述云/分布式计算网络上安装该程序,同时您有一个服务器跟踪每台计算机正在做什么(即他们当前正在计算的数量)的素数)。

结论

总体:

  • 是否有可能创建一个云程序/操作系统/套件,您可以在其中为未指定类型的进程共享处理器时间?

  • 如果是这样,您将如何实施它,您将从哪里开始?

  • 您是否会制作一个专用于能够运行未指定的非显式任务的操作系统,或者是否可以使用安装在志愿者计算机上的启用云的程序来做志愿者愿意分享他们的处理器时钟百分比来帮助一般社区的志愿者) .

  • 如果这是可以实施的,你会自愿加入更大的云吗?

我很想听听每个人的想法和可能的解决方案,因为这将是一个很棒的项目。

4

3 回答 3

2

在过去的几个月里,我一直在应对同样的挑战。到目前为止我的结论:

使用公共网络(互联网)进行云计算的主要问题是通过 NAT 和防火墙对计算机进行寻址。解决这个问题并非易事。

要求所有参与者在他们的防火墙中打开端口并配置他们的路由器以进行端口转发通常对于 95% 的用户来说要求过高,并且可能构成严重的安全威胁。

一种解决方案是使用注册服务器,所有对等方都可以在其中注册并与其他人联系。服务器保持连接打开,并且通过服务器路由通信。有几种变体。然而,在所有情况下,这都需要大量资源来保持一切可扩展性,因此除了大公司之外,任何人都无法企及。

Azure(用于 .Net)或仅 .Net ServiceBus 等商业云平台提供了更实用的解决方案。由于一切都在云中运行,因此访问 NAT 和防火墙后面的计算机不会有任何问题,即使您需要这样做以访问“本地”计算机或客户端的计算机,也可以通过 ServiceBus 完成。

于 2010-08-17T13:21:41.473 回答
1

你会相信别人的代码在你的电脑上运行吗?

不征求他们的许可更实际:;)

我曾经在朋友颇受欢迎的网站上的 Flash 横幅中写了一个用 Haxe 编写的编程竞赛求解器……

于 2010-08-17T12:21:31.403 回答
1

我不希望有一个程序允许“为未指定类型的进程共享处理器时间”。共享处理器时间的一个前提是任务可以划分为多个子任务。

为了让任何可分割的任务自动共享处理器时间,解决方案的关键是一个足够聪明的人工智能程序,知道如何将任务划分为子任务,这似乎不现实。

于 2010-08-17T14:32:24.520 回答