QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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

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

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

关注

评论

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

一文让你通俗易懂信息安全与数据安全的区别

行云管家

网络安全 信息安全 数据安全 数字智能

Smooze Pro for Mac(鼠标增强工具专业版)v2.1.20激活版

小玖_苹果Mac软件

全球人形机器人领域深度调研和行业前瞻2025

机器人头条

大模型 人形机器人 具身智能

WebGL 开发医疗模型的流程

北京木奇移动技术有限公司

数字孪生 软件外包公司 webgl开发

文档解析技术发展回顾与路径思考

合合技术团队

人工智能 科技 AIGC 文档解析

提升测试效率:2024 年值得关注的 UI 自动化测试工具推荐

测试人

软件测试

神奇的云管理-企业玩转云端的魔法棒

行云管家

云计算 云管平台 云管理

15款国产大模型透明度测评,腾讯混元评分稳居榜首

极客天地

Logic Pro X for mac(mac苹果版音乐创作软件)v 11.1.1 直装免激活版

小玖_苹果Mac软件

KaiwuDB 与开放原子开源基金会完成 KWDB 项目捐赠签约

KaiwuDB

数据库

Smooze Pro for Mac(鼠标增强工具专业版)v2.1.20激活版

小玖_苹果Mac软件

【送礼品】诚邀体验SoFlu-JavaAl开发助手,重塑AI编码价值

飞算JavaAI开发助手

程序员 开发工具 Java. AI编程

AI 助力游戏开发中的常用算法实现

腾讯云代码助手

Project Office X Pro for Mac(项目管理软件)v1.1.11中文激活版

小玖_苹果Mac软件

MacCleanse for Mac(mac系统清理垃圾软件)v13.0.1激活版

小玖_苹果Mac软件

淘宝商品详情数据的获取渠道与稳定API的保障

代码忍者

淘宝API接口 淘宝评论API

实力上榜!云起无垠荣登“ISC安全大模型领域创新能力百强”

云起无垠

WebGL的3D展示开发框架

北京木奇移动技术有限公司

3D模型 软件外包公司 webgl开发

ACDSee Photo Studio for Mac(老牌数字图像处理软件)v9.3.2859激活版

小玖_苹果Mac软件

Desktop Goose for Mac(抖音桌面宠物鹅)v0.22激活版

小玖_苹果Mac软件

中关村科技企业党建与发展大会:星辰天合 CEO 胥昕畅谈专精特新之路

XSKY星辰天合

从虚拟到现实:AI与AR/VR技术如何改变体验经济?

天津汇柏科技有限公司

增强现实 VR虚拟现实 AI 人工智能

夜莺监控 v8 第一个版本来了,开始做有意思的功能了

巴辉特

夜莺监控 开源监控

全闪时代已至,您在担心 SSD 寿命吗?

XSKY星辰天合

#全闪存储

webgl开发3D模型的优化

北京木奇移动技术有限公司

数字孪生 软件外包公司 webgl开发

3分钟完成产品网页搭建

腾讯云代码助手

如何在中心化交易所上币?

区块链项目一站式包装孵化

Illustrator 2024 for Mac(AI2024领先的矢量图形软件)v28.6.0中文激活版

小玖_苹果Mac软件

Beyond Compare 4 for Mac(文件同步对比软件)v4.3.7(25118)中文修复版

小玖_苹果Mac软件

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