语雀故障事件——P0级别事故启示录 发生肾么事了? 怎么回事?

在这里插入图片描述

前言

最近,阿里系的语雀出了一个大瓜,知名在线文档编辑与协同工具语雀发生故障,崩溃近10小时。。。。最后,官方发布了一则公告,我们一起来看看这篇公告,能不能有所启发。

目录

  • 前言
  • 引出
  • 一、语雀P0故障回顾
    • 1、发生肾么事了???
    • 2、官方公告说了啥?
  • 二、解构官方公告
    • 1、怎么回事?
    • 2、解构改进措施
  • 三、聚焦 “可监控,可灰度,可回滚”
    • 1、可监控
    • 2、可灰度
    • 3、可回滚
  • 总结

引出


1.在保证分区容错下,无法同时做到一致性和可用性。系统设计时只能选择一个目标,在P一定会出现的情况下,A和C之间只能实现一个,这就是CAP定理。

  • CP: 强一致性,弱可用性,牺性部分机器的可用性,保证数据一致性,如zookeeper、es、Naocs
  • AP: 强可用性,弱一致性,牺牲一致性,保证可用性,如Eureka

2.可监控,可灰度,可回滚

一、语雀P0故障回顾

1、发生肾么事了???

在这里插入图片描述

2、官方公告说了啥?

在这里插入图片描述

各位语雀的用户

10 月 23 日语雀出现重大服务故障,且持续 7 个多小时才完全恢复,给用户使用造成极大不便,对此我们深感抱歉。经过复盘,我们在这里向大家进一步说明故障原因、修复过程和改进措施。

故障原因及处理过程:

10 月 23 日下午,服务语雀的数据存储运维团队在进行升级操作时,由于新的运维升级工具 bug,导致华东地区生产环境存储服务器被误下线。受其影响,语雀数据服务发生严重故障,造成大面积的服务中断。为了尽快恢复服务,我们和数据存储运维团队全力进行数据恢复工作,但受限于恢复方案、数据量级等因素,整体用时较长。具体过程如下:

14:07 数据存储运维团队收到监控系统报警,定位到原因是存储在升级中因新的运维工具 bug 导致节点机器下线;14:15 联系硬件团队尝试将下线机器重新上线;15:00 确认因存储系统使用的机器类别较老,无法直接操作上线,立即调整恢复方案为从备份系统中恢复存储数据。15:10 开始新建存储系统,从备份中开始恢复数据,由于语雀数据量庞大,此过程历时较长,19 点完成数据恢复;同时为保障数据完整性,在完成恢复后,用时 2 个小时进行数据校验;21 点存储系统通过完整性校验,开始和语雀团队联调,最终在 22 点恢复语雀全部服务。用户所有数据均未丢失。

改进措施:

通过这次故障我们深刻认识到,语雀作为一款服务千万级客户的文档产品,应该做到更完善的技术风险保障和高可用架构设计,尤其是面向技术变更操作的“可监控,可灰度,可回滚”的系统化建设和流程审计,从同 Region 多副本容灾升级为两地三中心的高可用能力,设计足够的数据和系统冗余实现快速恢复,并进行定期的容灾应急演练。只有这样,才能提升严重基础设施故障时的恢复速度,并从根本上避免这类故障再次出现。为此我们制定了如下改进措施:

1、升级硬件版本和机型,实现离线后的快速上线。该措施在本次故障修复中已完成;

2、运维团队加强运维工具的质量保障与测试,杜绝此类运维 bug 再次发生;

3、缩小运维动作灰度范围,增加灰度时间,提前发现 bug;

4、从架构和高可用层面改进服务,为语雀增加存储系统的异地灾备。

赔偿方案:

为了表达我们的歉意,我们将向所有受到故障影响的用户提供如下赔偿方案:

针对语雀个人用户,我们赠送 6 个月的会员服务。操作流程:进入工作台「账户设置」,点击左侧「会员信息」,在会员信息页面点击「立即领取」,即可获得赠送服务。

针对语雀空间用户,由于情况比较复杂,我们会单独制定赔偿方案。请空间管理员留意语雀站内信。

