当前位置: 首页 > news >正文

一、前端稳定性规约该如何制定

前言

稳定性是数学或工程上的用语,判别一系统在有界的输入是否也产生有界的输出。若是,称系统为稳定;若否,则称系统为不稳定。

前端稳定性的体系建设大约可以分为了发布前,发布后,以及事故解决后三个阶段。

在稳定性这一领域, 人的意识和经验与平台能力支撑一样重要。需要依赖平台提供的稳定性工具,但也需要对开发的过程和处理机制进行进一步规范,加强大家的稳定性意识。所以也分为了机制&规约 和 工具&平台能力两部分。

在机制和规约上,需要有整套规范的保障, 和RCA的介入。小范围的线上问题, 都需要经过系统性的复盘。在处理线上问题过程中,处理动作和流程需要遵循规范。

平台能力支撑方面,主要可分为线上问题的排查能力、报表分析能力、用户行为串联以及白屏率指标和智能报警能力。

稳定性五大规范

原则:线上稳定性是第一优先工作

  • 线上已知的稳定性问题,永远是第一优先级* 收到报警先评估影响,如果是稳定性问题必须停下一切去处理* 线上服务即使是偶发的Crash,也必须追查触发原因* 线上稳定性隐患,需要记录并在每次迭代的时候考虑修复排期
  • 敬畏每一条报警,不能无视线上报警* 拆分重要报警和不重要的提醒* 重要的报警可以设置电话报警* 业务负责人/值班人,夜间需要保持电话畅通
  • “当时在……” /“因为……没看到报警”都是可耻的辩解行为* 设置合适的互备人员* 把报警发到群里
  • 就算不是自己负责的业务,也需要尽量补位* 就算不是自己负责的服务,看到线上问题都可以通告、找人确认,确保已经有人在跟进

处理问题:先通告,后处理;先止损,再查因

  • 先通告,后处理* 线上出现问题后,除了既定的快速止损 SOP 外,一定要先通告,后处理。* 通告的好处:* 避免多人操作冲突* 和团队通报进展* 引入更多人复查
  • 先止损,再查因* 【回滚】上线过程出问题,不要想为什么,直接回滚* 【切流】单可用区出现问题,优先尝试切流* 【降级】夜间高峰期出现失败率增长,大概率是容量问题,优先尝试降级限流和扩容

线上变更:有灰度,做检查,不跨区,可回滚

  • 变更有灰度* 灰度常见方式是:Canary实例、分区操作等* 实验属于策略灰度,从稳定性角度看是全局的
  • 每个节点做检查* 光有灰度也不行,需要在灰度等待足够时间,并且完成明确的检查项* 检查项需要经常更新,如果有误报需要及时清理,避免狼来了现象
  • 单次操作不跨区* 对于已经双活部署的服务,操作时需要分可用区操作,这样如果操作有问题,可以通过切流尽快止损
  • 所有变化可回滚* 可回滚:回滚总时间 < 变更总时间* 每一个对线上的变更操作,都需要有明确的回滚方案* 尽可能采用幂等操作或声明式接口去执行操作

高可用设计:Design For Failure

  • 考虑最坏情况,任何单个基础设施都是会故障的* 公有云上,任意单一资源 ID 代表的设备,“无论他承诺了多高的可用性”,都是会故障的
  • 处理超时* 设置backup request控制长尾超时,而不是设置很大的超时* 拆分不同响应时间的业务场景,分别设置超时
  • 对数据做兼容性/完整性检查* 0值,空值特别需要注意

管理要求:允许试错、严惩违规

  • 允许试错* 大胆假设,小心求证* 踩坑是正常的* 特别鼓励不畏困难,解决历史遗留问题的行为
  • 严惩违规* 明确定下的规则,需要被严格遵守* RCA后的Action Item需要及时处理* 写出 BUG 是正常的,但不做任何测试就上线是违规的* 上线出现问题回滚是正常的,但上线过程不做检查是违规的* 偶尔的误操作是可以被谅解的(当然还是尽量不要出现),但企图掩盖误操作的行为是违规的

前端发布SOP

1、发布计划

开发时间>3PD项目,均需要给出发布计划

  • 需求背景:简单介绍本次需求背景
  • 实现方案:开发设计方案文档 & 系分方案
  • 主要改动点:改了那些页面,那些业务模块
  • 影响范围:评估改动影响范围
  • 发布顺序:结合后端发布计划,确定发布顺序(service、配置、前端项目的发布顺序)。
  • 监控指标:确定当前版本需要监控指标,比如白屏,接口okr,js error,客户端crash率,OOM率等等
  • 应急预案:降级开关/预案、切流开关/预案、回滚方案

