高可用能力


通过大规模数据中心、多数据中心技术,实现数据中心同城灾备,通过对硬件层的虚拟化,来降低和规避物理硬件故障对客户的影响,通过成熟高可用的服务来降低系统的复杂性。为了进一步提升应用的可观测性和问题的排查能力,云平台还会提供比较多的自助服务来做问题的排查和解决。

1.构建多地容灾架构
对于可靠性要求较高的应用,通常会做同城多机房部署,避免由于单机房的网络、电力等物理故障导致应用整体不可用。该场景下,在云上,用户可以使用同一个地域的多个可用区来部署,通过多个可用区的互通能力来完成应用间通讯,同时多可用区的物理隔离性极大提升了应用的容灾能力。

特大型的重要商业系统,对系统的容灾能力提出了更高的要求,同城多机房解决的是机房维度的单点问题,无法解决某个城市因为天灾人祸导致的城市级故障。该场景下,在云上可以使用多地域部署,另外,多地域间物理距离适当远一些,避免单地域故障导致服务整体不可用,以此来提升应用的极致高可用。

对于高阶用户,云服务厂商会提供GSLB 全球负载均衡以及对应的CDN 服务来辅助支撑基础设施的高可用,也会提供自动化的伸缩能力,比如AWS 的Auto Scaling 产品、阿里云的弹性伸缩ESS 产品,用户可用通过配置Auto Scaling 策略来实现服务多可用区、多地域的自动化部署,保障服务基础设施始终处于高可靠性状态。

2.数据备份和容灾恢复能力
云服务厂商在数据的高可靠性上具备天然的优势,不仅体现在存储的多副本和数据可靠性极高的SLA 保障上,同时还以服务化的方式向用户暴露了OpenAPI,用户可利用云厂商提供的快照、镜像等能力,实现数据备份容灾的高可靠性能力建设。

3.应用可观测能力
云资源监控,应用依赖的底层资源监控,比如资源的CPU、内存、网络等指标的使用率等。
应用层APM,基于云资源部署的具体应用场景,包括应用指标性能(Metric)、系统调用链(Tracing)、日志监控(Logging)三个维度,比如应用的JVM 指标、线程池监控、RPC 服务的成功率、时延、错误率监控、以及应用全链路追踪能力。
用户业务层监控,应用于服务所提供的具体应用场景,比如电商类应用通常监控订单走势、订单成功率、支付成功率等。业务层监控通常是通过业务埋点方式实现,传统运维典型的解决方案是ELK。

云服务厂商会通过产品以服务化的方式来提供日志服务,用户使用日志服务做日志、数据的采集与集成,并基于此做Logging 和Metering。用户通过自定义应用系统的内容、格式,并通过日志服务收集,并在日志服务中配置自定义细粒度监控大盘,观测自身业务运行情况,同时配置预警体系,建设用户层问题发现与定位能力。

在可观测性能力的基础上,云服务厂商同时会提供应用高可用服务,比如阿里云的AHAS(Application High Availability Service),可以通过流量防护、故障演练、多活容灾、开关预案来实现自动化流量控制、业务降级与预案执行,更进一步通过混沌工程来完成故障巡检、故障注入、以及系统稳态度量。

4.弹性容错能力
除了在基础设施、数据上的容错能力外,云服务厂商通常也会提供应用服务的容错能力,帮助用户构建具备弹性、容错能力的分布式系统。
弹性容错能力,分布式系统核心的两个弹性容错能力是流控与降级,通过流控来保护应用过载,通过降级来容忍业务部分有损换取整体可靠性。传统的流控方式是人工判断干预,高阶的方式是通过监控体系自动发现热点流量或异常流量,自动化选择自适应过载保护或者设置自动降级策略并执行。

混沌工程与故障演练,混沌工程(Chaos Engineer)是一种提高分布式系统弹性能力的工程实践,通过主动制造故障,测试系统在各种压力下的行为,在生产环境提前识别潜在的故障,避免故障真实发生。故障演练是遵循混沌工程实验原理的实践之一,其建立了一套标准的演练流程,包含准备阶段、执行阶段、检查阶段和恢复阶段。通过四阶段的流程,覆盖用户从计划到还原的完整演练过程,并通过可视化的方式清晰呈现给用户。

posted @ 2022-10-16 14:19  muzinan110  阅读(46)  评论(0编辑  收藏  举报