一、前端稳定性规约该如何制定
前言
稳定性是数学或工程上的用语,判别一系统在有界的输入是否也产生有界的输出。若是,称系统为稳定;若否,则称系统为不稳定。
前端稳定性的体系建设大约可以分为了发布前,发布后,以及事故解决后三个阶段。
在稳定性这一领域, 人的意识和经验与平台能力支撑一样重要。需要依赖平台提供的稳定性工具,但也需要对开发的过程和处理机制进行进一步规范,加强大家的稳定性意识。所以也分为了机制&规约 和 工具&平台能力两部分。
在机制和规约上,需要有整套规范的保障, 和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道面试题,并对每个问题作出了回答和解析。

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




文章篇幅有限,后面的内容就不一一展示了
有需要的小伙伴,可以点下方卡片免费领取
相关文章:
一、前端稳定性规约该如何制定
前言 稳定性是数学或工程上的用语,判别一系统在有界的输入是否也产生有界的输出。若是,称系统为稳定;若否,则称系统为不稳定。 前端稳定性的体系建设大约可以分为了发布前,发布后,以及事故解决后三个阶段…...
Docker(三)Docker网络
目录1 结论知识2 link3 自定义网络1 结论知识 每一个容器启动时都会被分配一个ip地址;宿主机可以ping通任何一个docker容器;启动docker之后,宿主机默认网卡docker0,启动容器在宿主机注册网卡,使用的evth-pair技术&…...
Js高级API
Decorator装饰器 针对属性 / 方法的装饰器 // decorator 外部可以包装一个函数,函数可以带参数function Decorator (type) {/*** 这里是真正的decorator* description: 装饰的对象的描述对象* target:装饰的属性所述类的原型,不是实例后的类。如果装饰…...
团队:在人身上,你到底愿意花多大精力?
你好,我是叶芊。 今天我们讨论怎么带团队这个话题,哎先别急着走,你可能跟很多人一样,觉得带团队离我还太远,或者觉得我才不要做管理,我要一路技术走到底,但是你知道吗?带团队做事&am…...
Linux-Poolkit提权
Linux-Poolkit提权 漏洞复现- Linux Polkit 权限提升漏洞(CVE-2021-4034) 0x00 前言 polkit是一个授权管理器,其系统架构由授权和身份验证代理组成,pkexec是其中polkit的其中一个工具,他的作用有点类似于sudo&#x…...
【React全家桶】React Hooks
React Hookshooks介绍useState(保存组件状态)useEffect()useCallback(记忆函数)useMemo() 记忆组件useRef(保存引用值)useReducer()useContext(减少组件层级)自定义hookshooks介绍 在react类组件(class)写法中,有setState和生命周期对状态进…...
CLIP论文阅读
Learning Transferable Visual Models From Natural Language Supervision 利用自然语言的监督信号学习可迁移的视觉模型 概述 迁移学习方式就是先在一个较大规模的数据集如ImageNet上预训练,然后在具体的下游任务上再进行微调。这里的预训练是基于有监督训练的&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种事务隔离级别,平时比较多用的就是RC和RR两种级别,那么在MySQL中也是支持那4种隔离级别的,基本的语义都是差不多的 但是要注意的一点是,MySQL默认设置的事务隔离级别,都是RR级别的&#x…...
【博学谷学习记录】大数据课程-学习第八周总结
Hadoop初体验 使用HDFS 1.从Linux本地上传一个文本文件到hdfs的/目录下 #在/export/data/目录中创建a.txt文件,并写入数据 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 使用的是自定义事件,而不是原生的 DOM 事件 React 的事件是通过…...
RabbitMQ交换机(Exchanges)
目录 一、概念 二、临时队列 三、绑定 四、Fanout(扇出交换机) (一)介绍 (二)实战 五、Direct(直接交换机) (一)介绍 (二)实…...
2023年java初级面试题10道基础试水题
1、面向对象的特征有哪些方面?答:面向对象的特征主要有以下几个方面:1)抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节…...
烙铁使用方法
烙铁使用 烙铁是硬件工程师最经常使用的工具之一,一把性能保持良好的烙铁能帮助我们快速进行电路调试。烙铁第一次加热时采用焊锡均匀涂覆在烙铁头上,以便去除包在烙铁头上面的氧化物。在工作中我们需要根据情况选择合适的烙铁头类型,合适的温度进行操作。完成焊接后要在烙铁…...
golang日期转换、日期增减计算、时间戳转换
// 固定日期格式format : "2006-01-02 15:04:05"// 按本地时区解析日期location, _ : time.ParseInLocation(format, "2022-02-20 11:30:00", time.Local)// 增加1年,三个参数分别是:年,月,日date : location…...
Android 多种支付方式的优雅实现
场景App 的支付流程,添加多种支付方式,不同的支付方式,对应的操作不一样,有的会跳转到一个新的webview,有的会调用系统浏览器,有的会进去一个新的表单页面,等等。并且可以添加的支付方式也是不确…...
算法设计与分析期末考试复习(三)
动态规划 动态规划算法与分治法类似,其基本思想也是将待求解问题分成若干个子问题。但是经分解得到的子问题往往不是互相独立的。在用分治法求解时,有些子问题被重复计算机了许多次。 如果能够保存已解决的子问题的答案,而在需要时再找出已求…...
ZCMU--1970: 潜伏者
Description R 国和 S 国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动。 历尽艰险后,潜伏于 S 国的 R 国间谍小 C 终于摸清了 S 国军用密码的编码规则: 1. S 国军方内部欲发送的原信息经过加…...
工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...
嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...
使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...
C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...
怎么让Comfyui导出的图像不包含工作流信息,
为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐) 在 save_images 方法中,删除或注释掉所有与 metadata …...
日常一水C
多态 言简意赅:就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过,当子类和父类的函数名相同时,会隐藏父类的同名函数转而调用子类的同名函数,如果要调用父类的同名函数,那么就需要对父类进行引用&#…...
LangFlow技术架构分析
🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...
