互联网基础设施的稳定性

昨天(2017-08-21)下午微信故障,由于影响到大量普通用户使用,故障被迅速传播广而告之。
当时同事正在开发微信分享相关功能,发现分享失败后与我讨论。推测是由于被人举报遭到封禁,准备去联系公司微信帐号的运营人员,确认是否被封禁。
好在还没出发就收到微信故障相关的消息,避免了一场无用之功。

感慨科技的进步和社交网络的繁荣,让我这个刻意远离社交的“边缘人”也能享受它带来便利,虽然也带来了不少的烦恼。
更感慨随着网络的触角深入到社会的各个角落,互联网基础设施的稳定性,已经极大的影响了工作和生活。至少在大陆,微信已经算得上基础设施了。
虚拟和现实的界限更加模糊了。

联想到几年前的一次“基础设施”BUG,作为(有可能是第一梯队的)亲历者。
现在看来,与这次微信故障,有些挺有意思的共同点。

2013-09-12 接到客户反馈,前几天上线的文件上传功能中文件名出现乱码。上传功能是SWFUpload做的。
在那个年代,HTML5还没定稿,XP自带的IE6还占据不少市场,各种双核浏览器满天飞,兼容性参差不齐。作为竞争者的Silverlight停止开发,而Flash刚显出没落迹象。基于Flash的SWFUpload上传控件,虽然已多年未更新,但却是当时最合适的解决方案。

跟之后的“基础设施”BUG一样,首先被怀疑的是刚上线的代码。这似乎是一个合格程序猿的标准流程,从业务代码开始逐步深入底层系统,先自我否定 🙂
毕竟业务错误是高频的,而基础设施错误相对低频多了,但也更加致命。
尤其是一个被私人公司掌控的“基础设施”,一旦出现错误只能等待所属公司的修复。这应该也是Flash没落的一个原因吧,毕竟社区的才是大家的。

经过一上午的自查和检索,却没有任何收获。终于在下午有了线索,iteye有人发出了类似的疑问。看到问题的一瞬间,我马上意识到,这不是业务代码和SWFUpload的BUG,而是Flash的BUG。
思路转变后,一切就顺利成章了,最简单的解决方案就是回滚至旧版本,等待Adobe公司更新。
但不可能让所有用户回滚至旧版本,也没有人知道Adobe公司什么时候(现在知道是2013-09-19)才能修复BUG,在此之前只能尝试自己解决。

从SWFUpload暴露的API入手,找到了临时解决方案。又梳理SWFUpload源码(感谢开源社区)的调用逻辑,找到关键点提出修复方案。可惜由于环境问题,未能编译成功。好在社区中有其他人成功编译,算是提供了相对完美的解决方案。
这应该算是我第一次真正参与社区事件,事后竟有一丝弱弱的自豪感。哈哈

参考链接:
关于SWFUpload文件名乱码
Flash11.8更新后SWFUpload出现乱码问题
SWFUpload源码(官网已失效,找到的替代资源)
Adobe的BUG反馈(链接已失效)
Release Notes | Flash Player® 11.8 AIR® 3.8

截张图留念一下

发表评论

电子邮件地址不会被公开。 必填项已用*标注