华为云FunctionGraph构建高可用系统的实践

💡 原文中文,约6900字,阅读约需17分钟。
📝

内容提要

本文介绍了构建高可用的Serverless计算平台,解决云服务中的系统异常和依赖服务故障。通过流量突变治理、系统服务异常治理、系统依赖服务异常治理和变更引起治理等方法,提高系统可用性。FunctionGraph在容灾架构、流控、重试、缓存、灰度升级、监控告警和流程规范等方面的设计实践,提供高效的资源弹性能力,实现函数请求的重试和依赖服务的隔离,以及灰度升级和监控告警等功能。强调持续构建更高可用服务的重要性。

🔎

延伸解读

高可用性度量:SLI与时延

FunctionGraph将SLI(请求成功率)和时延作为直观度量系统可用性的两个黄金指标。SLI直接反映请求成功比例,时延体现系统处理性能。这两个指标帮助团队快速评估系统状态,与SLA承诺的可用性目标相呼应,为持续优化提供量化依据。

治理框架:四类问题与通用方法

针对流量突变、系统服务异常、依赖服务异常和变更风险四类常见问题,FunctionGraph总结了通用治理办法:流量突变治理采用过载保护、弹性扩缩容、熔断、异步削峰和监控告警;系统服务异常治理结合容灾架构、重试、隔离和监控告警;依赖服务异常治理通过容灾架构、缓存降级和监控告警;变更治理则依赖灰度升级、流程管控和监控告警。这些方法为高可用设计提供了结构化思路。

流控策略:多链路防御与资源隔离

FunctionGraph在流量经过的每个链路都追加了流控策略,包括网关APIG流控、系统业务流控和系统资源流控。系统业务流控支持节点、客户API和函数级别;资源流控则通过并发数控制、HTTP连接池、内存池和协程池实现资源隔离。这些措施基于防御式设计,确保各链路稳定,防止过载。

重试与熔断:平衡可用性与风险

FunctionGraph的重试策略针对同步和异步请求设计:同步请求最多重试3次,异步请求采用二进制指数退避,最大重试时间6小时。同时,基于调用量失败率的多级熔断策略防止异常流量挤占资源。重试和熔断需平衡,避免重试风暴或过度熔断影响正常业务。

❓

Q&A

华为云FunctionGraph如何提高系统可用性?

华为云FunctionGraph通过流量突变治理、系统服务异常治理、依赖服务异常治理和变更引起治理等方法,提高系统可用性。

什么是高可用性,如何衡量?

高可用性指系统无中断地执行功能的能力,通常通过服务级别协议(SLA)来衡量。

FunctionGraph如何应对流量攻击和硬件故障?

FunctionGraph通过容灾架构、流控、重试和熔断策略来应对流量攻击和硬件故障。

FunctionGraph的重试策略是怎样的?

FunctionGraph实施重试策略,确保客户请求在异常情况下仍能成功执行,最多重试3次。

FunctionGraph如何实现流控?

FunctionGraph通过多维度流控策略,确保各个链路的稳定性,防止系统过载。

灰度升级在FunctionGraph中有什么作用?

灰度升级可以减少升级带来的风险,确保系统平稳过渡,避免全局故障。

🏷️

标签

➡️

继续阅读