天儿真好,
我正在阅读“每个软件架构师应该知道的97件事”(Quantify)一书中的sanitised Amazon link项,它让我想知道如何量化可扩展性。
我为一家大型英国广播公司设计了两套系统,用于:
两种设计都需要提供可扩展性。
我对两个系统的设计都可以在缓存负载平衡层后面水平扩展,这些层用于处理这两种服务的传入请求,并将它们分布在实际提供服务本身的多个服务器上。服务容量的初始增加是通过在负载平衡层后面添加更多服务器来实现的,因此称为水平可伸缩性。
此架构的可扩展性存在限制,但是如果负载平衡层开始难以处理传入的请求流量。
那么,是否可以量化可扩展性?是否可以添加多少额外服务器以估算水平扩展解决方案?
答案 0 :(得分:3)
我认为这取决于可伸缩性在给定上下文中的含义,因此答案将是 取决于 。
我已经看到了对那些根本不存在的东西的需求的可扩展性。例如,一个新的贷款申请工具,特别要求将来需要在iPhone和其他移动设备上工作。
我还看到可扩展性用于描述世界不同地区更多数据中心和Web服务器的潜在扩展,以提高性能。
如果存在未来的已知目标,则上述两个示例都可以量化。但是,如果确实没有已知的目标或计划使其成为移动目标,则可扩展性可能无法量化。
答案 1 :(得分:2)
我认为在某些情况下这是可能的 - 例如,Web应用程序的可伸缩性可以根据用户数量,并发请求数量,响应时间的平均值和标准偏差等来量化。您还可以进入一般情况带宽和存储的数量,每秒的事务数和恢复时间(用于备份和DR)。
您还可以经常在应用程序域中给出数字 - 假设系统支持评论,您可以量化它需要存储的评论数量的数量级。
但值得注意的是,并非所有重要的事情都可以衡量,而且所有可衡量的事项都不重要。 : - )
答案 2 :(得分:1)
适当的可扩展性度量(不是最简单的;-)是一组曲线,定义了所需的资源(CPU,内存,存储,本地带宽......)和性能(例如延迟),作为负载增长(例如,就每秒查询而言,但是诸如所需的总数据吞吐量之类的其他度量也可能适合于某些应用)。决策者通常会要求将这些准确但复杂的测量结果归结为几个关键数字(某些曲线上的特定位置),但我总是试图进行更准确的协商,而不是简单易懂的测量方法。关键指标! - )
答案 3 :(得分:1)
当我想到可扩展性时,我想到:
冗余是另一回事,但也应包括在内并予以考虑。
答案 4 :(得分:1)
“系统应按比例缩放,以保持成本/用户的X线性关系”。
答案 5 :(得分:0)
这是一种方式:
“假设一个处理器每秒可以处理100个工作单元......”
来自http://www.information-management.com/issues/19971101/972-1.html