语雀暂别8小时:探究P0级故障幕后原因及补偿策略揭晓!

news2024/9/20 9:12:05

作者:苍何,CSDN 2023 年 实力新星,前大厂高级 Java 工程师,阿里云专家博主,土木转码,现任部门技术 leader,专注于互联网技术分享,职场经验分享。
🔥
热门文章推荐:

  • (1)对程序员来说,技术能力和业务逻辑哪个更重要?
  • (2)搭建GitHub免费个人网站(详细教程)
  • (3)itchat实现微信聊天机器人
  • (4)嗖嗖移动业务大厅(源码下载+注释全 值得收藏)

2023-10-25-语雀故障.jpg

大家好,我是苍何。在 1024 程序员节的前一天发生了一件震撼的事情,那就是语雀停服了近 8 个小时,期间包括官网、APP、客户端、 Web 端全面崩溃,且经过了漫长的 8 小时才得以修复。

这一故障简直可以载入软件开发史册,可以用不可思议来形容。我是第一次见互联网公司产品奔溃后是 502 或者重定向的错误,就连 B 站当年奔溃也会有友好提示页面,而语雀的这次奔溃,连静态错误页面都没有,真是让人大跌眼镜。

因为当时我正在语雀上写文档,也算是见证了整个事件的过程,这里也记录一下。

一、语雀是什么

语雀是蚂蚁集团内部孵化的一款笔记类工具,友好的 Markdown 支持,丰富的绘图模板、简洁的界面和近乎完美的知识库管理使得语雀收获了大量的用户,除去整个阿里和蚂蚁集团内部用户外,保守估计用户量千万级别以上,可谓是非常庞大的用户体系了。

语雀是什么

我也是一路见证了语雀的成长,早年间,还只是我们在整个集团内部使用,后面扩展到整个阿里,所有文档的沉淀都在语雀进行。后面因受到集团内一致好评以及从集团毕业后的用户的强烈渴望开放外网使用,于是有了外网的版本,从最初的 web 页面,到后面的 APP 和客户端的支持,到后面的数字花园,语雀产品始终走在同类产品前列,而且这个产品对互联网行业有着天然的支持,他甚至比我们更懂我们。

我离开蚂蚁后,也像大多数人一样,使用习惯了语雀,参加活动得了一年的会员,把所有的知识都从印象笔记移到了语雀,基本是 ALL in 语雀。

二、语雀暂别的这 8 小时

在 2023年10月23 日 14:10,突然语雀客户端断开连接,我重试了好几次也没用,一直提示的是这个界面:

image.png

刚开始以为是网络问题,关掉代理后重试也无果,后我又去网页版打开,也还是提示多次重定向失败。

image.png

我知道事情没这么简单,于是 14:19 我在用户群寻求帮助,相继其他小伙伴也发现了问题。

image.png

之后的这段时间到语雀官方发布通告,群里各种炸开了锅,有在说这得 325 了,有在说这是要赶在 1024 拿程序员祭天啊,讨论络绎不绝。

image.png

image.png

此时,很多竞品比如飞书,开始疯狂打起了广告,速度可谓惊人。

15:07 官方公众号上发布通知:

image.png

为了缓解大家数据丢失的焦虑,还特意强调数据不会丢失。

之后就是漫长的修复,期间语雀还是永远停留在了 502 这个界面。

image.png

三、故障复盘

关于这次事件,网上猜测的原因很多,最搞笑的是下面这条,当时看到笑了好久,哈哈哈!

image.png

具体原因大家也不用猜测和分析了,官方刚已经同胞了原因:关于语雀 23 日故障的公告
给官方通告做个总结:
:::info

  1. 故障时间:10月23日下午。
  2. 故障现象:语雀出现重大服务故障,持续 7 个多小时。
  3. 直接原因:数据存储运维团队在进行升级操作时,新的运维升级工具出现 bug。
  4. 具体细节:bug导致华东地区生产环境存储服务器被误下线,使语雀数据服务发生严重故障,造成大面积服务中断。
  5. 恢复过程
    • 因机器类别较老,无法直接操作上线,只能从备份系统中恢复存储数据。
    • 数据恢复过程耗时较长,直到晚上 22 点,语雀的全部服务才得以恢复。
      :::

此次的故障,完全脱离了蚂蚁技术军规的红线,即“可监控,可灰度,可回滚”,我记得当年在蚂蚁,从上到下,一直在强调三板斧的要求,因为大部分业务是涉及到资金嘛,所以我们的上线流程并没有想象中那么简单,通常一个小小的改动上线也要遵循上线的全套流程。

