2

天,

我正在阅读“每个软件架构师都应该知道的 97 件事”(净化亚马逊链接)一书中的Quantify项目,它让我想知道如何量化可扩展性。

我为一家主要的英国广播公司设计了两个系统,用于:

  1. 检测传入 HTTP 请求的来源国,或
  2. 确定适合手机屏幕几何形状和当前连接类型的视频格式。

这两种设计都需要提供可扩展性。

我对这两个系统的设计都是在缓存负载平衡层之后水平扩展的,这些层用于处理这两个服务的传入请求,并将它们分布在多个实际提供服务本身的服务器上。服务容量的初始增加是通过在负载平衡层后面添加更多服务器来实现的,因此称为水平可扩展性。

但是,如果负载平衡层开始难以应对传入的请求流量,则此架构的可扩展性会受到限制。

那么,是否可以量化可扩展性?是否可以估计您可以添加多少额外的服务器来水平扩展解决方案?

4

6 回答 6

3

我认为这归结为在给定上下文中可扩展性意味着什么,因此答案将取决于它

我已经看到了对尚不存在的事物的需求的可扩展性。例如,一个新的贷款申请工具,专门呼吁未来需要在 iPhone 和其他移动设备上工作。

我还看到用于描述世界不同地区更多数据中心和 Web 服务器的潜在扩展以提高性能的可扩展性。

如果未来有一个已知的目标,上述两个例子都是可以量化的。但是,如果确实没有已知的目标或计划使其成为移动目标,则可扩展性可能无法量化。

于 2009-07-06T16:18:52.637 回答
2

我认为在某些情况下这是可能的 - 例如,可以根据用户数量、并发请求数量、响应时间的平均值和标准偏差等来量化 Web 应用程序的可扩展性。您还可以了解带宽的一般数字和存储、每秒事务和恢复时间(用于备份和 DR)。

您还可以经常在应用程序域内给出数字 - 假设系统支持评论,您可以量化它需要能够存储的评论数量的数量级。

然而,值得注意的是,并非所有重要的事情都可以衡量,也不是所有可以衡量的事情都很重要。:-)

于 2009-07-06T16:24:45.853 回答
1

可扩展性的正确度量(不是最简单的;-)是一组曲线,定义了随着负载增长(例如就每秒查询而言,但其他度量(例如所需的总数据吞吐量)也可能适用于某些应用程序)。决策者通常会要求将这种准确但复杂的测量归结为几个关键数字(几条曲线中的一些曲线上的特定点),但我总是试图协商更准确而不是更容易理解的测量关键指标!-)

于 2009-07-06T16:22:24.097 回答
1

当我想到可扩展性时,我会想到:

  • 性能 - 应用程序对给定负载的响应速度
  • 应用程序可以增长到多大的负载以及单位成本(如果每台服务器包括软件、支持等)
  • 您可以多快扩展应用程序以及在高峰期使用量需要多少缓冲区(我们可以在 2-3 小时内增加 50% 的带宽,并且需要比计划的高峰期使用量增加 30% 的缓冲区)

冗余是另一回事,但也应包括在内并加以考虑。

于 2009-07-07T13:34:08.077 回答
1

“系统应扩展以保持成本/用户的 X 线性关系”。

于 2009-10-13T17:41:14.233 回答
0

这是一种方法:

“假设单个处理器每秒可以处理 100 个工作单位……”

来自http://www.information-management.com/issues/19971101/972-1.html

于 2009-07-06T16:17:58.457 回答