这次的故障让我们深切地感受到了用户对语雀的依赖以及语雀肩上的重大责任。再次向所有语雀用户表达我们诚挚的歉意。我们将持续提升语雀的服务质量和服务稳定性,不辜负每一位用户的信任!

语雀团队

2023 年 10 月 24 日

二、解构官方公告

1、怎么回事?

10 月 23 日下午,服务语雀的数据存储运维团队在进行升级操作时,由于新的运维升级工具 bug,导致华东地区生产环境存储服务器被误下线。

  • 14:07 数据存储运维团队收到监控系统报警,定位到原因是存储在升级中因新的运维工具 bug 导致节点机器下线;【说明人家有运维监控系统

  • 14:15 联系硬件团队尝试将下线机器重新上线;15:00 确认因存储系统使用的机器类别较老,无法直接操作上线,立即调整恢复方案为从备份系统中恢复存储数据。【有备份系统,保存所有历史数据

  • 15:10 开始新建存储系统,从备份中开始恢复数据,由于语雀数据量庞大,此过程历时较长,19 点完成数据恢复;

    • 同时为保障数据完整性,在完成恢复后,用时 2 个小时进行数据校验;【数据校验,数据完整性
    • 21 点存储系统通过完整性校验,开始和语雀团队联调,最终在 22 点恢复语雀全部服务。【数据恢复,开始联调
    • 用户所有数据均未丢失。【硬件有价,数据无价

2、解构改进措施

通过这次故障我们深刻认识到,语雀作为一款服务千万级客户的文档产品,应该做到更完善的技术风险保障和高可用架构设计,尤其是面向技术变更操作的“【【可监控,可灰度,可回滚】】”的系统化建设和流程审计,从同 Region 多副本容灾升级为两地三中心的高可用能力,设计足够的数据和系统冗余实现快速恢复,并进行定期的容灾应急演练。只有这样,才能提升严重基础设施故障时的恢复速度,并从根本上避免这类故障再次出现。为此我们制定了如下改进措施:

1、升级硬件版本和机型,实现离线后的快速上线。该措施在本次故障修复中已完成;
2、运维团队加强运维工具的质量保障与测试,杜绝此类运维 bug 再次发生;
3、缩小运维动作灰度范围,增加灰度时间,提前发现 bug;
4、从架构和高可用层面改进服务,为语雀增加存储系统的异地灾备

我们看到事故复盘中,出现了**【【可监控,可灰度,可回滚】】**,这是什么意思,可监控如何实现?可灰度是啥意思,实际怎么操作?可回滚是啥?我们会在下一章分析。

在这里插入图片描述

另外,这里反复提到了容灾高可用,这和CAP理论息息相关,1998年,加州大学的计算机科学家Eric Brewer提出,分布式系统有三个指标。

  • Consistency(一致性)
  • Availability(可用性)
  • Partition tolerance(分区容错性)

其中最为重要的是Partition tolerance(分区容错性),也是所有分布式系统必须满足的条件:

  • Partition(分区):因为网络故障或其它原因导致分布式系统中的部分节点与其它节点失去连接,形成独立分区。

  • Tolerance(容错):容错表示在集群出现分区时,整个系统也要持续对外提供服务。

在保证分区容错下,无法同时做到一致性和可用性。系统设计时只能选择一个目标,在P一定会出现的情况下,A和C之间只能实现一个,这就是CAP定理。

  • CP: 强一致性,弱可用性,牺性部分机器的可用性,保证数据一致性,如zookeeper、es、Naocs
  • AP: 强可用性,弱一致性,牺牲一致性,保证可用性,如Eureka

通过上面的分析,我们看到语雀采用的是高可用容灾的策略,也就是AP模式,保证强的可用性,本次事件就是造成了大面积的不可用

在这里插入图片描述

详细的CAP理论可参考下面博客:

分布式事务——CAP理论 & 解决分布式事务的思路 & Seata组件初识 和 部署

在这里插入图片描述

三、聚焦 “可监控,可灰度,可回滚”

1、可监控

