系统稳定性方法论 - 降发生

2023-11-11

上一篇<系统稳定性方法论 - 序篇>中提到了系统稳定性的4大抓手,今天就先说说其中的第一个 降发生

何为"降发生"

降发生指的是,从设计阶段开始,开发阶段、测试阶段、上线前的准备阶段、上线阶段到最后上线后的回归测试阶段,在这整个过程中,对所有阶段进行把控,将能出现异常的可能性消除。

设计阶段

这一阶段需要考虑的主要问题:除了最基本的"实现功能性需求"之外,更要设计和思考"如何实现非功能性需求",而对于系统稳定性方向来说,就是如何设计系统防止被别人搞死

举几个常见的"非功能性需求"

  1. 与上下游交互是异步还是同步的?
  2. 同步的话是基于HTTP还是RPC?RPC选型?
  3. 异步的话是MQ还是Reactor?MQ选型?Reactor选型?
  4. 多服务间的数据一致性问题?需要强一致还是柔性最终一致性?强一致选型?最终一致选型?
  5. 各服务的QPS、TPS、RT…
  6. 针对下游是否需要设置降级熔断?如何根据业务设计兜底方案?幂等重试?补偿?
  7. 针对上游是否需要设置限流?限多少?

以上这些都是需要在设计阶段就决定好的,不能急于实现”功能性需求“去交差,而忽略这些”非功能性需求“…

开发阶段

不写bug是对所有开发者的最基本要求,也就是别被自己搞死

开发阶段还需要考虑,代码的性能、维护性、可复用性…

上线前阶段

code review

首先要落地落实code review,很多时候code review都成了走过场,失去了code review的意义… 不仅做不到提前发现问题,更做不到知识共享。

那如何做好code review呢?说说理想情况下的code review:

  • 首先与自己的backup做peer review,如果连你的backup都无法正确理解你的代码,那么怎么能指望团队的其他同学理解你的代码呢?
  • 之后是团队code review,可以设置一个小型会议,大家坐在一起共同review代码,提出疑问与改进建议;这一阶段的code review效果与团队的技术氛围密切相关…

这里也吐槽一下,正确使用GIT也是code review的一大前提,发现很多开发者只做commit、merge… 怎么简单怎么来… 有时间也出一篇如何正确使用GIT的分享…

测试

测试是上线前的重要环节,可以提前发现问题,也是上线前投入精力最多的一个阶段。

单元测试

单元测试不能省,好的单元测试可以覆盖大部分场景,test coverage甚至可以作为RD的OKR。

QA集成与回归测试

全链路压力测试

很多团队都不做压力测试的,更别提全链路压力测试,其中有主观原因也有客观原因…

做好全链路压力测试不简单,涉及链路梳理、入口压测标识改造、系统间以及系统内部压测标识传递、中间件改造、影子库、流量回放等众多难点…

给自己再挖个坑,找机会出一篇全链路压测的分享

上线中与上线后阶段

上线过程需要制定上线SOP,滚动发布、灰度发布,每发布一点就做一次检查,不要一次性的全量上线。上线后也要做线上的回归测试。

总结一下:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

系统稳定性方法论 - 降发生 的相关文章

