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

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

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

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

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

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

架构设计阶段

简单化设计原则

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

监控设计原则

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

管控设计原则

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

开发发布阶段

敏捷设计原则

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

变更设计原则

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

运行运维阶段

容量设计原则

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

依赖设计原则

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

自动化设计原则

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

快恢设计原则

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

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

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

免费福利

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


推荐阅读
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 智慧博物馆信息系统建设方案
    3.信息化系统建设3.1博物馆RFID藏品管理系统3.1.1系统概述博物馆藏品保管是一项十分复杂又繁琐的工作。从事保管工作除了经常、及时地进行藏品的登记、分类、编目、保养和修 ... [详细]
  • 企业数据应用挑战及元数据管理的重要性
    本文主要介绍了企业在日常经营管理过程中面临的数据应用挑战,包括数据找不到、数据读不懂、数据不可信等问题。针对这些挑战,通过元数据管理可以实现数据的可见、可懂、可用,帮助业务快速获取所需数据。文章提出了“灵魂”三问——元数据是什么、有什么用、又该怎么管,强调了元数据管理在企业数据治理中的基础和前提作用。 ... [详细]
  • TiDB | TiDB在5A级物流企业核心系统的应用与实践
    TiDB在5A级物流企业核心系统的应用与实践前言一、业务背景科捷物流概况神州金库简介二、现状与挑战神州金库现有技术体系业务挑战应对方案三、TiDB解决方案测试迁移收益问题四、说在最 ... [详细]
  • 物联网应用介绍
    •物联网的研究背景(概念|本质|特征|发展现状)       物联网是新一代信息技术的高度集成和综合运用,已成为全球新一轮科技革命与产业变革的核心驱动和经济社会绿色、智能、可持续发 ... [详细]
  • 数据库异常智能分析与诊断
    数据库,异常, ... [详细]
  • 架构思考
    2019独角兽企业重金招聘Python工程师标准闲来无事,总结了下架构设计方面的一些思考1、稳定性。一切以稳定为中心。架构尽可能简单、清晰。不过度设计2、解耦拆 ... [详细]
  • 架构设计:负载均衡层设计方案之负载场景和解决方式篇
    来自:JAVA入门中https:blog.csdn.netyinwenjiearticledetails46605451在上一篇《标准Web系统的架构分层》文章中&# ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • BPM是什么软件?1、BPM是BusinessProcessManagement的简称,译为业务流程管理,它是一种以规范化的构造端到端的卓越业务流程为中心以持续的提高组织业务绩效为 ... [详细]
  • 说出来你可能不信,我用三天做了一个完整的项目
    Java在人工智能中能起到什么作用?作为编程语言中的扛把子,Java20多年稳定不倒,就在于它的稳定性,维护成本极低。这使得 ... [详细]
  • Unit4博客&课程总结Unit4作业的架构设计本单元作业的设计我分为了三个模块处理:模型构建+预处理+任务函数,前两部分即为整个图的完整构建,第三部分即为实现题目要求的查询方法。 ... [详细]
  • 博客_2018年博客总结
    本文由编程笔记#小编为大家整理,主要介绍了2018年博客总结相关的知识,希望对你有一定的参考价值。前言     ... [详细]
  • 技术研发团队管理计划方案书
    目录第一部分序目标第二部分团队建议一小组划分第三部分小组计划一小组任务管理二小组工作氛围1组员能力成长3组员幸福感提升三小组工作协同四小组建设规划第四部分20 ... [详细]
  • 传统|同类_Spring Boot进阶:原理实战与面试题分析读后感
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了SpringBoot进阶:原理实战与面试题分析读后感相关的知识,希望对你有一定的参考价值。 ... [详细]
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社区 版权所有