前言
在无状态服务下,扩容可能是迄今为止效果最明显的增加并发量的技巧之一,但扩容的最大问题就是成本。
垂直扩容(纵向扩展)
提高单个服务(服务器、数据库)自身能力
但会增大单个服务中其他软件设施的依赖与管理、服务内部复杂度
水平扩容(横向扩展)
增加更多服务成员
但会增加网络、数据库 IO 开销、管理多个服务器的难度
对数据库的扩容方案
- 读操作多:采用垂直扩容方案(redis、CDN)。采用水平扩容没有太大的意义,因为性能的瓶颈不在写操作,所以不需要实时去完成,用更多的服务器来分担压力性价比太低。所以针对单个系统去强化它的读性能就可以了
- 写操作多:采用水平扩容方案(HBase、增加服务器、数据库)。也可以考虑垂直扩容提升单个数据库的性能,但会发现资金与硬盘的 IO 能力是有限的,所以需要增加更多数据库来分担写的压力。