我的问题是我在处理一个要求很高的网络应用程序时思考过的一个问题,该应用程序将在网络上显式地共享一个任务,使用服务器将任务分配给每台计算机,并“分担负载”。
我想知道:能否以一种更含蓄的方式来实现这一点?
问题
是否有可能在自愿和公共的计算机网络周围分配处理器密集型任务,使作业更有效地运行,而不要求在每台计算机上安装作业的程序或进程?
场景
假设我们有一个非常密集的数学场景,我试图让我的计算机计算所有数字的每一个素数分解(从1到1,000,000),并将它们存储在一个数据库中(假设我有这个空间,并且算法已经在它们自己的类、程序、动态链接库或任何可运行的过程中实现)。
现在,通过网络或在多核超级计算机上共享这个负担过程将更加有效,然而这两者都是昂贵的。据我所知,您需要一个专门设计的程序来运行特定的算法,并在所述云计算/分布式计算网络中安装该程序,而您有一个服务器,跟踪每台计算机正在做什么(即。他们目前计算素数是多少)。
结论
总体而言:
如果是
我想听听大家的想法和可能的解决方案,因为这将是一个很好的项目开始。
发布于 2010-08-17 13:21:41
在过去几个月里,我一直在应对同样的挑战。我迄今的结论是:
使用公共网络(互联网)进行云计算的主要问题是如何通过NAT和防火墙来解决计算机的问题。解决这个问题是很重要的。
要求所有参与者在防火墙中打开端口并为端口转发配置他们的路由器通常要求95%的用户过多,并可能造成严重的安全威胁。
一种解决方案是使用注册服务器,其中所有的对等点注册自己,并可以与其他人取得联系。连接由服务器保持打开,通信通过服务器路由。有几个变体。然而,在所有场景中,这都需要大量的资源来保持所有的可伸缩性,因此,除了大公司之外,任何人都无法获得。
更实用的解决方案是由商业云平台提供的,比如Azure (用于.Net)或.Net ServiceBus。由于一切都运行在云中,所以在NAT和防火墙后面访问计算机不会有任何问题,即使您需要这样做,也可以通过ServiceBus来访问“前提下”计算机或客户端计算机。
发布于 2010-08-17 12:21:31
你会相信别人的代码会在你的电脑上运行吗?
更实际的做法是不征求他们的同意:)
我曾经在一个朋友相当受欢迎的网站上用Flash横幅写了一个与Haxe一起写的编程竞赛解决者.
发布于 2010-08-17 14:32:24
我不希望有一个允许“共享处理器时间用于未指定类型的进程”的程序。共享处理器时间的先决条件是将任务划分为多个子任务。
要使任何可分任务的处理器时间自动共享,解决方案的关键是一个聪明的AI程序知道如何将任务划分为子任务,这似乎是不现实的。
https://stackoverflow.com/questions/3502154
复制相似问题