热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

置之死地而后生,面向失败的架构设计

搜一下“宕机”,就能看到很多系统问题导致的服务不可用新闻,当然,这其中包括多种原因,例如系统恶化,流量超出预期

搜一下“宕机”,就能看到很多系统问题导致的服务不可用新闻,当然,这其中包括多种原因,例如系统恶化,流量超出预期,外部DDoS攻击,数据库问题,架构设计问题等等。

所以,就有了“面向失败而设计的架构”,有点类似于《史记·淮阴侯列传》:“‘陷之死地而后生,置之亡地而后存。’……其势非置之死地,使人人自为战”的意味。其初衷是以“失败”为对象,设想可能存在各种失败原因的设计思想,在系统设计阶段就考虑到各种失败场景,把失败当成是设计的一部分,未雨绸缪,利用积极的心态提前规划好从失败中恢复的策略。

在架构设计方面,通过面向失败的设计,贯穿整个软件生命周期来防范已知的确定性风险及未知的不确定性风险。阿里巴巴在2012年开始积累这方面的经验,有成熟的方案来支持每年的双11,从容应对各种挑战。整个方案包括“容灾设计、架构设计、预案、自动化运维、智能监控等”。以下是阿里技术团队总结出来的几个阶段各个原则。

架构设计阶段

简单化设计原则

系统架构简单清晰,具备水平扩展能力 。与之相反的就是过度设计,如何更好的平衡必要复杂度与意外复杂度是关键。“不是在不能添加更多的时候,而是没有什么可以去掉的时候,才能达到完美”。

监控设计原则

监控系统架构及监控规则应该是简单的,易于理解的。监控项覆盖度高,需要控制好有效报警数,监控围绕四大黄金指标:延迟,流量,错误,饱和度展开。

管控设计原则

需避免权限过大,系统应具备逃生能力,灰度能力。线上很多p1级故障发生,都是因为权限过大或者不具备灰度能力导致的。管控系统作为服务提供方,理应当对自身行为带来的危害负责,需要具备自保护能力。

开发发布阶段

敏捷设计原则

敏捷开发,小规模,多批次迭代。敏捷开发对面向失败设计来说可以有效预防,降低故障发生,同时能够快速定位及恢复故障。

变更设计原则

可灰度,可监控,可回滚。无论系统发布还是配置项的改动,都需要遵从变更三板斧。线上60%故障是由于变更发布导致的,渐进式发布,快速准确检测到问题,同时快速回滚是非常必要的。

运行运维阶段

容量设计原则

基于稳态容量及尖刺容量规划,适当冗余,具备快速弹性扩容能力。通过自然需求增长模型来预测稳态容量,通过适当冗余,流控,快速弹性扩容能力保障非自然需求增长。同时做好周期性压力测试。

依赖设计原则

最小化依赖,避免循环依赖,通过异步化,服务降级,限流,隔离等手段控制由于依赖带来的影响面。上下游依赖需要建立基于接口,服务,应用等级别的SLO,了解更多上下游信息,做好防护手段。

自动化设计原则

对重复,人肉的操作尽可能通过自动化来保障操作一致性,提升效率。

快恢设计原则

标准化的故障恢复流程, 从故障被监控发现开始,人员上线响应,故障定位 ,恢复等一系列流程是人与系统共同参与的活动。从人的角度需要具备oncall能力,快速上线能力,快速登录系统定位处理问题能力,系统需要具备快速报警,回滚,隔离,容灾等能力。

2020年12月20-21日QCon全球软件开发大会(上海站),来自阿里的高级技术专家隐寒,多年从事高可用领域相关的工作,将会分享“面向失败的架构设计核心思想和实践”话题,介绍如何时刻关注系统的可用性,提前预防甚至解除风险,做到系统的持续可用。本专题下还有其他大厂的技术分享,感兴趣的可以关注下:

目前大会门票9折抢购中,限时立减680元!优惠截至12月20日。了解大会议程和演讲嘉宾可以扫描下图二维码或点击【阅读原文】查看!大会咨询:17310043226(同微信)

免费福利

????点击查看大会日程