2、发布分支

必须是master分支

3、发布时间

  • 法定工作日(不含加班日)尽量避开业务高峰期(各业务需自行判断)* 例如以下系统,10点~11点尽量不要做发布,建议中午12点~2点,下午3点之后进行发布
  • 灰度canary实例的时间至少经过一个业务高峰,灰度满两小时

4、发布前提

  • Bug确认修复完毕
  • UI走查通过(有设计稿)
  • 产品验收完成
  • Code review完成
  • 依赖方确认发布完成

5、发布流程

线上问题处理SOP

1、线上反馈定级与评判标准

1.1、问题类型

  • 线上问题:由于开发的代码或技术设计问题,导致项目发布后产生的bug
  • 外部依赖问题:由于系统依赖的上游系统出现故障导致的bug
  • 系统遗留bug:已知的系统Bug,可能由于系统设计初期遗留的问题,或短期无法解决的问题
  • 产品需求bug:产品在需求设计上没有考虑充分,导致存在的漏洞
  • 稳定性问题:* 系统波动:对用户操作有一定的影响,一般排查较为困难,和用户电脑配置、环境或者用户操作等也有一定的关系* 系统故障:影响面比较大,用户无法操作及使用

1.2、常用解决步骤

  • 线上问题:需要根据Bug定级标准评估后,由开发、测试、产品共同决定应该立即回滚、立即修复或排期修复
  • 外部依赖问题:明确上游依赖系统的技术对接人,及时反馈问题,跟踪解决
  • 系统遗留 bug:此类bug优先级一般不高,且存在较久,需要衡量投入产出比后,开发排期修复
  • 产品需求bug:产品根据优先级评估,完善产品流程后,排期优化
  • 稳定性问题:* 系统波动:查看日志,监控等确认问题。* 系统故障:反馈SRE & 基建相关方处理

1.3、问题定级

  • 致命(critical) 功能影响:系统主流程无法工作,阻碍核心功能使用。* 影响范围:影响范围广* 采取策略:* 业务上线导致:执行回滚计划,立即回滚
  • 严重(high) 功能影响:阻碍特定常用模块功能使用,或问题影响大部分用户。* 影响范围:影响部分用户* 采取策略:评估是否能立刻修复(半小时内),否则立即回滚
  • 一般(medium) 功能影响:不影响主流程和常用模块,低频模块功能受阻,或小的特性影响,例如显示异常、UI展示错误,接口响应慢等。* 影响范围:影响小部分用户* 采取策略:上线导致的bug:开发评估,是否能短期修复(1d内),产品及测试评估,是否集中修复上线,否则走下一个周期产品排期迭代
  • 轻微(low) 功能影响:文案错误,美观体验性、易用性、遗留问题、合理性建议等问题。* 影响范围:影响极少数用户* 采取策略:走下一个周期产品排期迭代

2、线上报警响应和升级标准

报警级别响应&处理解决(要求)报警升级(标准要求)系统提醒
P0报警立即响应;0 ~ 10min 内响应尽快解决;0 ~ 30min内需解决10min内如没有响应,报警需升级至团队TL30min内如没有解决,报警需升级至团队TL备注:响应后30min内不再电话重复报警通知同一人电话,微信群,私信
P1报警尽快响应;0 ~ 1h内响应尽快解决;0 ~ 2h内需解决1h内如没有响应,需升级报警为P0级别报警2h内如没有解决,需升级报警为P0级别报警微信群,私信
P2报警尽快响应;0 ~ 12h 内响应尽快解决;0 ~24h内需解决P2由业务负责人决定要不要升级微信群
P3报警不做要求不做要求不做要求微信群

3、线上问题修复与处理流程

总结

本文主要针对稳定性相关定义了一系列的规范,如之前所说流程上的规范和平台能力的建设一样重要。

最后

整理了一套《前端大厂面试宝典》,包含了HTML、CSS、JavaScript、HTTP、TCP协议、浏览器、VUE、React、数据结构和算法,一共201道面试题,并对每个问题作出了回答和解析。

有需要的小伙伴,可以点击文末卡片领取这份文档,无偿分享

部分文档展示:



文章篇幅有限,后面的内容就不一一展示了

有需要的小伙伴,可以点下方卡片免费领取

相关文章:

一、前端稳定性规约该如何制定

前言 稳定性是数学或工程上的用语&#xff0c;判别一系统在有界的输入是否也产生有界的输出。若是&#xff0c;称系统为稳定&#xff1b;若否&#xff0c;则称系统为不稳定。 前端稳定性的体系建设大约可以分为了发布前&#xff0c;发布后&#xff0c;以及事故解决后三个阶段…...

