0
-1

简述伸缩性

jametong 发表于 2010年04月11日 14:57 | Hits: 3253
Tag: Translation | My Reading | scalability | scale-out

本文翻译自Werner Vogels(CTO of Amazon),一篇简单的介绍伸缩性(scalability)的文章,其中涉及伸缩性的定义,以及alway-on service系统中伸缩性的定义,还涉及伸缩性可能遭遇的问题,以及如何避免这些问题的简单描述.

原文链接:A Word on Scalability

简述伸缩性
ByWerner Vogels,译者: Jametong

伸缩性是一个经常被使用的神秘咒语,用来表明某些东西设计糟糕.你可能经常会听到讨论以“但是,它无法扩展”这样一个魔咒结束争论.这通常表明,开发人员陷入了这样一种情境,他们的系统架构限制了他们的服务增长的空间。如果伸缩性以积极的面貌出现的话,它通常表达一种期望的属性“我们的平台需要好的伸缩性”。

我们认为的伸缩性到底是什么呢?当我们增加一个系统中的资源,并能获取与增加的资源保持适当的比例关系的性能提升,我们就认为这个服务具备了伸缩性。 性能提升通常意味着提供更多单位的服务,但是有时它也意味着处理更大单元的工作量,比如当数据集出现增长。

在分布式系统中,还有其他理由需要增加资源到系统中;例如提高所提供服务的可靠性。引入冗余是避免故障的第一道重要防线。对于一个永远在线的服务来讲,伸缩性意味着为促进冗余而增加的资源不会导致相应的性能损失。

为什么实现伸缩性如此之难?因为伸缩性不能是一种事后的思考。它需要在应用或平台设计时就考虑其伸缩性,例如考虑增加资源确实会带来性能提升,或者引入冗余是否会给系统性能带来负面影响。很多在低负载小数据集上可以运转良好的算法,但是当请求频率增加、数据集增长或分布式系统的节点数增长的时候,其成本可能会发生爆炸性的增长。

第二个问题是,通过向外扩展的方式增长的系统通常会导致出现系统的异构性。随着新一代硬件的出现,更大或更强的资源变得越来越经济实用,或者部分资源的地理位置相距越来越远,系统中增加的资源会越来越多样化。异构性意味着部分节点将比系统中的其他节点处理的更快或者可以存储更多的数据,依赖于同质性的算法要么会在特性条件下出现崩溃,要么无法充分利用新增的资源。

实现好的伸缩性,还可能吗?完全可能,但是只有当我们在进行系统架构设计时充分考虑伸缩性时才可能实现。对于我们将要构建的系统,我们必须小心考察我们希望系统超哪个方向增长,哪些地方需要冗余,并且确保架构师明白在哪些条件下可以使用哪些工具,以及常见的陷阱都有哪些。

No related posts.

原文链接: http://item.feedsky.com/~feedsky/dbthink/~8068730/368254246/6175071/1/item.html

-1     0

我要给这篇文章打分:

可以不填写评论, 而只是打分. 如果发表评论, 你可以给的分值是-5到+5, 否则, 你只能评-1, +1两种分数. 你的评论可能需要审核.

评价列表(1)

  • -1 youli voted at 2010-04-11 17:28:17