监控(Monitoring):收集、分析和使用信息来观察一段时间内的运行进度,并且进行相应的决策管理的过程。监控侧重于观察特定指标

可观测性(Observability):通过分析系统生成的数据理解推演出系统内部的状态。

在这里插入图片描述
可使用的工具JVisualVM、JConsole、skywalking、Prometheus和Grafana来实现Java Web应用程序的监控

JVisualVM:https://visualvm.github.io/

在这里插入图片描述

参考文章:
https://zhuanlan.zhihu.com/p/512714915#

2、可灰度

什么是灰度发布?

  • 灰度发布,又名金丝雀发布,或者灰度测试,是指在黑与白之间能够平滑过渡的一种发布方式。在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。

灰度发布是对某一产品的发布逐步扩大使用群体范围,也叫灰度放量。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。

灰度期:灰度发布开始到结束期间的这一段时间,称为灰度期。

灰度发布的意义
灰度发布能及早获得用户的意见反馈,完善产品功能,提升产品质量,让用户参与产品测试,加强与用户互动,降低产品升级所影响的用户范围。

灰度发布的策略

  1. 按照流量阶段性发布,先随机给5%的用户使用新版本,没问题后,再依次给20%、50%、75%的用户使用新版本,最后100%;
  2. 按照用户的业务属性灰度,VIP优先等…

3、可回滚

就是想git一样,可以把版本进行回退。

在这里插入图片描述

总结

1.在保证分区容错下,无法同时做到一致性和可用性。系统设计时只能选择一个目标,在P一定会出现的情况下,A和C之间只能实现一个,这就是CAP定理。

  • CP: 强一致性,弱可用性,牺性部分机器的可用性,保证数据一致性,如zookeeper、es、Naocs
  • AP: 强可用性,弱一致性,牺牲一致性,保证可用性,如Eureka

2.可监控,可灰度,可回滚

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/121303.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重复控制器的性能优化

前言 重复控制器在控制系统中是比较优秀的控制器,在整流逆变等周期性输入信号时,会有很好的跟随行,通常可以单独使用,也可以与其他补偿器串联并联使用。 这里我来分析一下重复控制器的重复控制器的应用工况以及其的优缺点。 分析…

Mybatis-Plus(企业实际开发应用)

一、Mybatis-Plus简介 MyBatis-Plus是MyBatis框架的一个增强工具,可以简化持久层代码开发MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 官网&a…

Python深度学习实战-基于class类搭建BP神经网络实现分类任务(附源码和实现效果)

实现功能 上篇文章介绍了用Squential搭建BP神经网络,Squential可以搭建出上层输出就是下层输入的顺序神经网络结构,无法搭出一些带有跳连的非顺序网络结构,这个时候我们可以选择类class搭建封装神经网络结构。 第一步:import ten…

基于情感词典的情感分析方法

计算用户情绪强弱性,对于每一个文本都可以得到一个情感分值,以情感分值的正负性表示情感极性,大于0为积极情绪,小于0反之,绝对值越大情绪越强烈。 基于情感词典的情感分析方法主要思路: 1、对文本进行分词…

影响光源的因素

影响光源的因素 对比度 1.对比度 均匀性 2.均匀性 色彩还原性 3.色彩还原性 其他因素: 4. 亮度 : 光源 亮度是光源选择时的重要参考,尽量选择亮度高的光源。 5. 鲁棒性 : 鲁棒性是指光源是否对部件的位置敏感度最小 。 6. 光…

不同设备的请求头信息UserAgent,Headers

一、电脑端 【设备名称】:电脑 Win10 【应用名称】:win10 Edge 【浏览器信息】:名称:(Chrome);版本:(70.0) 【请求头信息】:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Ch…

企业如何安全跨国传输30T文件数据

对于一些对数据敏感性比较高的企业,如IT企业和国企等,跨国数据传输是当今企业面临的一个重要挑战,尤其是当数据量达到30T这样的规模时,如何保证数据的速度、安全和合规性,就成为了企业必须考虑的问题。本文将从以下几个…

【Java题】输出基本数据类型的最大值和最小值,以及float和double的正无穷大值和负无穷大值

