.
业务背景

云上的重要优势之一是可以做资源动态伸缩,这样一方面可以平时仅部署日常运行所需的系统容量,从而高效的利用资源,有效的降低企业技术总成本(TCO),另一方面可以在用户访问量爆发的时候提前或者及时的动态增加资源,提高系统的容量和可用性。

.
架构特点

通过解决各个瓶颈点的资源伸缩来完成整个系统的动态伸缩,主要包括以下几个方面:

  • 计算的动态伸缩
  • 存储的动态伸缩
  • 数据库的动态伸缩
  • 网络的动态伸缩
  • 其他资源的动态伸缩
.
架构描述
.
计算伸缩

计算能力主要是各种服务器(ECS)资源,包括web服务器、应用服务器、数据服务器、定时任务处理、数据f分析等等,主要可以使用两种方式进行伸缩:纵向伸缩 – 升降计算实例规格;横向伸缩 – 增减计算实例数量。

由于纵向伸缩的限制很大,我们强烈建议采用横向伸缩的方式进行。

.
存储的伸缩

存储的伸缩:包含在线的存储服务(OSS/NAS)、ECS的存储空间、数据库存储空间等,这些存储要么无限容量、要么可以购买对应的资源包和云盘,再根据实际使用情况进行升级扩容。

.
数据库的动态伸缩

数据库的动态伸缩:一种是基于RDS数据库解决方案的动态伸缩,一种是基于DRDS的分布式数据库解决方案的动态伸缩。其中基于RDS数据库解决方案的动态伸缩又包含纵向伸缩(即RDS的规格的升降配)和横向伸缩(即业务实现读写分离,主rds挂载只读实例)两种方式;基于DRDS的分布式数据库解决方案的动态伸缩又包含DRDS的规格的升降配、DRDS挂载的RDS的伸缩两种方式。

.
网络的动态伸缩
  • 按流量方式:SLB按流量方式不限制带宽,因此无需
  • 按带宽方式:按带宽方式情况下,如果峰值带宽不够,需要提前购买新的更高规格带宽或者按流量计费方式的SLB并绑定域名到其上面。在缩容时把域名绑定回普通规格的SLB上并释放高规格SLB
.
其他资源的动态伸缩
. .
云数据库Memcache版& Redis版&MongoDB版

不支持在线的动态伸缩,因此需要对整个系统进行伸缩时,它们可能成为瓶颈。解决办法是提前规划好性能需求,购买临时的按量高规格实例并切换到其上,在系统访问洪峰过去后切回原来的普通规格实例并释放临时高规格实例