HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

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

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

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

关注

评论

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

多点 x TiDB:在出海多云多活架构中,多点运维 TiDB 的实战分享

TiDB 社区干货传送门

实践案例 社区活动

天翼AI云电脑重塑未来工作方式的利器,邀您5月25日相聚福州!

编程猫

多点数千套集群实践:从“MySQL 又不是不能用,为什么选择 TiDB?”到“能用 TiDB 就不用 MySQL”

TiDB 社区干货传送门

实践案例 社区活动 管理与运维 TUG 话题探讨 数据库前沿趋势

开启未来出行新纪元:44.8英寸超视界9K疾速屏智能座舱,高端车载显示技术引领用户体验新变革!

爱极客侠

如何通过算法触达,高效唤醒沉睡会员?奇点云“向价值进发”直播回顾

先锋IT

聊聊Python多进程

我再BUG界嘎嘎乱杀

Python 编程 后端 多进程 开发语言

记TiDB学习之路

TiDB 社区干货传送门

社区活动

启航TiDB:调试环境搭建(vscode+wsl+pd)

TiDB 社区干货传送门

开发语言 TiDB 源码解读 应用适配

2024年API趋势,哪些API将增加市场份额?

幂简集成

API

analyze 采样率是怎么算出来的(v6.5.3)

TiDB 社区干货传送门

TiDB 源码解读 6.x 实践

Introducing Wallys DR5018M: Achieving Up to 1.5Gbps in Industrial WiFi6 Applications

wallyslilly

ipq5018

冲刺PCTA

TiDB 社区干货传送门

学习&认证&课程

全球最大图片社交网站Pinterest为什么会放弃HBase而改用TiDB

TiDB 社区干货传送门

社区活动

FT-FMEA融合混沌演练,零售运营系统韧性架构在线验证实践

华为云开发者联盟

开发 华为云 华为云开发者联盟 确定性运维 企业号2024年5月PK榜

数据库与人工智能的关系

悦数图数据库

图数据库

如何通过店铺集群实现高效库存规划

第七在线

NumPy 分割与搜索数组详解

EquatorCoco

数组 Numpy

通过考证深入了解TiDB

TiDB 社区干货传送门

社区活动 数据库架构选型 学习&认证&课程

TiDB Cloud x Datadog 集成案例

TiDB 社区干货传送门

应用适配

TiDB x KubeBlocks 集成案例

TiDB 社区干货传送门

管理与运维

使用 TiDB Vector 搭建 RAG 应用 - TiDB 文档问答小助手

TiDB 社区干货传送门

版本测评 新版本/特性解读 数据库前沿趋势

聊聊缺陷逃逸率

老张

质量保障 缺陷管理 缺陷预防

IPQ5322 and IPQ9531-Technical comparison and application analysis

wifi6-yiyi

ipq5322

【TiDB 社区升级互助材料】TiDB 版本升级最全材料包

TiDB 社区干货传送门

版本升级

【论文速读】|大语言模型是少样本测试员:探索基于LLM的通用漏洞复现

云起无垠

云计算技术架构揭秘与发展

Finovy Cloud

云计算 云计算架构

深入理解Python中的深拷贝与浅拷贝

我再BUG界嘎嘎乱杀

Python 编程语言 后端 开发语言 深拷贝与浅拷贝

故障排查难?xpu_timer 让大模型训练无死角!

可信AI进展

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