写点什么

你真的明白什么是可伸缩性吗?

  • 2007-10-07
  • 本文字数:1241 字

    阅读完需:约 4 分钟

“可伸缩性(Scalability)”是软件厂商常常在新闻稿中用到的一个词(也是人们站在饮水机旁谈论的一个词),但这个词在很多情况下都被误解了。例如,很多人说起可伸缩性的时候其实指的是性能和高可用性。Royans K Tharakan 试图回答“什么是可伸缩性”这个问题,他说:

可伸缩性,简单来说,是以更大的规模来做你现在所做的事。伸展一个 Web 应用的规模在于让更多的人使用你的程序。如果你没法找出方法在伸展规模的同时提高性能,没关系。而且只要你可以伸展规模来处理更大数量的用户,那么有几个单点故障(single point of failure)也没关系。

Royans 解释说如今我们在面对规模伸展的时候有两个选择:

  • 纵向的可伸缩性——在同一个逻辑单元内增加资源来提高处理能力。这样的例子包括在现有服务器上增加 CPU,或者在现有的 RAID/SAN 存储中增加硬盘来提高存储量。
  • 横向的可伸缩性——增加更多逻辑单元的资源,并令它们像是一个单元一样工作。大多数集群方案、分布式文件系统、负载平衡都是在帮助你提高横向的可伸缩性。

架构师们都在为达到线性的可伸缩性而挣扎,目的是让系统产出的增长与系统中投入资源的增长保持稳定的比率。然而,增加资源会导致一般耗费(overhead)的额外增长,因此难以达到线性的可伸缩性。Royans 将之称为“伸缩性因子”,并用它来区分各种类型的伸缩能力:

  • 如果在你扩大规模的时候伸缩性因子保持为常数,这种叫做线性伸缩性
  • 但很可能有些组件并不像其他组件那么适应规模的增长。小于 1.0 的伸缩性因子叫做次线性伸缩性
  • 话说回来,也可能因为增加更多组件而获得更佳的性能(在 RAID 系统中跨多个磁盘的 I/O,当磁盘越多,性能越好)。这种叫做超线性伸缩性 。 不过类似情况很少见。
  • 如果应用程序没有专门为可伸缩性而设计,有可能当规模扩大的时候情况会变糟。这种称为负伸缩性

跟软件开发中的许多事物一样,这里也没有适合一切情形的银弹可以解决你的伸缩性问题。Royans 建议说,“如果你急切需要可伸缩性,向纵向发展可能是最容易的”,但注意“不幸的是纵向伸展会随着你的规模增长而越来越昂贵”,而且“无穷的横向线性伸缩性只是难以达到,而无穷的纵向伸缩性绝不可能”。他继续说:

从另一方面来说,横向可伸缩性并不要求你购买越来越昂贵的服务器。它的本意是用普通的存储和服务器方案来实现规模伸展。不过横向可伸缩性也不便宜。应用必须从建造的最底层就加以考虑才能在多台服务器上运行得像一台服务器一样。

Royans 最后建议应该考虑所有的层次才能解决可伸缩性问题:

对于一个成功的 Web 应用,所有的层次都要同样能够应付规模的增长。包括存储层(集群文件系统、S3 等)、数据库层(分区、联合)、应用层(memcached、scaleout、terracota、tomcat clustering 等等)、Web 层、负载平衡、防火墙等等。比如,如果你没办法实现多个负载平衡控制器来处理未来的网络流量,不管你在 Web 层的横向伸缩性上扔下多少钱,都不会有什么效果。你的流量始终被限制在一个负载平衡控制器能够承受的程度。

查看英文原文: Think you know what scalability is?

2007-10-07 16:028368
用户头像

发布了 225 篇内容, 共 65.5 次阅读, 收获喜欢 50 次。

关注

评论

发布
暂无评论
发现更多内容

腾讯云COS对象存储攻防

火线安全

云原生 云安全 云原生应用

使用APICloud平台实现朋友圈功能

YonBuilder低代码开发平台

html5 css3 APP开发 APICloud JavaScrip

OpenHarmony设备开发环境搭建/源码获取/编译/烧录

拓维信息

OpenHarmony 烧录

限时200位免费!网易云信娱乐社交公开课来啦!

网易云信

娱乐社交

2022年,人工智能和数据发展呈现哪五大趋势?

澳鹏Appen

人工智能 机器学习 深度学习 训练数据

python sorted()函数及sort()方法,零基础Python开发

程序媛可鸥

Python 程序员 面试

自从用了这个APP,我的身体状况....

IT蜗壳-Tango

极客时间 IT蜗壳

红黑树的原理以及实现

Linux服务器开发

数据结构 B+树 红黑树 Linux服务器开发 Linux后台开发

Python 实现 ZeroMQ 的三种基本工作模式,贼好用的Python学习路线集合

程序媛可鸥

Python 程序员 面试

阿里云 OSS对象存储攻防

火线安全

云安全 阿里云;

微软云对象存储攻防

火线安全

云原生 云原生应用 云安全攻防 云安全研究

关于帮助中心,你需要知道的一切

小炮

微博评论高性能高可用架构设计

随欣所遇

架构训练营5期

python pandas loc布尔索引(指定条件下的索引),你花了多久弄明白架构设计

程序媛可鸥

Python 程序员 面试

Python 实现七大排序算法,面试竟然被这31道Python基础题难倒了

程序媛可鸥

Python 程序员 面试

网络安全 kali Web安全之CSRF攻击

学神来啦

网络安全 CSRF WEB安全 kali kali Linux

低调不了!最佳体验尽在 Erda 2.0 版本

尔达Erda

云计算 云原生 设计 发布 界面改版

《第四期(2021-2022)传统行业云原生技术落地调研报告——金融篇》重磅发布!

York

容器 DevOps 云原生 金融科技 金融行业

python Excel数据表格转为HTML网页数据表格,阿里快手拼多多等7家大厂Python面试真题

程序媛可鸥

Python 程序员 面试

案例研究:亚马逊广告使用 PyTorch 和 Amazon Inferentia 扩展广告处理模型

亚马逊云科技 (Amazon Web Services)

模型 PyTorch

golang并发控制设计中的“流式模型”

不登山的小鲁

golang

低代码如何助力化学材料行业数字化升级?

TOBESOFT特碧软件

低代码 数字化转型 MES系统 制造业 TOBESOFT

【模块五】设计微博系统中”微博评论“的高性能高可用计算架构

yhjhero

架构 #架构训练营

Python 下载的9种方法,Python开发技巧

程序媛可鸥

Python 程序员 面试

欧拉的奇异之旅·共赴开源时代

脑极体

使用 CachedNetworkImage 实现图片离线缓存

岛上码农

flutter ios Android开发 移动端开发 3月月更

python 列表 remove()函数使用详解,最新手淘Python高级面试题及答案

程序媛可鸥

Python 程序员 面试

2021物联之星评选结果重磅出炉!AIoT产业核心玩家已经浮现

dgiot

Cloud RedTeam视角下元数据服务攻防实践

火线安全

云原生 云安全

OceanBase 在线体验环境,现已上线!

OceanBase 数据库

oceanbase OceanBase 社区版 在线体验站

条码WMS系统与ERP接口实现方法

源字节1号

后端开发 WMS系统 ERP接口

你真的明白什么是可伸缩性吗?_架构_Gavin Terrill_InfoQ精选文章