分布式系统架构:可扩展性与性能优化
1. 单体架构及其局限性
在许多应用场景中,常使用如 Java EE、Spring Framework for Java、Python 的 Flask 等服务器技术,这种方式会形成单体架构。随着应用功能不断丰富,单体架构的复杂度会不断增加,所有 API 处理程序都构建在同一个服务器代码体中。这使得快速修改和测试变得困难,而且由于所有 API 实现都在同一个应用服务中运行,执行占用资源会变得非常大。
不过,如果请求负载相对较低,这种应用架构是足够的,服务能够以低延迟处理请求。但当请求负载持续增长时,由于服务的 CPU 和内存容量不足以处理并发请求,延迟会增加,请求处理时间变长,单个服务器会过载并成为瓶颈。
2. 垂直扩展(Scale Up)
当遇到上述瓶颈时,第一种扩展策略通常是对应用服务硬件进行“垂直扩展”。例如,若应用运行在 AWS 上,可以将服务器从配置为 4 个(虚拟)CPU 和 16GB 内存的 t3.xlarge 实例升级到 t3.2xlarge 实例,后者的 CPU 和内存数量翻倍。
垂直扩展很简单,能让许多实际应用在支持更大工作负载方面取得很大进展。但显然,硬件成本会增加,这就是扩展的代价。然而,对于许多应用来说,无论增加多少 CPU 和内存,负载最终都会增长到单个服务器节点无法承受的程度,这时就需要新的策略——水平扩展。
3. 水平扩展(Scale Out)
水平扩展依赖于在架构中复制服务,并在多个服务器节点上运行多个副本。客户端的请求会分布在这些副本上,理论上,如果有 N 个副本和 R 个请求,每个服务器节点将处理 R/N 个请求。这种简单
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



