李智慧 · 高并发架构实战课
李智慧
同程艺龙交通首席架构师,前 Intel & 阿里架构师,《大型网站技术架构》作者
23286 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 26 讲
李智慧 · 高并发架构实战课
15
15
1.0x
00:00/00:00
登录|注册

16 | 高可用架构的十种武器:怎么度量系统的可用性?

通过RPC进行依赖调用
独立部署
接口隔离原则
依赖倒置原则
开闭原则
稳定抽象原则
稳定依赖原则
无循环依赖
降低软件错误带来的影响
发现测试环境无法发现的Bug
尽早发现系统故障
自动化回归测试
减少系统Bug
用户请求分发和数据实时同步
数据中心建立在多个地区
异地多活
保护系统资源
关闭非核心功能
丢弃超出承受能力的请求
保护系统在高并发下的可用性
事务补偿
故障发生后的弥补
断路器机制
防止不稳定或宕机的服务器影响系统
幂等性服务
修复单次调用的故障
数据库主主备份
负载均衡
解决硬件故障下系统的可用性
例:用户注册场景
提高系统可用性
使用消息队列
微服务技术方案
物理上的分割
面向对象的低耦合原则
组件的低耦合原则
软件技术进化史是解耦的历史
例:99.99% 可用性意味着一年约53分钟不可用
通常用多少个9来说明
可用性指标 = (1 - 年度不可用时间 ÷ 年度总时间) × 100%
其他高可用方法?
灰度发布
预发布验证
自动化监控
自动化测试
第十种武器:多活
第九种武器:降级
第八种武器:限流
第七种武器:补偿
第六种武器:熔断
第五种武器:重试
第四种武器:备份
第三种武器:异步
第二种武器:隔离
第一种武器:解耦
互联网应用的可用性
可用性指标计算公式
思考题
高可用的运维方案
高可用架构的技术方案
怎么度量系统的可用性?
高可用架构的十种武器

该思维导图由 AI 生成,仅供参考

你好,我是李智慧。
互联网应用是面向一般大众的应用系统,他们可能会随时需要使用应用,那么应用就必须要保持随时可用,即所谓的 小时可用。但是互联网应用又可能会遇到硬件故障、软件故障、黑客攻击等等各种不可用的场景。
业界通常用多少个 9 来说明互联网应用的可用性。比如说淘宝的可用性是 4 个 9,就是说淘宝的服务 99.99% 可用。这句话的意思是,淘宝的服务要保证在所有的运行时间里只有 0.01% 不可用,那么一年就只有大概 53 分钟不可用。这个 99.99% 就叫做系统的可用性指标,这个值的计算公式是:
可用性指标反映系统的可用程度,也可以估算出年度不可用时间。我们熟悉的互联网产品(淘宝、百度、微信等)的可用性大多是 4 个 9。
不同的应用可用性可能会相差很大,主要差别就是在面对各种故障的时候,高可用设计做得是否足够好,我总结了一些高可用架构的技术方案,并称之为高可用架构的十种武器。

第一种武器:解耦

耦合度过高是软件设计的万恶之源,也是造成系统可用性问题的罪魁祸首。一个高度耦合的系统,牵一发而动全身,任何微小的改动都可能会导致意想不到的 bug 和系统崩溃。连最基本的功能维护都已经勉为其难,更不用奢谈什么高可用了。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

高可用架构是保证互联网应用系统随时可用的重要手段。本文介绍了高可用架构的十种武器,包括解耦、隔离、异步、备份、重试和熔断等技术方案。解耦和隔离通过降低组件之间的耦合度和物理上的分割来提高系统可用性。异步通过消息队列实现组件之间的进一步解耦,提高系统可用性。备份和失效转移构成一个高可用解决方案,通过多台服务器构成集群来保证服务的可用性。重试和熔断则是针对远程服务调用的故障处理机制,保证系统整体的高可用性。补偿、限流、降级和多活等武器也是保障系统可用性的重要手段。此外,高可用的运维方案如自动化测试、自动化监控、预发布验证和灰度发布也对系统的稳定性起到关键作用。这些技术方案和运维手段为保障系统的可用性提供了有力的支持,对于互联网应用的开发和运维具有重要的指导意义。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《李智慧 · 高并发架构实战课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(7)

  • 最新
  • 精选
  • 👽
    我觉得,还可以考虑上运维角度的服务编排治理能力。比如: 故障节点的驱逐和重新唤醒。出现故障的节点对其进行驱逐,并重新拉起一个。 弹性,根据请求量和节点压力,动态启动新的节点。

    作者回复: 很赞,自动化运维及弹性扩容

    2022-03-25
    3
    5
  • 花轮君
    核心业务流程任何的变更都需要经过评审,并且相关的依赖服务/中间件必须添加降级开关,控制影响面,降低损失

    作者回复: 赞

    2022-04-07
    2
  • javaadu
    熔断和降级有什么区别呢?

    作者回复: 熔断是部分服务器不可用,请求转移到其他服务器;降级是部分功能不可用,需要人为关闭这些功能的请求处理开关,降级是功能设计的一部分

    2022-03-26
    5
    2
  • peter
    李老师这个总结真不错。请教几个问题: Q1:有可用性达到5个9的公司吗? Q2:熔断器处于半开状态时,给其发请求,这个请求是一个真实的请求还是一个测试用的请求? Q3:电商的确认收货是用定时器实现的吗?

    作者回复: 1 不了解,某些金融机构可能会达到,但是成本也非常高 2 真实 3 批处理任务,也算一种定时任务

    2022-03-25
    2
    2
  • Geek_be8042
    全是理论,如何实践啊

    作者回复: 前面的设计案例都是关于设计的实践啊 这一讲的目的就是做一个理论的回顾

    2022-03-31
    2
  • Steven
    存储系统的分区、分片 排队

    作者回复: 不错,存储分片是隔离的一种,排队通常就是一种异步

    2022-03-25
  • IT小村
    总结得不错,确实是常见的方式
    2022-10-29归属地:北京
收起评论
显示
设置
留言
7
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部