写点什么

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

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

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

关注

评论

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

鸿蒙 Flutter plugin开发详细解释

flfljh

鸿蒙

一文彻底弄懂Spring IOC 依赖注入

不在线第一只蜗牛

spring

Web安全知识记录

天翼云开发者社区

网络安全 Web

蓝卓获权威认证 被评为IDC数字工厂领导者

财见

英特尔携手龙蜥,共筑未来操作系统

OpenAnolis小助手

操作系统 龙蜥社区 龙蜥操作系统大会

【JIT/极态云】技术文档--反馈提醒

武汉万云网络科技有限公司

前端 低代码 `后端

破解知识管理难题,天润融通大模型如何提高知识库管理效率?

天润融通

云桌面和云电脑有何区别?云桌面有什么作用

青椒云云电脑

云桌面 云电脑

探讨AI 应用推广和“车用场景建设”提案,龙蜥社区召开两大委员会月度会议

OpenAnolis小助手

开源 操作系统 龙蜥社区 龙蜥社区技术委员会 龙蜥社区运营委员会

软件测试学习笔记丨Vue常用指令-输入绑定(v-model)

测试人

软件测试

覆盖80%业务场景,原生鸿蒙出行、教育行业样板间专区上线

最新动态

软件测试学习笔记丨Vue常用指令-条件渲染(v-if)

测试人

软件测试

桌面云服务:未来办公新时代的探索

青椒云云电脑

桌面云 云桌面

交易所开发:构建安全、高效、可靠的数字资产交易平台

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

云教室解决方案提供商-青椒云

青椒云云电脑

云教室 云教室解决方案

AI 容器建设项目正式启动!龙蜥社区加速 AI 原生 OS 技术创新

OpenAnolis小助手

开源 AI 操作系统 龙蜥社区

共筑安全防线,龙蜥社区「操作系统及软件供应链安全MeetUp」邀您报名

OpenAnolis小助手

安全 操作系统 龙蜥社区 龙蜥社区安全联盟 龙蜥社区走进系列

化学ppt课件怎么做?这个在线ppt工具不容错过!

职场工具箱

效率工具 职场 PPT AIGC AI生成PPT

容器、容器云和容器化PaaS平台之间到底是什么关系?

天翼云开发者社区

云计算 容器服务

活动回顾|体验技术大会暨OpenTiny技术交流茶话会圆满结束~

OpenTiny社区

web开发 OpenTiny TinyVue TinyEngine 前端开源

第二届全国高校软件测试开发教育峰会在韩山师范学院隆重举办!

霍格沃兹测试开发学社

手把手教你编写自定义Categraf插件

天翼云开发者社区

Categraf

Hadoop作业调度优化,提升数据处理速度的杀手锏!

敏捷调度TASKCTL

hadoop cloudera 集群搭建 HDFS写入 HDFS读取

AI助力制造工艺|利用机器学习实现泡沫浮选工艺优化

Altair RapidMiner

AI 数据分析 altair 制造业数字化 RapidMiner

TON链上的代币开发与小程序开发:模式与要求

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

云桌面和云电脑有何区别?云桌面有什么作用

青椒云云电脑

云桌面 云电脑

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