使用云/分布式计算共享处理器时间 - 可能性和方法

发布于 2024-09-14 20:28:47 字数 787 浏览 7 评论 0原文

我的问题是我在开发要求严格的网络应用程序时思考的一个问题,该应用程序将使用服务器将作业单独分配给每台计算机并“共享负载”,从而在网络上显式共享任务。

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

问题

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

场景

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

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

结论

总体:

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

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

  • 您是否会制作一个专门用于运行未指定的非显式任务的操作系统,或者是否可以使用安装在志愿者计算机上的支持云的程序来完成这些任务,这些志愿者愿意共享一定比例的处理器时钟来帮助一般社区)。

  • 如果这是可行的,您会自愿成为更大云的一部分吗?

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

My question is one I have pondered around when working on a demanding network application that would explicitly share a task across the network using a server to assign the job to each computer individually and "share the load".

I wondered: could this be done in a more implicit manner?

Question

Is there a possibility of distributing processor intensive tasks around a voluntary and public network of computers to make the job run more efficiently without requiring the job's program or process to be installed on each computer?

Scenario

Lets say we have a ridiculously intensive mathematics scenario where I am trying to get my computer to calculate every prime factorization break down for all numbers from 1 to 10,000,000 and store them in a database (assuming I have the space and that the algorithms are already implemented in their own class, program, dynamic link library or any runnable process.)

Now it would be more efficient to share this burdening process across a network or on a multi-core super computer, however these are both expensive. To my knowledge you would require a specifically designed program to run the specific algorithm and have the program installed across the said cloud/distributed computing network whilst you have a server keep track of what each computer is doing (ie. what number they are currently calculating the primes for).

Conclusion

Overall:

  • Would it be possible to create a cloud program / OS / suite
    where you could share processor time
    for an unspecified type of process?

  • If so how would you implement it, where would you start?

  • Would you make an OS dedicated to being able to run unspecified non-explicit tasks or would it be possible to do with a cloud enabled program installed on volunteers computers volunteers who were willing to share a percentage of their processor clock to help the general community).

  • If this was implementable, would you be a voluntary part of the greater cloud?

I would love to hear everyone's thoughts and possible solutions as this would be a wonderful project to start.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

著墨染雨君画夕 2024-09-21 20:28:47

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

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

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

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

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

I have been dealing with the same challenge for the last few months.
My conclusions thus far:

The main problem with using a public network (internet) for cloud computing is in addressing the computers through NATs and firewalls. Solving this is non-trivial.

Asking all participants to open ports in their firewalls and configure their router for port-forwarding is generally too much to ask for 95% of users and can pose severe security threats.

A solution is to use a registration server where all peers register themselves and can get in contact with others. Connections are kept open by server and communication is routed through server. There are several variations. However, in all scenario's, this requires vast resources to keep everything scalable and is therefore out of reach for anyone but large corporations.

More practical solutions are offered by commercial cloud platforms like Azure (for .Net) or just the .Net ServiceBus. Since everything runs in the cloud, there will be no problems with reaching computers behind NATs and firewalls, and even if you need to do so to reach "on-premise" computers or those of clients, this can be done through the ServiceBus.

烂柯人 2024-09-21 20:28:47

相信别人的代码可以在您的计算机上运行吗?

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

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

Would you trust someone else's code to run on your computer?

Its more practical to not ask their permission: ;)

I once wrote a programming competition solver written with Haxe in a Flash banner on a friend's fairly popular website...

暮色兮凉城 2024-09-21 20:28:47

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

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

I would not expect a program which allow "share processor time for an unspecified type of process". An prerequisite of sharing processor time is that the task can divided into multiple sub tasks.

To allow automatic sharing of processor time for any dividable task, the key of solution would be an AI program clever enough to know how to divide a task into sub task, which does not seems realistic.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文