云端架构:基于云平台的41种可复用的架构最佳实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.4.3 弹性扩展

紧耦合的系统不容易扩展,在出现软件Bug和系统故障时难以排查问题,调用每个系统组件的压力各不相同,小问题逐级放大,容易造成整个业务中断。要保持系统弹性扩展,首先要进行系统组件的解耦,包含动态数据和静态数据解耦,解耦后的组件可实现功能单元化,各司其职。

解耦之后再对组件和服务进行扩展,即计算资源的纵向扩展、横向扩展和自动伸缩,包括数据库层的扩展,还有通过混合架构延展本地环境的计算、存储备份、安全防护、产品服务能力。对应用和数据的迁移也算作整个系统的扩展,从一个环境迁移到另外一个环境,系统应保持弹性扩展,在需要迁移时能够快速实施迁移。最后还要进行均衡,组件解耦、资源和服务扩展之后需要统一的接入入口,以屏蔽底层解耦与扩展带来的接口不统一等问题,将这些都纳入均衡和全局负载均衡中来介绍。

在各个层面实现解耦,通过消息队列来解耦组件之间的通信,并解耦事件;通过Redis等共享存储实现状态数据与计算资源的解耦;采用云主机部署业务应该面向服务而非资源,将资源与业务解耦;存储实现弹性可挂载和可卸载的云硬盘,采用可绑定和解绑定的EIP;通过DDoS防护、WAF防护等解耦安全防护与计算资源;使用原生的计算能力、存储能力将业务与云平台的特性解耦,实现业务在多个云平台中的可扩展。

组件解耦是实现可扩展的前提,可通过以下方式进行解耦。

• 保持无状态,将状态数据存储到Redis中。

• 放到负载均衡中,扩容、缩容不影响整体业务。

• 通过消息队列、API Gateway解耦,生产者、消费者可扩展且互不影响。

• 实现业务的全局负载均衡,后端业务能够在混合架构、多云环境中进行扩展。