一个单体应用的扩容之路
一个单体应用的扩容之路
一、前言
对于一个初期的系统来说,功能较少,为了能够快速上线进行推广,此时一般会单体应用架构来进行开发。此时应用系统和数据库很可能都是部署在同一台服务器上。如下图所示。
对于这样的系统,经过一段时间的使用后,用户越来越多,网站的流量会增加,单台服务器无法处理那么大的访问流量。此时会使用分而治之的思想来解决问题。
- 第一步,通过简单扩容来解决(如垂直扩容、水平扩容)。
- 第二步,第一步搞不定,则通过水平拆分/垂直拆分应用/数据来提升系统性能。
- 第三步,第二步还搞不定,那么根据现有系统特性,从架构层面进行重构甚至是重新设计(推倒重来)。
对于系统设计,理想情况下应支持线性扩容/弹性扩容,即在系统遇到瓶颈时,只需增加机器就能解决问题,如降低延迟提高吞吐量,从而实现扩容需求。
二、单体应用垂直扩容
当用户量开始增多,现有系统无法处理那么大访问流量,在成本不高的情况下,应该通过硬件扩容来解决。如升级现有服务器,4核8G升级为16核32G,磁盘扩容等。但不管怎么扩容,单机总会有瓶颈,而分布式技术是提升系统扩容能力的更好方法。
三、单体应用水平扩容
随着用户量越来越多&