我想创建一个在100毫秒内提供用户界面响应的系统,但这需要几分钟的计算.幸运的是,我可以将它分成很小的部分,这样我就可以将它分发给很多服务器,比方说1500台服务器.查询将被传递给其中一个,然后重新分配到10-100个其他服务器,然后重新分配等等,并且在进行数学运算之后,结果再次传播回来并由单个服务器返回.换句话说,类似于Google搜索.
问题是,我应该使用什么技术?云计算听起来很明显,但1500台服务器需要通过提供特定于任务的数据来为其任务做好准备.可以使用任何现有的云计算平台来完成吗?或者我应该创建1500个不同的云计算应用程序并将它们全部上传?
编辑:专用物理服务器没有意义,因为平均负载将非常非常小.因此,我们自己运行服务器也没有意义 - 它需要是外部提供商的某种共享服务器.
编辑2:我基本上想要总共购买30分钟CPU,而且我愿意花费高达3000美元,相当于每个CPU每天144,000美元.唯一的标准是,这30个CPU分钟分布在1500个响应服务器上.
编辑3:我希望解决方案类似于"使用Google Apps,创建1500个应用程序并部署它们"或"联系XYZ并编写可以部署其服务的asp.net脚本",并根据CPU时间量付费你使用"或类似的东西.
Edit4:低端web服务提供商,在$ 1 /月,提供asp.net实际上解决这个问题 - 我可以创造1500个账户,延迟是确定的(我检查),一切都将是确定 - 除了(!)我需要1500个帐户在不同的服务器上,我不知道任何提供商有足够的服务器能够在不同的服务器上分配我的帐户.我完全清楚服务器之间的延迟会有所不同,有些可能不太可靠 - 但可以通过在不同的服务器上重试来解决这个问题.
编辑5:我刚试了一次并以每月1美元的价格对一家低端网络服务提供商进行了基准测试.如果预加载,他们可以在15ms内完成节点计算并将结果传送到我的笔记本电脑.可以通过在需要实际性能之前不久发出请求来完成预加载.如果节点在15ms内没有响应,则该节点的任务部分可以分发给许多其他服务器,其中一个服务器很可能在15ms内响应.不幸的是,他们没有1500台服务器,这就是我在这里问的原因.
[提前向团体致歉,他们将部分响应空间用于类似元素的事项]
来自OP,Lars D:
我不认为[这个]答案是对问题的回答,因为它并没有让我更接近解决方案.我知道云计算是什么,我知道如果需要,算法可以完美地分成超过300,000台服务器,但由于网络延迟,额外的成本不会带来太多额外的性能.
拉尔斯,
我真诚地为在天真和通用的水平上阅读和回答你的问题而道歉.我希望你能看到问题本身缺乏特定性,特别是原始形式,以及问题的某种不寻常的性质(1)会促使我以同样的方式回答问题.这个问题,以及SO上的这些问题通常来自那些对这个过程进行了很少的思考和研究的人们的假设,这是我相信我(一个大型分布式系统的非实用者)可以帮助你的借口寻求.许多类似的回答(其中一些具有您提供的额外洞察力的好处)以及针对您的许多评论和其他问题表明,我并不是唯一一个有这种心态的人.
(1)不正常的问题:[显然]主要是计算过程(没有提到分布式/复制存储结构),非常高度可兼容(1,500台服务器),进入50毫秒大小的任务,共同提供亚秒响应(?人类消费?).然而,这个过程只需要几次[每天......?].
够回头看!
在实践方面,你可以考虑以下一些有助于提高这太问题(或者将其移动到其他/备用题),从而促进从帮助的领域的专家.
重新发布作为一个独特(更具体)的问题.事实上,可能有几个问题:例如.关于mapreduce进程的[可能]延迟和/或开销不足,当前价格(针对具体的 TOS和卷详细信息),机架对各个供应商的分布式流程的意识等.
改变标题
添加有关您手头的流程的详细信息(请参阅问题和许多响应的说明中的许多问题)
在一些问题中,添加特定于给予供应商或技术的标签(EC2,Azure ......),因为我带来了可能不是非常不安装但有帮助的所有相同的,来自这些公司的代理商的评论
表明你明白你的任务有点高
明确表示您希望得到基础技术的有效分析者的回应(也许还包括那些"熟悉这些技术"的人们,因为除了物理/高能量的人等等,BTW传统的人使用集群而不是云,许多技术和实践相对较新)
此外,如果您发现这样做有助于促进更好的响应,我将很高兴从您那里获取提示(本页其他人隐含的非否决权)删除我的回复.
- 原始回复 -
警告:并非所有流程或数学计算都可以很容易地分成单个部分,然后可以并行运行...
也许您可以从云计算中查看Wikipedia的条目,但要了解云计算并不是唯一允许并行计算的架构.
如果您的流程/计算可以在可并行化的部分中有效地分块,那么您可以查看Hadoop或MapReduce的其他实现,以便对这些并行流程有一个大致的了解.此外,(并且我相信使用相同或类似的算法),还存在商业上可获得的框架,例如来自amazon的EC2.
但请注意,上述系统并不是特别适合快速响应时间.它们与小时(然后一些)数据/数字运算和类似作业相比更好,而不是像你想要并行化的那样的分钟长计算,因此它提供1/10秒的结果.
上述框架是通用的,从某种意义上说它们可以运行大多数任何性质的过程(同样,至少部分可以分块的过程),但是也存在针对特定应用的各种产品,例如搜索或DNA匹配等.特别是搜索应用程序可以具有非常短的响应时间(例如,参见Google)和BTW,这部分地与这样的事实有关,即这些作业可以非常容易且快速地进行并行处理.
对不起,但是你期待的太多了.
问题是您希望仅支付处理能力.然而,你的主要限制是延迟,你希望它是免费的.这没有用.您需要弄清楚您的延迟预算是多少.
仅仅聚合来自多个计算服务器的数据将每个级别花费几毫秒.这里将有一个高斯分布,因此对于1500台服务器,最慢的服务器将在3σ之后响应.由于需要一个层次结构,第二个级别有40个服务器,你将再次等待最慢的服务器.
互联网往返也很快加起来; 这也应该花费20到30毫秒的延迟预算.
另一个考虑因素是这些假设的服务器将大部分时间都闲置.这意味着它们已经通电,吸取电力但却没有产生收入.拥有那么多空闲服务器的任何一方都会关闭它们,或者至少在睡眠模式下只是为了节省电力.