随机推荐

  • Python 中的json模块dumps参数详解

    1 什么是JSON 维基百科中的定义 JSON JavaScript Object Notation JavaScript对象表示法 是一种由道格拉斯 克罗克福特构想和设计 轻量级的资料交换语言 该语言以易于让人阅读的文字为基础 用来传输由
  • 如何使用百度的GPU来跑自己的项目

    请先阅读如下两篇文章 并先读完我的文章再决定你是否要动手安装 因为有很多坑 白嫖百度GPU TeslaV100笔记 在 AI Studio 上使用 tensorflow 和 pytorch 的方法 亲测可用 免费使用谷歌GPU 这里谷歌是需
  • easyui field 获取对象子属性的值

    我们从服务器获取的数据格式如下 total 10 rows orderId 4 payment 1 paymentType 1 postFee 1 status 2 createTime 1510029825000 updateTime 1
  • 深入解析IT专业分类、方向及就业前景:高考毕业生如何选择适合自己的IT专业?重点探索近年来人工智能专业发展及人才需求

    目录 一 IT专业的就业前景和发展趋势 二 了解IT专业的分类和方向 三 你对本专业的看法和感想 四 本专业对人能力素养的要求 五 建议和思考 其它资料下载 当今社会 信息技术行业以其迅猛的发展和无限的潜力成为了吸引无数年轻人的热门选择 特
  • leetcode学习项目

    https leetcode cn com explore learn card data structure binary tree leetcode上专项介绍供学习树 https leetcode cn com explore lear
  • Linux中创建sftp用户并限制目录权限

    注意两点 一是禁止该用户通过ssh登录 二是不需要创建家目录 家目录简单来说 就是在 home下的用户命令 默认每个用户在 home中都是有与用户名一样的文件夹 创建组 groupadd sftp 创建用户 useradd g sftp s
  • 作为计算机专业学生,最应该学习的课程前五位是什么?【知乎】

    http www zhihu com question 19628851 answer 100293 对于目前排在首位的兵哥哥的答案 不敢苟同 本人软件工程专业 关于计算机专业和软件工程专业 实际上还是大相径庭的 远不是别人所说的软硬件的偏
  • Economic Difficulties【DP】【Codeforces 1263 F】

    Codeforces Round 603 Div 2 F 题意 给你两棵树 结点分别是1 A与1 B 然后给了N台设备 并且A树和B树的叶子结点都是链接设备的 问的是 我们最多可以割几条边使得每个设备都能链接A树或者B树上任意的一个 1 号
  • 检测鼠标位置是否有UI

    示例 using System using System Collections Generic using UnityEngine using UnityEngine EventSystems using UnityEngine UI p
  • 【编译原理】课程一:编译原理入门

    目录 1 为什么要学习编译原理 2 什么是编译原理 3 编译与计算机程序设计语言的关系 3 1 程序设计语言的转换方式 3 2 编译的转换过程 3 3 编译器在语言处理系统中的位置 3 4 编译系统的结构 3 4 1 词法分析 扫描 3 4
  • unity3D僵尸模型和场景带动作,unity游戏素材

    unity3D僵尸模型和场景带动作 详情如下动态图所示 资源链接在文末 点我下载资源 https download csdn net download weixin 43474701 55001671
  • IMX6ULL驱动学习--Linux自带LED驱动

    Linux自带LED驱动 Linux内核LED驱动 内核使能LED驱动 LED驱动源码分析 设备树节点编写 设备树LED节点 设备操作 Linux内核LED驱动 Linux 内核集成了LED驱动 采用platform框架 我们只需要在编译内
  • Centos7-安装keepalived

    1 到keepalived官网下载 Keepalived for Linux 2 使用xftp上传到 usr local packages目录下 3 解压上传的tar gz压缩文件 cd usr local packages tar zxv
  • 西安电子科技大学计算智能导论公茂果老师课程所有PPT

    西安电子科技大学计算智能导论公茂果老师课程所有PPT http pan baidu com s 1hqst8pe 随着信息技术的发展 计算的观念越来越显示其在各个领域的威力 从计算的角度审视世界 认为从物理世界 生命过程直到人类智能都是可计
  • sqlserver ssms 安装失败拒绝访问(0x80070005)

    今天安装了SQL Server Management Studio 安装的时候提示 安装失败 拒绝访问 0x80070005 果断将电脑重启 重启之后重新安装还是不行 解决方法 我们将杀毒软件关闭 我的是360 然后我们再安装一下SQL S
  • linux 基础(一)

    1 Linux常见发行版 Linux发行版有三大主流分支 Debian Slackware Redhat 包含的主要发行版分别如下 Debian Ubuntu Linux mint Knopix Slackware S u S E SLES
  • 机器学习之单变量线性回归

    1 线性回归基础概念 回归模型 regression model 数据集 包含feature 输入变量 和与之对应的target 输出变量 训练集 training set 输入数据 x feature or input feature 输
  • esp8266一键安装arduino_ESP8266如何获取B站粉丝数、关注数和播放量?

    硬件 ESP8266 12板 0 96 IIC驱动OLED一个 杜邦线4根 1 获取API接口 打开B站个人中心 按下F12 刷新页面 搜索这个词 https api bilibili com x relation stat vmid 40
  • 进程、线程、协程

    一 名词概念 1 什么是进程 what is process 进程是操作系统提供的抽象概念 是系统进行资源分配和调度的基本单位 是操作系统结构的基础 程序是指令 数据及其组织形式的描述 进程是程序的实体 程序本身是没有生命周期的 它只是存在
  • 系统稳定性方法论 - 降发生

    上一篇 lt 系统稳定性方法论 序篇 gt 中提到了系统稳定性的4大抓手 今天就先说说其中的第一个 降发生 何为 降发生 降发生指的是 从设计阶段开始 开发阶段 测试阶段 上线前的准备阶段 上线阶段到最后上线后的回归测试阶段 在这整个过程中