【闲谈】从网易云事件看开发团队如何应对突发的技术故障和危机

          8月19日下午,网易云音乐遇到了一次严重的服务器故障,导致网页端出现 502 Bad Gateway 报错,且应用程序(App)也无法正常使用。这一事件不仅影响了用户的正常使用,还可能对公司声誉和经济造成了一定的损失。据推测,问题可能与基础设施相关,如数据中心迁移或人员调整后的交接失误。不过,网易云官方澄清称并没有出现数据库删除等严重事故,并且快速修复了问题。作为补偿,网易云为受影响的用户提供了7天的免费会员。

        无独有偶,网易云的服务器故障并不是第一个案例,早在2018年10月,全球知名的代码托管平台GitHub 就遭遇了近24小时的中断,开发者无法正常进行代码提交和项目管理。导致大量IT行业公司开发进度受到影响,据悉,该故障是由于数据库故障导致的,GitHub 的数据库冗余设计未能有效应对该故障。

        除去压力原因,认为原因也会造成服务器故障。2017年2月,亚马逊一名工程师在维护系统的过程中,由于误操作输入了一条错误的指令,导致亚马逊的 AWS S3 服务在美国东部的一个区域发生了大规模宕机,对全球范围内的大量网站和服务造成了严重影响。

        此外,还有许多人熟知的Google云服务中断事件,该事件发生在2019年6月,由于Google内部的网络问题导致部分网络流量过载,Google的多个云服务,如Gmail、YouTube等,因数据中心的网络拥堵问题,在北美和欧洲的部分地区中断了几个小时,许多依赖 Google Cloud 的服务和应用也受到了影响。

        技术故障不只会影响到公司和开发人员,也会对用户造成许多不便甚至损失。2022年我国春节期间,支付宝发生大面积宕机,用户无法使用支付宝完成支付、转账等功能,由于事发在春节期间,为用户带来了巨大不便,大大影响了用户体验,也对平台形象和用户忠诚度造成了许多负面影响。虽然支付宝官方事后并未公开具体造成原因,但许多业内人士推测该次宕机事件很可能与春节期间用户流量激增、服务器过载过大有关。 

        如果说到“耳熟能详”,那么不得不提起电商大促时会经常出现的各种宕机事件,在“双十一”、“618”刚火时,电商平台经常会出现宕机。例如2019年“双十一”期间,淘宝部分页面在活动开始时就出现无法加载或交易失败的情况,用户无法顺利进行购物,虽然事件发生后淘宝团队反应迅速,快速修复了问题,但仍然导致了部分用户的交易受到影响。2021年京东“618”购物节开始不久,京东的移动端和部分网页端也出现了无法加载的问题,使得用户无法完成购买和支付操作,许多商家蒙受了巨大损失。在近几年的电商大促中,我们也可以看到各个平台为了缓解流量压力,不得不做出的一些“让步”措施。比如支付宝官方发布公告称,因“双十一”大促火爆,可能出现部分用户网商货、商家服务等入口不可见的情况;天猫商城也发出公告,双11期间商家订单量激增,为了帮助商家在此期间有序高效的为消费者服务,针对“未发货”订单,退款申请将于11月12日0点开通

        对于开发人员而言,“非常规”事件是一个考验,更是突破。据说每逢双十一,蚂蚁金服的项目组成员们总要供上关二爷,穿上红内裤,换上红战袍,存几瓶红酒,烧几炉香。按支付宝双十一保障团团长陈亮的话来说,这是对技术的敬畏。双十一作为枝节空前庞杂的项目,每个事物的细节上都有无数个随机的可能性,早已超出了人能控制的边界,黄勇能做的就是制定“容灾”机制,尽力去逼近那个不可能到达的确定性。双十一对于普通用户而言是一场狂欢,却是技术人员的一场“战斗”。黄勇曾在双十一的前一晚向支付宝双十一作战室的成员发了邮件,仔细交代了“如果当晚茶杯在电脑上打翻了怎么办”这个主题。

        双十一项目的负责人在接受采访时提起,2010 年第二次迎接双 11 的支付宝经历了一次“4 秒惊魂”。11 日的 23 时 59 分 30 秒,双 11 结束前半分钟,支付宝核心账务系统突然报警,资源行将耗尽。当时整个支付宝的账务数据库没有进行过任何拆分,一旦系统崩溃,所有业务都会挂掉,对淘宝和支付宝都会造成灾难性损失。在工程师将一个会计系统的应用关掉,释放出来资源时,离数据库崩溃只剩 4 秒。2012 年双 11 之前,支付宝技术组已经把能想象到的压力测试做了个遍,但当晚高峰期还是出了岔子,运维工程师巩杰记得,当时后台一条数据通道设置的阈值太低,导致短暂宕机,但系统认定为无法响应,于是自动将其剔除了,随后服务器一台接一台地挂掉,直到做了降级,切掉一部分流量之后,系统才恢复正常交易。对于开发人员而言,不可谓不惊险。在双十一压力最大的那几年,整个支付宝技术团队每年要花费几个月乃至半年时间来"练兵",做各种技术结构调整、系统测试,只为准备好双十一当晚的那几秒。

        作为开发人员,开发团队应该如何快速响应和高效解决问题,以减少类似问题的发生或者在事件发生时做出迅速反应呢?

        首先肯定是要建立完善的应急响应机制,包括监控和告警系统、响应团队,及时监控服务器、数据库、API等性能指标,一旦出现异常,立即触发告警,确保有专门的技术团队负责故障应急响应,包括开发、运维、安全和通信等部门的协作。同时也要制定好一套故障严重程度分级,在事故发生时,确保紧急情况优先处理。

        此外,我们要迅速找到问题的根源,从服务器和应用的日志入手,定位错误代码和异常情况,对不同的系统模块(如负载均衡、缓存层、数据库)进行分段排查,找出问题发生的环节。使用蓝绿部署或灰度发布技术,将流量暂时切换至正常的服务节点,减少用户影响。

        在平时,我们也要提升自己的灾备能力,加强日常演练。在架构设计中,通过多数据中心部署、负载均衡、集群化等冗余化设计措施,确保单点故障不会影响全局。同时定期进行数据库的备份,并具备快速的数据恢复能力,防止数据丢失对服务造成长期影响。在日常演练中发现潜在的系统瓶颈或流程问题,帮助团队优化应急方案。

        在事件得到处理后,团队也要进行复盘,找出导致问题的技术原因和管理层面的不足。从技术、流程、协作等各个维度进行分析,讨论如何避免类似问题,修复存在的漏洞或弱点,提升系统的鲁棒性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值