2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

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

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

关注

评论

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

云原生数据库架构设计指南——基于YashanDB的方案解析

数据库砖家

整合YashanDB数据库与人工智能技术的优势

数据库砖家

苹果访达Finder增强工具TotalFinder 中文版,让效率提升!

Rose

AI 技术在图书馆业务中的应用

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

软件外包公司 AI技术应用 图书馆信息化

流批一体向量化引擎Flex

Apache Flink

大数据 flink 流批一体

构建基于YashanDB数据库的分布式事务管理系统技术分析

数据库砖家

怎样做轻松迁移至YashanDB数据库避免数据丢失

数据库砖家

怎样做数据库负载高峰应对?YashanDB动态调节机制

数据库砖家

怎么才能知道你的Mac的系统性能呢?Geekbench 5性能测试

Rose

YashanDB数据库安装与配置的详细步骤

数据库砖家

2025 年 MQTT 技术趋势:驱动 AI 与物联网未来发展的关键动力

EMQ映云科技

mqtt emqx MCP

Ableton Live 12 Suite v12.2中文版注册机+许可证

Rose

mac苹果设备电量信息实时显示AirBattery免费

Rose

CAD看图软件可以进行标注吗?

在路上

cad cad看图 CAD看图王

YashanDB数据库自动化测试方案

数据库砖家

怎样做YashanDB数据一致性校验,确保业务准确?

数据库砖家

怎样做YashanDB支持高性能事务处理

数据库砖家

三大 Mac 软件下载站,总有一款适合你!

晨光熹微

苹果macOS 26兼容设备 macos 26完整pkg安装程序

Rose

Hype 4 Pro 4.1.19 - 创建动画和交互式的Web内容

Rose

3D数字绘画和雕刻 Mudbox 2025新功能

Rose

如何使用CAD看图软件放大图纸文字?

在路上

cad cad看图 CAD看图王

简单了解一下数据安全定义以及意义

行云管家

网络安全 数据安全 堡垒机

使用YashanDB数据库进行日志数据管理

数据库砖家

怎样做用YashanDB构建企业统一数据管理平台?

数据库砖家

基于生成式物理引擎的AI模型训练方法论

申公豹

人工智能

电线电缆行业MES系统:实现智能制造与全流程追溯

万界星空科技

制造业 mes 万界星空科技mes 电线电缆行业 电线电缆mes

Ae/Pr/视觉特效和转场BCC插件 Boris FX Continuum 2023亮点功能

Rose

优化YashanDB查询逻辑提高响应速度

数据库砖家

Ableton Live 12 Suite for mac v12.2中文:音乐制作软件

晨光熹微

鸿蒙Next仓颉语言开发实战教程:订单列表

幽蓝计划

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