【问题标题】:Reasons for NOT scaling-up vs. -out?不扩大规模与扩大规模的原因是什么?
【发布时间】:2010-12-12 10:57:36
【问题描述】:

作为一名程序员,我每隔几年就会做出革命性的发现。我要么领先于曲线,要么在相位中落后约 π。我学到的一个深刻教训是,向外扩展并不总是更好,通常最大的性能提升是在我们重新组合和扩展时。

您有什么理由进行横向扩展与向上扩展?价格、性能、愿景、预计使用量?如果是这样,这对您有何帮助?

我们曾经扩展到数百个节点,这些节点会将必要的数据序列化并缓存到每个节点,并在记录上运行数学过程。需要(交叉)分析数十亿条记录。这是采用横向扩展的完美业务和技术案例。我们一直在优化,直到 我们在 26 小时挂钟中处理了大约 24 小时的数据。长话短说,我们租用了一个巨大的(当时)IBM pSeries,在上面安装了 Oracle Enterprise,为我们的数据编制索引,并最终在大约 6 小时内处理相同的 24 小时数据。我的革命。

很多企业系统都是 OLTP 并且数据没有分片,但许多人的愿望是集群或横向扩展。这是对新技术或感知性能的反应吗?

当今的一般应用程序或我们的编程矩阵是否更适合横向扩展?我们/应该在未来始终考虑这一趋势吗?

【问题讨论】:

  • 主观和论证。
  • 如果你去掉最后一行,这确实是一个好问题。普遍的看法是,在 F5 后面投入更多硬件将解决所有问题
  • 同意争论。我已经调整了我的问题。

标签: scalability


【解决方案1】:

Jeff Atwood 的博文 Scaling Up vs. Scaling Out: Hidden Costs 有一些有趣的观点需要考虑,例如软件许可和电力成本。

【讨论】:

    【解决方案2】:

    横向扩展最适合embarrassingly parallel 问题。这需要一些工作,但许多 Web 服务适合该类别(因此目前很受欢迎)。否则你会遇到Amdahl's law,这意味着要获得速度,你必须扩大规模而不是扩大规模。我怀疑你遇到了这个问题。此外,IO 绑定操作也倾向于很好地横向扩展,因为等待 IO 增加了可并行化的百分比。

    【讨论】:

    • 阿姆达尔定律(即应用程序的哪一部分实际上是可并行化的,而不是需要按顺序完成的部分)确实是一个重要的组成部分。但这种观点往往过于理论化,在很多情况下,在你没有并行的事情要做之前,通信成本就会让你丧命......
    【解决方案3】:

    毫不奇怪,这完全取决于您的问题。如果您可以轻松地将其划分为不怎么交流的子问题,那么横向扩展可以提供微不足道的加速。例如,在 1B 网页中搜索单词可以通过一台机器搜索 1B 页面来完成,或者由 1M 台机器每台搜索 1000 个页面来完成,而不会显着降低效率(因此速度提高了 1,000,000 倍)。这就是所谓的“尴尬并行”。

    但是,其他算法确实需要子部分之间更密集的通信。您需要交叉分析的示例是一个完美的示例,说明通信通常会淹没添加更多框的性能增益。在这些情况下,您需要将通信保持在(更大的)盒子内,通过高速互连,而不是像 (10-)Gig-E 这样“常见”的东西。

    当然,这是一个相当理论的观点。其他因素,如 I/O、可靠性、易于编程(一台大型共享内存机器通常比集群少得多)也会产生很大的影响。

    最后,由于使用廉价商品硬件横向扩展(通常是极端的)成本优势,集群/网格方法最近吸引了更多(算法)研究。这使得已经开发出新的并行化方法,可以最大限度地减少通信,从而在集群上做得更好——而众所周知,这些类型的算法只能在大型铁机器上有效运行......

    【讨论】:

    • 是的,在我的示例中,通信和延迟最终成为问题。有趣的是,不是因为串扰,而是为了避免 DB 命中而进行处理的简单平面数据表示。
    【解决方案4】:

    因为放大

    • 最终受限于您实际可以购买的盒子尺寸
    • 可能会变得非常不划算,例如一台 128 核和 128G 内存的机器比 16 台 8 核和 8G 内存的机器贵得多。
    • 有些事情不能很好地扩展 - 例如 IO 读取操作。
    • 通过横向扩展,如果您的架构正确,您还可以实现高可用性。一台 128 核、128G 内存的机器非常昂贵,但拥有第二台冗余的机器是敲诈勒索的。

    在某种程度上也是如此,因为这就是 Google 所做的。

    【讨论】:

    • 我同意,但可悲的是,人们经常使用蛮力(阅读更多硬件),更好的设计会创造奇迹。将应用程序构建为无状态的,这样您就不必进行粘性或分布式会话可以显着降低硬件要求
    • 扩大规模是一个简单的解决方案——暂时;开发人员的时间很昂贵,而且您的开发人员可能有更好的事情要做——所以在某种程度上,购买更大的盒子是很有吸引力的;最终它变得不经济。
    • 性价比高? 6x 戴尔 4c24g = 36,168 美元; 1 个戴尔 24c128g = 20,571 美元
    • 在单台机器上扩大规模仍然构成 SPOF(单点故障),尽管在发生故障时影响更大。
    • 我将扩展和高可用性分开。我可以放置一个无法扩展的 HA 环境,反之亦然。
    猜你喜欢
    • 1970-01-01
    • 2021-05-19
    • 2020-05-01
    • 2013-10-12
    • 1970-01-01
    • 1970-01-01
    • 2017-04-24
    • 2010-12-09
    • 2012-11-07
    相关资源
    最近更新 更多