原文: https://mp.weixin.qq.com/s/2e2ovuwDrmwlu-vW0cKqcA
省流版: 故障的原因是云 API 服务新版本向前兼容性考虑不够和配置数据灰度机制不足的问题。
本次 API 升级过程中,由于新版本的接口协议发生了变化,在后台发布新版本之后对于旧版本前端传来的数据处理逻辑异常,导致生成了一条错误的配置数据,由于灰度机制不足导致异常数据快速扩散到了全网地域,造成整体 API 使用异常。
发生故障后,按照标准回滚方案将服务后台和配置数据同时回滚到旧版本,并重启 API 后台服务,但此时因为承载 API 服务的容器平台也依赖 API 服务才能提供调度能力,即发生了循环依赖,导致服务无法自动拉起。通过运维手工启动方式才使 API 服务重启,完成整个故障恢复。
想起了之前传闻某团队修复健康码因为健康码无法展示进不了大楼的事情了
1
7VO54YYGvw3LOF9U 248 天前 via iPhone 2
好奇健康码那事后来在哪修复的,门口蹲着?
|
2
sakilascott 248 天前 1
灰度跟生产不可能一模一样,系统越复杂,差异越是大。
在大多数复杂系统中,这个问题是个千古难题。 |
3
kincaid OP @hugi 人家运维公司说不清楚,不知道有没有当时的大佬现身说法了,https://news.sina.cn/gn/2021-12-22/detail-ikyamrmz0473496.d.html
|
4
standchan 248 天前
跟滴滴的那个有点像,升级出现问题后回滚困难。强行回滚时候又发现互相依赖的问题。
|
5
BeiChuanAlex 248 天前 6
随着时间的发展,人员不断流动,系统越来越大,业务越来越复制,代码越来越多,数据越来越多,导致的结果就是没人能了解全局了,所以这肯定不是最后一次故障,以后还是会有的。
|
6
weijancc 248 天前
结果是因为升级 API 导致的... 是不是该抓一个程序员来祭天
|
8
alanhe421 248 天前
循环依赖的解决办法不就是再引入一个 C ,解开 AB 的相互依赖?
|
9
zmzeng12 248 天前 via iPhone
API 不兼容导致了事故,但灰度机制不足才导致事故扩大到了全网。
|
10
hongfs 248 天前
|
11
crackidz 248 天前 1
挺好的,发一个故障分析,起码态度到位了
|
12
okaysir 248 天前 via Android
复杂度提升导致崩溃度增加。国内 IT 界甚至这届人类体系都是这趋势。
|
13
xmumiffy 248 天前 via Android
“期间共有 1957 个客户报障” 控制台都打不开了,是怎么报障的,只有有客户经理的才能算受到影响?
|
14
totoro52 248 天前
有人要打包走人了
|
16
StinkyTofus 248 天前
@alanhe421 #8 没有用的, 谁都知道问题的解决办法, 但是随着人员流动, 系统越来越庞大, 所有的机制都会维护不到位。
|
17
caqiko 248 天前 via Android
题外话,你们的 100 元代金券到账了吗?
|
19
Hopetree 248 天前
我看了一个文章,是关于服务状态监控的,他们的服务状态监控就是个摆设,状态有延迟也就算了,还不全(比如服务 A 挂了也影响到了 B ,他们的状态里面没有显示 B 的异常)
|
20
xiaket 248 天前 2
相比于国外厂商的 PIR, 这个故障分析很是避重就轻, 避实就虚.
|
21
louisxxx 248 天前 via iPad 1
同时回滚到旧版本,并重启 API 后台服务,但此时因为承载 API 服务的容器平台也依赖 API 服务才能提供调度能力,即发生了循环依赖。
这是哪个脑残设计的自己把自己锁死在房间里的架构? |
22
GarethChu 248 天前
100 元代券都还没到账
|
23
xierqii 248 天前
互联网公司循环依赖太常见了。比如去年 yuque 故障、阿里云故障、滴滴故障,其背后都和循环依赖有关系。一个关键服务挂掉后,其他服务没法直接恢复。
|
25
9i5NngJHI4P7dm42 248 天前
没进过大厂, 不知道他们备份机制是怎么样的, 我们上线前都会备份当前版本为 docker1, 即将上线的版本是 docker2, 上线完成后的版本是 docker3, 出现依赖问题就全部回滚为 docker1, 几年从没出过问题
|
27
frankilla 248 天前 2
之前不是有人在吹外国怎么怎么样,国内怎么怎么样。。。听的我直犯恶心,现在腾讯发问了,不知道这类人怎么回复。
|
28
esee 248 天前
100 代金券说好要给,最后都不舍得给,抠门的要死
|
29
hancai2 248 天前
@odifjg9384hg 报告里面说了都嘛,回滚依赖于平台的 API ,而 API 又故障了,最终是靠运维手动回滚的。 你们公司应该就是纯手工回滚 docker2 , 就不存在这种循环依赖了。
|
30
n18255447846 248 天前
100 代金券未到账,找售后也没反应了
|
32
w3cll 247 天前
@BeiChuanAlex 那就重构 🐶
|
33
chen1706 247 天前
|
34
tigerstudent 247 天前
@alanhe421 #8 那以后的 C ,不就成了现在的 B ?
|
36
alanhe421 247 天前
@tigerstudent AB,AC
|
38
Rehtt 247 天前
|
39
tigerstudent 247 天前
@alanhe421 #37 所有服务不还是依赖了 C ,难道 C 以后不会迭代更新了?
|
41
BadFox 247 天前
点开非法加冯公众号看看有没有新的文章。
|
42
BadFox 247 天前
|
43
hellomsg 247 天前
似曾相识
|
44
hellomsg 247 天前
草台班子
|
46
mikaelson 247 天前
图 2 那种流量图,是什么工具画的?之前运营商给我流量图也是这种样式的。
|
47
kkk123 247 天前
对比 cf 的复盘,企鹅的毫无诚意
|
48
jeremyl313 247 天前
@n18255447846 我的 4 月 12 日给了
|
49
me1onsoda 247 天前
为什么在周末发?怕别人不知道你腾讯 996 啊。。
|
51
LieEar 247 天前
再也不觉得大厂牛逼了,这么庞大复杂的系统,原来也是草台班子...
|
52
mikywei 247 天前
国内很多企业不是技术位需求服务,而是为了跟进新技术和显得自己有技术而使用新技术。。。殊不知新技术就是不稳定的。
|
53
xoic 247 天前
别说这种大厂了,就是小公司在几年之后,人员流动,系统逐渐复杂,根本没有人会想去了解全局的。大多数人都会直接摆烂,跟着原来的流程逻辑走,能打补丁就打补丁,于是祖传屎山代码就出现了,然后指不定哪天就原地爆炸了。
老板们都以为人员迭代业务交接的清清楚楚明明白白是理所当然的,所以在他们看来人员迭代不会有代价的,但事实上培养一个能了解全局的员工是需要大量时间的,有时候倒不是刻意不配合交接,东西太多太杂,交接的时候根本没想起来,那么一个小问题导致故障这种情况就太正常了,剩下的人抓瞎就更正常了。 |
54
chperfect 247 天前
按照描述我觉得应该是浏览器缓存的旧的前端页面 js ,然后请求改动后的接口,导致异常。
|
55
huixia0010 247 天前
@caqiko 并没有
|
57
Ritter 247 天前
@n18255447846 我的已经收到了 可以再查询一下
|
58
hellomsg 247 天前
很搞笑:
[腾讯云] 您好,您之前提交的代金券申请,经过后端复核您在故障期间未登录控制台,并且未有调用云 API 相关接口记录,因此判断您未受到本次故障的影响,非常抱歉暂无法为您申请代金券。 感谢您关注腾讯云,欢迎随时体验相关产品和服务,若您在使用产品时遇到任何问题,请随时联系我们,感谢您的理解与支持! |
59
hellomsg 247 天前
腾讯云这个月的 kpi 是不是想尽办法少补偿用户
|
60
xmskf 247 天前
垃圾腾讯云,说好的补偿代金卷,后面又不给了!
|
62
panisertoller 247 天前
@xmumiffy api 错误会被系统统计到,所以可以得到错误人数,再加上后续主动报障的工单。就算出来了。
|
63
panisertoller 247 天前
@hellomsg 没什么搞笑的,估计售后被薅秃了
|
64
panisertoller 247 天前
@xmskf 被判定为薅羊毛了,先自查下,确定自己被影响了,要再多些也没毛病。
|
66
kun775 246 天前
@panisertoller #64 明知道那时故障了还要去登录,才能代表受到影响?徒增系统负载罢了,看来以后得弄个脚本,每分钟去登录一次控制台
|
67
Akiya 246 天前
API 循环依赖,一直以为只有草台班子才能够搞出这种
|
69
zebwqfox 246 天前 via Android
难道不是 b 站 slb 炸了然后 vpn 连不进去吗(
|
72
louisxxx 242 天前
其实知道会自己锁死自己的。但过度自信,二是为了方便统一管控权限。后面估计涨记性了,毕竟停一天损失上亿
|