原因中说道,因新的运维工具升级出现 bug,导致华东地区生产环境存储服务器被误下线,这就有些不可思议了,按理说生产环境存储服务器的上下限是会经过严格的审批,从 TL 到业务 leader,经过层层审核才可操作,那么这中间是缺省了环节,还是相关审批人员的失职?这是语雀团队需要仔细反思的。

四、用户补偿

虽说这次语雀经过了长达如此之久的故障让人很震撼和不可思议,甚至有些让我对其产品失去信心,但其补偿方案看了那叫一个香。白嫖 6 个月的会员,没有领取的小伙伴赶紧冲一波了。

image.png

Ogv1N.jpg

五、我的思考

通过这次的事件,也有一些思考。

1. 强化预防措施

  • 在进行任何系统升级或修改之前,应确保有详尽的预案和充分的测试。
  • 加强运维工具的质量保障和测试,确保工具的稳定性和可靠性。
  • 始终坚持三板斧原则:即“可监控,可灰度,可回滚”,

2. 优化故障应对机制

  • 在故障发生时,能够迅速准确地定位问题,缩短故障恢复时间。
  • 建立健全的故障应急响应机制和流程,以便在出现问题时能够迅速、有序地进行处理。

3. 完善系统架构

  • 考虑系统的高可用性和灾备设计,减少单点故障的风险。
  • 考虑到机器的更新换代,避免因硬件陈旧导致的操作限制。

4. 增强用户沟通

  • 在故障发生时,及时、准确地通知用户,降低用户的不确定感和焦虑感。
  • 在故障恢复后,向用户说明故障原因和改进措施,增加用户的信任感。

5. 持续改进和学习

  • 从故障中吸取教训,总结经验,避免类似问题的再次发生。
  • 定期进行故障演练,提高团队的应对能力。

通过这次故障,相信语雀团队也能更清晰地认识到自身在服务稳定性和应急响应方面的不足,从而采取更加全面和有效的措施,不断优化和提高服务质量,为用户带来更好的使用体验。

最后如果大家有兴趣,欢迎关注下我语雀的数字花园:苍何的数字花园

苍何个人介绍.png

创作不易,如果本文对你有帮助,欢迎点赞、收藏加关注,你的支持和鼓励,是我创作的最大动力。
文章最下方关注图片.gif

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

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

相关文章

攻防世界-web-FlatScience

1. 题目描述 打开链接,看到如下界面 界面上的链接都点击下,发现都是一些英文论文 这些暂时是我们从界面上能发现的全部信息了 2. 思路分析 && 解题过程 2.1 先将网站使用nikto命令扫描一下 我们发现除了显式的界面外,还有两个隐藏…

基于MATLAB的Simulink搭建一阶低通滤波器

一、一阶低通滤波的原理 式子中的α作为滤波系数,X ( n ) 为本次的采样值,Y ( n − 1 ) 为上次滤波的输出值,Y ( n ) 为本次滤波后的输出值 一阶低通滤波器是一种常用的信号处理算法,用于去除高频噪声和平滑信号。其基本原理是通过…

4.2 QPainter的绘图接口介绍(上)

4.2 QPainter的接口介绍(上) 上一篇文章中讲述了在哪里绘图,怎么开始绘制,怎么跟绘制设备绑定、解绑等基础知识,今天就来点实操的,下面坐好了,开始阅读吧。 下图是《C++ GUI Programming with Qt 4》这本书中列出的关于QPainter常用的画图方法,基本上都是以draw开头,…

用libuv实现遍历文件系统

熟悉的陌生人 Node.js可能无人不知无人不晓,但Node.js底层实现libuv,恐怕认识的同学就不多了。 libuv是一个跨平台的高性能的异步I/O库,也是是一个网络I/O扩展库,是一个高性能事件驱动的程序库,封装了Windows和Unix平…

【C++】继承 ⑩ ( 继承机制中的 static 静态成员 | 子类中访问父类静态成员的方法 )

文章目录 一、继承机制中派生类中的 static 关键字1、子类继承父类静态成员2、父类静态成员访问控制权限的改变3、子类如何访问父类静态成员4、静态成员使用要点 二、完整代码示例 一、继承机制中派生类中的 static 关键字 1、子类继承父类静态成员 子类继承父类静态成员 : 父类…