Docker(三)Docker网络

目录1 结论知识2 link3 自定义网络1 结论知识 每一个容器启动时都会被分配一个ip地址&#xff1b;宿主机可以ping通任何一个docker容器&#xff1b;启动docker之后&#xff0c;宿主机默认网卡docker0&#xff0c;启动容器在宿主机注册网卡&#xff0c;使用的evth-pair技术&…...

Js高级API

Decorator装饰器 针对属性 / 方法的装饰器 // decorator 外部可以包装一个函数&#xff0c;函数可以带参数function Decorator (type) {/*** 这里是真正的decorator* description: 装饰的对象的描述对象* target:装饰的属性所述类的原型&#xff0c;不是实例后的类。如果装饰…...

团队:在人身上,你到底愿意花多大精力?

你好&#xff0c;我是叶芊。 今天我们讨论怎么带团队这个话题&#xff0c;哎先别急着走&#xff0c;你可能跟很多人一样&#xff0c;觉得带团队离我还太远&#xff0c;或者觉得我才不要做管理&#xff0c;我要一路技术走到底&#xff0c;但是你知道吗&#xff1f;带团队做事&am…...

Linux-Poolkit提权

Linux-Poolkit提权 漏洞复现- Linux Polkit 权限提升漏洞&#xff08;CVE-2021-4034&#xff09; 0x00 前言 polkit是一个授权管理器&#xff0c;其系统架构由授权和身份验证代理组成&#xff0c;pkexec是其中polkit的其中一个工具&#xff0c;他的作用有点类似于sudo&#x…...

【React全家桶】React Hooks

React Hookshooks介绍useState(保存组件状态)useEffect()useCallback(记忆函数)useMemo() 记忆组件useRef(保存引用值)useReducer()useContext(减少组件层级)自定义hookshooks介绍 在react类组件&#xff08;class&#xff09;写法中&#xff0c;有setState和生命周期对状态进…...

CLIP论文阅读

Learning Transferable Visual Models From Natural Language Supervision 利用自然语言的监督信号学习可迁移的视觉模型 概述 迁移学习方式就是先在一个较大规模的数据集如ImageNet上预训练&#xff0c;然后在具体的下游任务上再进行微调。这里的预训练是基于有监督训练的&am…...

华为OD机试真题Python实现【身高排序】真题+解题思路+代码(20222023)

身高排序 题目 小明今年升学到了小学一年级, 来到新班级后,发现其他小朋友身高参差不齐, 然后就想基于各小朋友和自己的身高差,对他们进行排序, 请帮他实现排序 🔥🔥🔥🔥🔥👉👉👉👉👉👉 华为OD机试(Python)真题目录汇总 输入 第一行为正整数H…...

Spring Cache的使用--快速上手篇

系列文章目录 分页查询–Java项目实战篇 全局异常处理–Java实战项目篇 完善登录功能–过滤器的使用 更多该系列文章请查看我的主页哦 文章目录系列文章目录前言一、Spring Cache介绍二、Spring Cache的使用1. 导入依赖2. 配置信息3. 在启动类上添加注解4. 添加注解4.1 CacheP…...

(三十八)MySQL是如何支持4种事务隔离级别的?Spring事务注解是如何设置的?

上次我们讲完了SQL标准下的4种事务隔离级别&#xff0c;平时比较多用的就是RC和RR两种级别&#xff0c;那么在MySQL中也是支持那4种隔离级别的&#xff0c;基本的语义都是差不多的 但是要注意的一点是&#xff0c;MySQL默认设置的事务隔离级别&#xff0c;都是RR级别的&#x…...

【博学谷学习记录】大数据课程-学习第八周总结

Hadoop初体验 使用HDFS 1.从Linux本地上传一个文本文件到hdfs的/目录下 #在/export/data/目录中创建a.txt文件&#xff0c;并写入数据 cd /export/data/ touch a.txt echo "hello" > a.txt #将a.txt上传到HDFS的根目录 hadoop fs -put a.txt /2.通过页面查看…...

go cobra初试

cobra开源地址 https://github.com/spf13/cobra cobra是什么 Cobra is a library for creating powerful modern CLI applications. Cobra is used in many Go projects such as Kubernetes, Hugo, and GitHub CLI to name a few. This list contains a more extensive lis…...

【react全家桶】 事件处理

