0%

【燕子集】20 封网之前

第一次经历如此长时间的封网,才发现工作中还有很多值得提高的地方。

这周的天气雨雨晴晴,弄湿了鞋又晒干,早晚还有些凉,着实变化快。昨天刷手机看到“90 后要三十岁,最后一次上热搜” 这样的话题,着实心中一惊。之前只是觉得自己快三十,没想到现在全网都在关注九零后快三十。论语中说“三十而立”,从前觉得遥远,现在便在眼前,不知道自己到底是否算得上“而立”?

孔子说的“而立”,指的是做事合于礼,言行都很得当。现在的“而立”已经被发展成各种各样的含义,我的理解是三十岁了,要找到自己的支点和方向。找到自我,有“我”则为立。有意思的是,就我自己的体验,光凭自己是很难找到“我”的,反而是遇到子妍之后,才觉得自己慢慢找到了“我”之所在。也就是说,要找到“我”,先要找到能帮助自己找到“我”的人,如果能找到,真的是很幸运的一件事情。

本周五起正式进入了为期长达二十余天的封网,所谓封网,就是非必要情况下,不允许再做线上的代码变更,以保证在重大节假日中服务运行稳定。因为这样的机制,封网前和封网中各有不同的工作方式。封网前需要尽快完成代码上线和验证工作,主要的目标是稳定,避免后期做变更;封网中则可以在测试环境做更试验性探索,等待封网结束后进行新功能的上线。这种强制性的节奏变化其实还是挺好的,开发节奏和心态都会因此而有不一样的变化,而不会一直被源源不断的需求推着跑。可能这就是休渔期的作用:为了之后更大更好的收获吧。

第一次经历封网其实还是非常刺激的,最后两天人满为患排着队做变更的机房着实让我感受到了大家的战斗力。经过几天的努力最终还是成功完成全流程打通,在不熟悉情况和套路的前提下能做到这样,我觉得已经很不错了。唯一比较呆的失误是一个数据插入的 bug,这里要记录下。

这个 bug 的表现很稳定,就比如我要插入 100 条数据(批量插入,比如一次 20 条),在生产环境最终入库的只有 80 条,但是在测试环境却没有任何问题,100 条数据都可以插入。更奇怪的是,数据库入库的代码也没有任何异常(比如说应该提示 20 条数据插入失败)。最开始是怀疑线上的数据库网络连接问题,后面从批量插入改为一条一条插入,虽然速度变慢了很多,但是不会再丢数据。可是一条一条插入实在太慢了!这样完成功能的话实际上就跟没完成一样,因为都不可用,于是继续排查。既然从代码入手看不出问题,就从数据入手,我们观察了一下数据,发现是有重复的,而刚好我们用来传输数据的结构是字典,那重复的 key 就会导致数据丢失了。后来把字典改为数组,问题自然解决,上传效率也提高了几十倍。而为什么在测试环境一直没有办法复现,因为测试环境的数据是我们自己写代码生成的,并不会重复,所以就没有触发这个 bug。仔细想想,这个问题的根源在于设计之初没有考虑好各种脏数据的可能,以后要吸取教训。

最近写代码的时候颇有写着写着突然顿悟的感觉,就想到了所谓“读书百遍其义自见”的原理。为什么不断重复之后会突然明白呢,以我朴素的生物理解来看,肯定是大脑在不知不觉中帮我做了很多链接和扩展的工作。具体怎么做的不重要,重要的是我需要多多思考多多重复,然后自然就会有进展和突破。归根结底一个词:坚持。

不知不觉燕子集已经来到了第 20 篇,每周都要消耗几个话题,其实如何寻找要写的话题也是一个技术活,我现在的方式是用一个记录待办的 APP,有灵感和想写的东西,就记一下,每周写周记的之后拿出来写(向李贺致敬)。

最后要感谢下爸妈,小家的幸福离不开大家的努力,感恩!