推荐阅读
  • ArchSummit深圳2014将于7月18日拉开帷幕,所有讲师已确认,涵盖9个热门话题,共36场精彩报告。InfoQ中文站提供了详细的讲师和报告列表。 ... [详细]
  • 本文探讨了现代分布式架构的多样性,包括高并发、多活数据中心、容器化、微服务、高可用性和弹性架构等,并介绍了与这些架构相关的重要管理技术,如DevOps、应用监控和自动化运维。文章还深入分析了分布式系统的核心概念、主要用途及类型,同时对比了单体应用与分布式服务化的优缺点。 ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • Spring Cloud因其强大的功能和灵活性,被誉为开发分布式系统的‘一站式’解决方案。它不仅简化了分布式系统中的常见模式实现,还被广泛应用于企业级生产环境中。本书内容详实,覆盖了从微服务基础到Spring Cloud的高级应用,适合各层次的开发者。 ... [详细]
  • 数据集成策略:ETL与ELT架构对比及工具选择
    随着企业信息化的深入发展,‘数据孤岛’问题日益突出,阻碍了数据的有效利用与整合。本文探讨了如何通过构建数据仓库解决这一问题,重点分析了ETL与ELT两种数据处理架构的特点及适用场景,为企业选择合适的ETL工具提供了指导。 ... [详细]
  • Spring Cloud学习指南:深入理解微服务架构
    本文介绍了微服务架构的基本概念及其在Spring Cloud中的实现。讨论了微服务架构的主要优势,如简化开发和维护、快速启动、灵活的技术栈选择以及按需扩展的能力。同时,也探讨了微服务架构面临的挑战,包括较高的运维要求、分布式系统的复杂性、接口调整的成本等问题。最后,文章提出了实施微服务时应遵循的设计原则。 ... [详细]
  • 全能终端工具推荐:高效、免费、易用
    介绍一款备受好评的全能型终端工具——MobaXterm,它不仅功能强大,而且完全免费,适合各类用户使用。 ... [详细]
  • 热璞数据库与云宏达成兼容性互认证,共筑数据安全屏障
    热璞数据库与云宏信息技术有限公司近期宣布完成产品兼容性互认证,旨在提升数据安全性与稳定性,支持企业数字化转型。 ... [详细]
  • 技术总监的角色定位与代码实践
    关于技术总监是否应当参与代码编写,这一议题始终伴随着技术行业的成长而引发广泛的讨论。本文旨在从多个角度探讨技术总监参与代码编写的必要性和影响因素,包括公司背景、发展阶段及团队规模等。 ... [详细]
  • 历经两个月,他成功斩获阿里巴巴Offer
    经过两个月的努力,一位普通的双非本科毕业生最终成功获得了阿里巴巴的录用通知。 ... [详细]
  • 国内BI工具迎战国际巨头Tableau,稳步崛起
    尽管商业智能(BI)工具在中国的普及程度尚不及国际市场,但近年来,随着本土企业的持续创新和市场推广,国内主流BI工具正逐渐崭露头角。面对国际品牌如Tableau的强大竞争,国内BI工具通过不断优化产品和技术,赢得了越来越多用户的认可。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 深入探讨智能布线管理系统的电子配线架应用
    本文详细介绍了电子配线架智能布线系统的核心优势,包括实时监测网络连接、提高操作准确性、图形化显示连接架构、自动识别网络拓扑、增强安全性等功能。该系统不仅提升了网络管理的效率和准确性,还为资产管理、报告生成以及与其他智能系统的集成提供了强大的支持。 ... [详细]
  • HBase运维工具全解析
    本文深入探讨了HBase常用的运维工具,详细介绍了每种工具的功能、使用场景及操作示例。对于HBase的开发人员和运维工程师来说,这些工具是日常管理和故障排查的重要手段。 ... [详细]
  • 深入解析Serverless架构模式
    本文将详细介绍Serverless架构模式的核心概念、工作原理及其优势。通过对比传统架构,探讨Serverless如何简化应用开发与运维流程,并介绍当前主流的Serverless平台。 ... [详细]
author-avatar
caozhengweile_854
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有