文章目录03 【事件处理】1.React事件2.类式组件绑定事件3.向事件处理程序传递参数4.收集表单数据5.受控和非受控组件5.函数的柯里化03 【事件处理】 React的事件是通过onXxx属性指定事件处理函数 React 使用的是自定义事件&#xff0c;而不是原生的 DOM 事件 React 的事件是通过…...

RabbitMQ交换机(Exchanges)

目录 一、概念 二、临时队列 三、绑定 四、Fanout&#xff08;扇出交换机&#xff09; &#xff08;一&#xff09;介绍 &#xff08;二&#xff09;实战 五、Direct&#xff08;直接交换机&#xff09; &#xff08;一&#xff09;介绍 &#xff08;二&#xff09;实…...

2023年java初级面试题10道基础试水题

1、面向对象的特征有哪些方面?答&#xff1a;面向对象的特征主要有以下几个方面&#xff1a;1)抽象&#xff1a;抽象是将一类对象的共同特征总结出来构造类的过程&#xff0c;包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为&#xff0c;并不关注这些行为的细节…...

烙铁使用方法

烙铁使用 烙铁是硬件工程师最经常使用的工具之一,一把性能保持良好的烙铁能帮助我们快速进行电路调试。烙铁第一次加热时采用焊锡均匀涂覆在烙铁头上,以便去除包在烙铁头上面的氧化物。在工作中我们需要根据情况选择合适的烙铁头类型,合适的温度进行操作。完成焊接后要在烙铁…...

golang日期转换、日期增减计算、时间戳转换

// 固定日期格式format : "2006-01-02 15:04:05"// 按本地时区解析日期location, _ : time.ParseInLocation(format, "2022-02-20 11:30:00", time.Local)// 增加1年&#xff0c;三个参数分别是&#xff1a;年&#xff0c;月&#xff0c;日date : location…...

Android 多种支付方式的优雅实现

场景App 的支付流程&#xff0c;添加多种支付方式&#xff0c;不同的支付方式&#xff0c;对应的操作不一样&#xff0c;有的会跳转到一个新的webview&#xff0c;有的会调用系统浏览器&#xff0c;有的会进去一个新的表单页面&#xff0c;等等。并且可以添加的支付方式也是不确…...

算法设计与分析期末考试复习(三)

动态规划 动态规划算法与分治法类似&#xff0c;其基本思想也是将待求解问题分成若干个子问题。但是经分解得到的子问题往往不是互相独立的。在用分治法求解时&#xff0c;有些子问题被重复计算机了许多次。 如果能够保存已解决的子问题的答案&#xff0c;而在需要时再找出已求…...

ZCMU--1970: 潜伏者

Description R 国和 S 国正陷入战火之中&#xff0c;双方都互派间谍&#xff0c;潜入对方内部&#xff0c;伺机行动。  历尽艰险后&#xff0c;潜伏于 S 国的 R 国间谍小 C 终于摸清了 S 国军用密码的编码规则&#xff1a;  1&#xff0e; S 国军方内部欲发送的原信息经过加…...

云计算——弹性云计算器(ECS)

弹性云服务器&#xff1a;ECS 概述 云计算重构了ICT系统&#xff0c;云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台&#xff0c;包含如下主要概念。 ECS&#xff08;Elastic Cloud Server&#xff09;&#xff1a;即弹性云服务器&#xff0c;是云计算…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化&#xff1a;从政策驱动到多元盈利 政策全面赋能 2025年4月&#xff0c;国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》&#xff0c;首次明确虚拟电厂为“独立市场主体”&#xff0c;提出硬性目标&#xff1a;2027年全国调节能力≥2000万千瓦&#xff0…...

LOOI机器人的技术实现解析:从手势识别到边缘检测

LOOI机器人作为一款创新的AI硬件产品&#xff0c;通过将智能手机转变为具有情感交互能力的桌面机器人&#xff0c;展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家&#xff0c;我将全面解析LOOI的技术实现架构&#xff0c;特别是其手势识别、物体识别和环境…...

抽象类和接口(全)

一、抽象类 1.概念&#xff1a;如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象&#xff0c;这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法&#xff0c;包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中&#xff0c;⼀个类如果被 abs…...

【Linux】Linux安装并配置RabbitMQ

目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的&#xff0c;需要先安…...

LangChain 中的文档加载器(Loader)与文本切分器(Splitter)详解《二》

&#x1f9e0; LangChain 中 TextSplitter 的使用详解&#xff1a;从基础到进阶&#xff08;附代码&#xff09; 一、前言 在处理大规模文本数据时&#xff0c;特别是在构建知识库或进行大模型训练与推理时&#xff0c;文本切分&#xff08;Text Splitting&#xff09; 是一个…...