常见问题
有时由于硬件设备的限制,单纯软件上的性能优化已经无法提升系统性能?
这时需要改造系统的架构体系,提升系统的扩展能力,组合多个只具备低处理能力的硬件设备,从而达到一个具有高处理能力的系统。
可伸缩性
当增加计算机资源时(例如CPU、内存、存储容量或I/O带宽),程序的吞吐量或者处理能力能相应地增加。
例如当业务量小的时候,软件系统运行在一台服务器上,当业务量大的时候,可以通过增加服务器,或增加单台服务器上锁运行的软件系统的个数了来提高其性能,从而达到不需要对软件系统本身进行编程级的修改或变更。
如何实现
纵向伸缩scale up
提升单台机器配置
适合短期处理问题
优点
- 维护简单
缺点
- 高端设备费用贵
- 单台机器的处理能力总是有限的
- 故障影响大
横向伸缩scale out
增加机器来提升系统的性能
最完美的情况是线性扩展,负载扩大N倍,机器也增加N倍来保持性能不变
优点
- 成本低
- 故障影响小
缺点
- 节点增多,架构整体复杂度提高
- 集群维护难度加大,维护成本更高
可伸缩性与可扩展性
- 可伸缩性:对规模的扩展
- 可扩展性:对变化的扩展