Java商城免费搭建 VR全景商城 saas商城 b2b2c商城 o2o商城 积分商城 秒杀商城 拼团商城 分销商城 短视频商城

涉及平台 平台管理、商家端(PC端、手机端)、买家平台(H5/公众号、小程序、APP端(IOS/Android)、微服务平台(业务服务) 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis …

基于Java+SpringBoot+MyBatis+Vue前后端分离宠物领养设计与实现

博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

34二叉树-BFS和DFS求树的深度

目录 LeetCode之路——104. 二叉树的最大深度 分析 解法一:广度优先遍历 解法二:深度优先遍历 总结 深度优先搜索 (DFS) 广度优先搜索 (BFS LeetCode之路——104. 二叉树的最大深度 给定一个二叉树 root ,返回其最大深度。 二叉树的…

渗透实战|通过社工进网站后台

通过社工进网站后台 记录一次通过简单社工获取信息后进入后台的经过。打开思路,利用我们所有能够捕获的信息并串联起来。 0X0 开始: 打开网站发现是一个登录网站 随便输入账号密码,发现有用户名枚举: 0X1 获取icp备案企业&…

CSS高级的详细解析

CSS高级 目标:掌握定位的作用及特点;掌握 CSS 高级技巧 01-定位 作用:灵活的改变盒子在网页中的位置 实现: 1.定位模式:position 2.边偏移:设置盒子的位置 left right top bottom 相对定位 posit…

四个小车相对导航集中式无迹卡尔曼滤波(fullyCN-EKF)

背景 二维情况下,四个小车各自有绝对定位(GNSS),相互之间部分有相对定位(UWB)时,一个滤波器搞定四个小车的状态滤波。使用EKF。 建模 四个小车,每个有x、y两个轴,所以…

【网安大模型专题10.19】论文3:ChatGPT+自协作代码生成+角色扮演+消融实验

Self-collaboration Code Generation via ChatGPT 写在最前面朋友分享的收获与启发课堂讨论代码生成如何协作,是一种方法吗思路相同交互实用性 代码生成与自协作框架 摘要相关工作PPT学习大语言模型在代码生成方向提高生成的代码的准确性和质量:前期、后…

在 MaxPatrol SIEM 的帮助下,Positive Technologies 专家检测到影响超过 25 万用户的恶意软件

👨‍💻 从未经验证的来源下载软件?错误。从 torrent 跟踪器下载?致命错误。 八月份,我们的专家使用 MaxPatrol SIEM 在一家俄罗斯公司的网络中发现了异常活动。经过调查,CSIRT 团队(Positive T…

useLayoutEffect和useEffect的区别

使用方式 这两个函数的使用方式其实非常简单,他们都接受一个函数一个数组,只有在数组里面的值改变的情况下才会再次执行 effect。所以对于使用方式我就不过多介绍了,不清楚的可以先参考官网 。 差异 useEffect 是异步执行的,而…

AOP和OOP有什么异同点

面向对象编程(Object-Oriented Programming, OOP)和面向切面编程(Aspect-Oriented Programming, AOP)是两种不同的编程范式,它们各自有着独特的目标和实现方式。下面我将列出它们的一些主要异同点: 相同点 …

基于嵌入式Qt 开发板蜂鸣器(BEEP)

## 简介 在GEC6818开发板,开发板板载资源上有一个蜂鸣器(BEEP)。如下图原理图。此蜂鸣器直接接在一个 GPIO 上,并不是接在 PWM 上,管脚资源限制。 ​ ## 示例 想要控制这个蜂鸣器(BEEP),首先我们出厂内核已经默认将这个 LED 注册成了 gpio-leds 类型设备。 项目简…

Java中JVM、JRE和JDK三者有什么区别和联系?

任何语言或者软件的运行都需要环境。就像人要生活在空气中,鱼要活在水中,喜阴植物就不能放在阳光下暴晒一样,任何对象个体的存在都离不开其所需要的环境,编程语言亦是一样的。 java 语言的开发运行,也离不开 Java 语言…

EtherCAT从站转CclinkIE协议网关应用案例

远创智控的YC-ECT-CCLKIE网关,一款具有强大功能的ETHERCAT通讯网关。 它可以将ETHERCAT网络和CCLINK IE FIELD BASIC网络无缝连接起来。作为ETHERCAT总线中的从站,本网关可以接收来自ETHERCAT主站的数据,并将其传输到CCLINK IE FIELD BASIC网…