父亲旧笔记本里的RocketMQ

整理父亲旧物的时候,翻出了那台2017年买的联想拯救者。外壳上贴的青奥会地铁贴纸已经掉了一半漆,键盘缝里嵌着点黄褐色的烟灰。开不了机。

找小区门口修电脑的小李来弄,他蹲在地上鼓捣了半小时,花了八十块钱把硬盘读出来,里面有个加密文件夹,名字叫”2019双11压测终版”,打开全是滚动的日志截图、皱巴巴的烟盒纸草稿,还有一张用A4纸打印的参数表,边缘已经被咖啡渍浸黄了。

压测夜剩下的半盒烟

2019年的双11,父亲还在南京本地的一家生鲜电商做运维。那年之前他们用的是另一款开源消息队列,11月11号当天11点05分,订单消息突然堵死,整整40分钟,3000多笔付了钱的订单没同步到仓库。客服电话被打爆,有个用户说给怀孕的老婆买的挪威三文鱼,等了俩小时没看到订单状态,差点要报警。父亲那天被老板骂到脸发白,第二天一早就拍板,换RocketMQ。

说实话,我那时候根本听不懂他在饭桌上念叨的什么”消息堆积””顺序消费”,只知道他那段时间天天熬到三点,我起夜喝水的时候,能看到他坐在客厅的电脑前,烟一根接一根抽,烟灰掉在键盘缝里,现在擦都擦不掉。他说之前的队列一到峰值就扛不住,RocketMQ是阿里从自己双11的场景里磨出来的,至少不会在订单高峰的时候掉链子。他特意把刷盘策略改成同步刷盘,不然万一服务器突然断电,存在内存里的消息就全没了——那可是几千个用户等着的晚饭菜。

旧联想拯救者键盘缝嵌着烟灰的特写
旧联想拯救者键盘缝嵌着烟灰的特写

压测到第八天的晚上,他给我妈发了个微信,说峰值跑到8万条消息每秒,一条都没丢。我妈那时候正在洗碗,擦了擦手给他发了个红包,让他下楼买碗皮肚面当宵夜。后来他跟我提过,那天晚上买面的时候,老板给他多放了两块猪肝,他觉得比什么庆功酒都香。

小区停电那天的备用机

2021年的三伏天,我们住的老小区变压器烧了,下午两点多整个片区停了电,空调转不动,风扇吹出来的风都是热的。我正抱着半块冰西瓜在楼下乘凉,就看到父亲扛着个黑黢黢的塔式机箱往保安室跑——保安室有个应急用的柴油发电机,平时用来给道闸和监控供电。

我追上去问他干嘛,他抹了把额头上的汗,说那天是几个老小区团购的截单日,他们公司给小区做的自提系统,全靠RocketMQ发取货通知。要是主机房临时出问题,消息会存在broker队列里,就算本地系统全挂了,等来电了也能把通知一条一条发出去,不会让大爷大妈第二天白跑一趟,拎着空袋子在自提点等半小时。

他蹲在保安室的水泥地上,把机箱插在发电机的插座上,接了个4G随身wifi,屏幕亮起来的时候,他盯着滚动的日志看了半小时,确认所有消息都安安稳稳待在队列里,才扛着机箱往回走。那天他的裤腿上沾了好几个蚊子包,红得发亮,保安室的大叔递给他一瓶冰矿泉水,他拧开的时候,手都因为蹲太久有点抖。

老小区保安室角落放着的塔式服务器机箱
老小区保安室角落放着的塔式服务器机箱

不过话说回来,我那时候才真的明白,原来我平时在团购群里抢的水蜜桃、收到的取货码,不是凭空蹦出来的。那些跑在服务器里的代码,不是飘在天上的大词,是跟我们每天吃的菜、收的快递、甚至夏天吹的风扇绑在一块的。

硬盘里没删的红笔批注

现在父亲已经从生鲜电商离职了,去了本地的一所职业学校当计算机老师,教学生搭简单的分布式系统。那个旧硬盘他换了个磨得发白的硬盘盒,天天塞在通勤包的侧兜里,里面的压测日志从来没删过。有个Excel表,记着从2019到2021年,每次大促压测的峰值消息量、丢消息数,其中2020年双11那一行,峰值14万条消息每秒,丢消息数0,他在旁边的格子里用红笔写了个大大的”爽”,字都透到纸背面了。

上周他带的学生社团做校园二手交易平台,要用到消息队列,有个学生问他选什么好,他就把那个旧硬盘插在教室的电脑上,给学生看当年的压测日志,说就用RocketMQ,便宜,稳定,不用搞那些花里胡哨的功能,扛得住事就行。

我之前总觉得技术变迁是新闻里写的那些宏大叙事,什么架构升级,什么高可用,直到翻到那个红笔写的”爽”,才知道所有的技术落地,最后都落在普通人的具体日子里。是付了钱的三文鱼能准时送到家,是停电的时候也能收到第二天的取货通知,是学生们做的二手平台,卖出去的旧书能准时收到取货码。

上周我帮他整理旧书,看到那个硬盘盒放在书桌的角落,指示灯一闪一闪的,像在打什么只有他自己懂的暗号。我没问他以后会不会把这些日志删了,反正我知道,下次我在网上抢的限量咖啡券能准时发过来,不会像小时候那样付了钱等半天没动静,大概率是这个老伙计,还在某个没人注意的机房角落,安安静静跑着。

作者|fawen

排版|fawen

审核|小准

免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。如有侵权请联系删除。
文章名称:父亲旧笔记本里的RocketMQ
文章链接:https://m.lfdjt.com/info_23_31014.html