2000年 9月的广州天河,空气里还残留着夏末的湿热。
我坐在 cRt显示器前,指尖在泛黄的键盘上悬着。
老谭(wingo)把一杯冒着热气的菊花茶推到我手边,玻璃杯中舒展的菊花像极了他此刻放松的神情。
“163邮局系统的底子,得从 97年说起。”
他往椅背上一靠,指尖敲着桌面,“那会儿丁总带着几个人在花城大道的民居里创业,服务器就搁在客厅角落。最早用的是 Sendmail搭架子,用户量破万的时候,每天早上都能看见丁总蹲在服务器旁抽烟,因为邮件队列堵得像春运的火车站。”
我赶紧掏出笔记本,笔尖在纸页上沙沙作响。
老谭忽然起身,从铁皮柜里翻出一沓泛黄的拓扑图,边缘已经卷成了波浪状。
“98年我们自己攒了 mtA引擎,c语言写的,把 Smtp协议拆成了接收、解析、投递三个模块。你看这张图,前端是四台 Sun Ultra 5做负载均衡,后端挂着 12块 9Gb的 ScSI硬盘,那会儿这配置在国内算顶配了。”
他指着图上用红笔圈出的部分,“用户数据库用的是 mySqL 3.22,密码都是明文存在 user表里头,现在看跟裸奔似的,但在拨号上网的年代,能稳定收发邮件就谢天谢地了。”
他边说边回忆,像是在讲述一个很遥远的故事。
“到 99年用户破百万,我们啃下了 pop3协议的断点续传。你知道吗?那会儿拨号上网按分钟计费,一封带图片的邮件没下完就断线,能把人急得砸鼠标。”
老谭忽然笑出声,指节叩了叩服务器机柜的方向,“现在这套系统,光是存储阵列就占了半个机房,每个月电费够买台新服务器。”
正说着,走廊里传来皮鞋敲击地面的脆响。
老谭脸上的笑意倏地收了,压低声音:“李总昨天在会上提的战略重组,不是简单改改代码。”
说到李总,我忽然想起来前些天的事情。
李总(英文名:Frank)到岗那天,人事部特意在玻璃门上贴了鎏金铭牌:“技术战略总监李清华”。
他拎着银灰色的 Ibm笔记本包走进办公室时,我正蹲在服务器机柜前换磁带。
老谭在身后嗤笑一声:“惠普全球服务部出来的,据说在新加坡做过 hp-Ux迁移项目。”
下午的全员会上,李总打开笔记本,投影幕布上立刻跳出惠普 logo的蓝色地球。
“我在帕洛阿尔托总部时,参与过康柏并购案的 It整合。”
他推了推金丝眼镜,鼠标点出一份几十页的 ppt,“163邮箱当前的技术架构,相当于用算盘打财务报表——mtA模块必须重构,下季度完成 coRbA中间件部署,所有服务器换成 hp proLiant dL380。”
老谭突然站起来,手里的搪瓷杯磕在桌沿:“李总可能不清楚,我们的 c语言引擎经过三年迭代,内存占用比 coRbA方案低 60%。”
他翻开笔记本,指着 9月的运维数据,“上周暴雨导致机房断电,现有架构在 UpS支撑下完成了平滑重启,换成分布式架构根本撑不过十分钟。”
“技术债务必须清算。”
李总敲击键盘,调出惠普的 ItIL流程文档,“网益要从作坊式开发转向标准化,所有代码必须通过 clearcase管理,每日构建报告抄送我邮箱。”
他忽然看向我,“小刘负责把用户数据库迁移到 hp openView平台,下周给我迁移方案。”
我手里的笔差点掉在地上。
那套平台光是 license费用就够买二十台 Sun服务器,而且老谭说过 openView在中文环境下经常乱码。
散会后,老谭把我拉到楼梯间,从烟盒里抖出支红塔山:“他上周让助理把我们的磁带备份全搬到他办公室,美其名曰集中管理。刚才 It采购说,他绕过审批订了十套惠普的存储阵列。”
周五的技术评审会成了火药桶。
当李总要求删除 Smtp协议的本地缓存模块时,老谭把拓扑图拍在桌上:“这模块是为了应对南方电信的线路波动!去年春节流量峰值时,就是靠它扛住了 70%的重复请求!”
“我在惠普处理过亿级用户的系统,”
李总合上笔记本,金属搭扣发出清脆的响声,“网益需要的是可扩展性,不是这些补丁式的小聪明。下周一之前,所有模块必须按 c++标准重写,否则直接提交 hR处理。”
他走后,机房里的服务器突然集体发出蜂鸣——老谭正用控制台重启所有节点,屏幕上闪过一行行红色的错误代码。
“看看吧,”
他指着显示器,“刚把惠普的监控软件装上去,就把我们的心跳检测程序挤崩了。”
直到老谭拍了拍我,这才从以往的画面中回过神来。
他往我这边倾了倾身子,显示器的嗡鸣突然变得清晰,“惠普那套流程他全搬过来了,要把我们的 c模块重写成 c++,还说要引入 coRbA架构。这就像给老黄牛套上航天发动机,跑不跑得动另说,先得拆了牛棚。”
我攥着笔的手紧了紧:“这么大动干戈,是要做什么?”
“说是要对标 hotmail,搞分布式存储。”
老谭冷笑一声,指尖戳着键盘上的 delete键,“但他不懂,咱们的用户数据都存在本地磁盘阵列,迁移的时候只要断网超过两小时,客服电话能被打爆。”
一周后的凌晨两点,机房的空调发出单调的嗡鸣。
我盯着屏幕上滚动的日志,眼皮像坠了铅块。
突然,一行红色的报错跳出来——“smtpd [2345]: connection refused from 210.xxx.xxx.18”。
这个 Ip既不在办公室的白名单里,也不是已知的镜像服务器。
我猛地清醒过来,调出\/var\/log\/messages文件。
用 vi编辑器翻到凌晨 1点 17分,发现有串奇怪的指令:“rsync -avz \/backup\/mail\/ 210.xxx.xxx.18::shadow\/”。
冷汗瞬间爬上后颈,这是把备份目录往陌生 Ip同步的命令。
我颤抖着输入“last”命令,屏幕上跳出一串 root用户的登录记录,其中三条来自那个陌生 Ip,登录时间就在昨夜 11点到凌晨 1点之间。
更可怕的是,\/backup目录下的 tar包全都不见了,连上周的磁带备份也从保险柜里消失了。
抓起桌上的电话,我想打给老谭,听筒里却传来忙音。
突然想起他教过的应急方案,我咬着牙输入“tcpdump -i eth0 port 25”,抓包窗口里立刻涌出密密麻麻的数据包。
过滤出那个可疑 Ip后,发现它还在尝试建立连接。
“hosts.deny里加一行 all:210.xxx.xxx.18”,我一边念叨着老谭的话,一边在终端里敲命令。
接着把系统时钟往前调了三个小时,伪装成备份程序的定时任务还没启动,果然那个 Ip的连接请求变得频繁起来。
我摸出上周末新买的朗科U盘,把 secure日志和抓包文件拷贝进去,塞进主机箱的锁孔里——这是老谭说过的物理隔离法。
机房的铁门突然吱呀作响,我迅速切换到正常的日志界面,心脏在胸腔里擂鼓。
月光从百叶窗的缝隙溜进来,照在服务器闪烁的指示灯上,像无数双窥视的眼睛。
请大家记得我们的网站:品书中文(m.pinshuzw.com)人生何处是归途:花城网事三十年更新速度全网最快。