写点什么

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

  • 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:028895
用户头像

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

关注

评论

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

数千万次下载、百万行开源代码贡献,优麒麟如何打造中国开源操作系统新名片? | 卓越技术团队访谈录

优麒麟

Linux 开源 内核 优麒麟 多端融合

网络IO管理-简单一问一答、多线程方式

Linux服务器开发

多线程 后端开发 Linux后台开发 网络io 服务端开发

优麒麟荣获 CSDN IT 技术影响力之星“年度开源项目”奖项!

优麒麟

Linux 开源 IT 获奖 优麒麟

首个!青藤蜂巢荣获网络安全卓越验证中心&泰尔实验室双认证

青藤云安全

网络安全 青藤

RISC-V开发板关机流程浅析

优麒麟

Linux 技术 risc-v开发板 优麒麟

基调听云直播回顾 | 让业务系统不再深不可测

基调听云

APM 可观测性 智能运维 基调听云

音视频开发—时间戳相关整理(时间基tbr,tbn,tbc)

Linux服务器开发

WebRTC ffmpeg SRS 音视频开发 流媒体服务器开发

Postman中文版客户端

Liam

Jmeter Postman API swagger Mock

数仓建设 | ODS、DWD、DWM等理论实战

五分钟学大数据

数据仓库 4月月更

优麒麟社区 22.04 LTS Beta 版本发布!

优麒麟

Linux 开源 计算机 优麒麟 Beta

ElasticSearch写入流程详解

IT巅峰技术

elasticsearch

传统数据库改造难?华为云GaussDB“五心”解决

华为云数据库小助手

GaussDB

大数据洞察画像自动化实践

网易云信

大数据

你的产品越来越难卖?是时候关注价值流了

基调听云

DevOps APM 智能运维 基调听云

Redis 布隆(Bloom Filter)过滤器原理与实战讲解

码哥字节

布隆过滤器 4月日更 Redis 数据结构 4月月更

蒙牛:以新营销和“更好”的年轻一代共鸣

科技新消息

面试侃集合之 DelayQueue 篇

码农参上

4月月更

TDengine 荣获 CSDN IT 技术影响力之星 “年度开源项目” 、 “年度IT领军人物”奖项

TDengine

数据库 tdengine 开源

蒙牛中国乳业产业园牧场建设项目全面复工

科技新消息

WhiteSource 是否容易受到“Spring4Shell”漏洞 CVE-2022-22965 的影响?

龙智—DevSecOps解决方案

Spring4Shell WhiteSource

快速摆脱在线扩容难的噩梦,华为云数据库有妙计!企业级Redis 包年18元~

华为云数据库小助手

GaussDB GaussDB ( for Redis )

“中国牛”、“天生要强”翻新,2022蒙牛继续大满贯

科技新消息

启动报名2022南京智博会 第十四届南京国际智慧城市、物联网、大数据博览会

InfoQ_caf7dbb9aa8a

物联网

持续精进,性能突破,openGauss 3.0社区版正式发布

Geek_32c4d0

GaussDB(for openGauss) 社区版

AIOps(智能运维)中的指标算法场景分享 | 内附视频&ppt资料

云智慧AIOps社区

人工智能 AI 算法 运维 告警

解决方案体现的是一个公司的深度思考能力

基调听云

APM 智能运维 业务运维 基调听云

精彩回顾 | 金融服务数字化生态的开放与安全

FinClip

金融 数据安全

“天生要强”的迭代和蒙牛体育IP大满贯

科技新消息

2022第十四届南京国际人工智能产品展会

InfoQ_caf7dbb9aa8a

WEB安全:深入反射式dll注入技术

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 漏洞挖掘

安装配置GPU训练环境

十三

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