一:代码 public class Test {public static void main(String[] args) {//输出byte型的最大值与最小值System.out.println(Byte.MAX_VALUE);System.out.println(Byte.MIN_VALUE);//输出short型的最大值与最小值System.out.println(Short.MAX_VALUE);System.out.pri…

RTE(Runtime Environment)

RTE(Runtime Environment)是一个运行时环境,在这个环境里,你可以实现的功能是: 作为一个缓冲buffer给应用层和BSW层的接口(例如COM)用来存储数据,也就是说定义一个全局变量供上层和下…

Django实战项目-学习任务系统-任务管理

接着上期代码框架,开发第3个功能,任务管理,再增加一个学习任务表,用来记录发布的学习任务的标题和内容,预计完成天数,奖励积分和任务状态等信息。 第一步:编写第三个功能-任务管理 1&#xff0…

二、BurpSuite Decoder解码器

一、编码解码 解释:BurpSuite 可以用这个模块来轻松进行编码解码,下面是支持的类型 URL HTML Base64 ASCIIhex Hex Octal Binary Gzip 注意:特别注意的是URL编码,一般的在线网站都无法对比如‘abc’的文本编码,burps…

目标检测及锚框、IoU

1. 目标检测 物体检测(目标检测)是计算机视觉和数字图像处理的热门方向,意在判断一幅图像上是否存在感兴趣物体,并给出物体分类及位置等(What and Where)。本文主要进行物体检测研究背景、发展脉络、相关算…

禁止chrome浏览器更新方式

1、禁用更新服务 WinR调出运行,输入services.msc,进入服务。 在服务中有两个带有Google Update字样,双击打开后禁用,并把恢复选项设置为无操作。 2、删除计划任务 运行taskschd.msc,打开计划任务程序库,在…

SDRAM学习笔记(MT48LC16M16A2,w9812g6kh)

一、基本知识 SDRAM : 即同步动态随机存储器(Synchronous Dynamic Random Access Memory), 同步是指其时钟频率与对应控制器(CPU/FPGA)的系统时钟频率相同,并且内部命令 的发送与数据传输都是以该时钟为基准&#xff…

【C#】LIMS实验室信息管理系统源码

一、系统概述 LIMS(Laboratory Information Management System)即实验室信息管理系统,是通过对样品检验流程、分析数据及报告、实验室资源和客户信息等要素的综合管理,按照标准化实验室管理规范,建立符合实验室业务流程的质量体系,实现实验室信息化管理。是实验室提高分析水平…

CSS 滚动驱动动画与 @keyframes 新语法

CSS 滚动驱动动画与 keyframes 在 CSS 滚动驱动动画相关的属性出来之后, keyframes 也迎来变化. 以前, keyframes 的值可以是 from, to, 或者百分数. 现在它多了一种属性的值 <timeline-range-name> <percentage> 建议先了解 animation-range 不然你会对 timeli…

[RISC-V]verilog

小明教IC-1天学会verilog(7)_哔哩哔哩_bilibili task不可综合&#xff0c;function可以综合

4+非肿瘤纯生信。氧化应激+WGCNA+药物预测筛序关键基因

今天给同学们分享一篇非肿瘤氧化应激WGCNA的生信文章“Identification of oxidative stress-related biomarkers associated with the development of acute-on-chronic liver failure using bioinformatics”&#xff0c;这篇文章于2023年10月10日发表在Scientific Reports期刊…

数据库数据恢复—Oracle数据库报错ORA-01110错误的数据恢复案例

Oracle数据库故障&#xff1a; 北京某公司一台运行oracle数据库的服务器&#xff0c;机房意外断电导致该服务器重启&#xff0c;重启后发现oracle数据库报错。该Oracle数据库没有备份。 Oracle数据库数据恢复过程&#xff1a; 1、北亚企安数据恢复工程师检查该oracle数据库的数…

input改造文件上传,el-table的改造,点击上传,拖拽上传,多选上传

第一个input标签效果 第二个input标签的效果 el-table的改造效果 <template><div class"outerBox"><div class"analyze" v-if"status"><div class"unFile"><div class"mainBox"><img clas…