分布式架构主要用于解决如下问题。
1. 系统宕机
系统业务量逐渐增多,导致系统压力增大,通过监控和各方面指标发现系统频繁报警,需要通过优化让系统变得稳定、负载降低。最直接的方式是增加系统容量,调整系统参数,但是硬件扩展并非解决问题的最优方式,会存在以下弊端:
进一步优化过程需要垂直或者水平拆分业务系统,按照一定维度拆分成多个模块,降低耦合性,通过合理的设计方案,从端到端、点到点优化,让系统变得健壮,为后续复杂业务提供模块化管理和运营。
分布式的架构体系具有良好的横向扩展性,通过横向扩展机器能够快速高效提高系统的并发量和吞吐量,为复杂的业务系统提供良好支撑。而分布式架构体系调用过程较长,从外界流量入口分发、代理服务、网络传输、容器、应用服务、数据存储,存在很高的优化空间,通过合理的设计方案能让系统承载更多更高的指标,从而稳定运行。
2. 系统瘫痪
很多外部因素也会导致系统瘫痪,如机房停电、线路关闭、网络堵塞等,因此需要一套完整的分布式架构方案(高可用、监控、故障转移等)来支撑。
系统在构建时期需要考虑这些外在因素,然后构思设计相应的处理方案并落地实施,在测试环境中演练外在因素导致系统瘫痪的场景,不断探索、改进、完善,这样,当外部因素真的出现时,系统可以从容面对,从侧面凸显出系统的健壮。
分布式架构体系中针对以上场景有众多解决方案,从设计之初就已经考虑到这些因素,确保系统是可用的、可靠的,而多机房部署就能从根源上解决由机房停电引起的事故。
3. 系统故障
当系统发生故障时,因系统构建庞大,维修排查故障时间过久会影响用户使用。分布式架构讲究系统拆分模块化,使用更轻量级的模块、可用的部署策略,可从一定程度上规避故障风险,如出现故障,通过有效的故障转移方式能让系统在短时间之内正常服务。
4. 系统臃肿
系统庞大、内核聚集多,臃肿不堪。迭代维护运营成本高,风险过大。分布式架构将系统拆分成模块化,模块细化后可读性、维护性会变得简单明了,针对细化后的模块可更专注开发和优化。