阿优读书
一个好看的小说推荐网站

第2章

一周时间,林默把那套索引分发服务的代码翻了三遍。

越看越头疼。

这系统起码有五六年历史,经过十几任开发的手,每个人都在上面添东西,但没人愿意清理垃圾。全局变量满天飞,函数动不动上千行,注释全是“TODO”和“FIXME”,有的TODO已经挂了三年。最离谱的是一个叫Utils.cpp的文件,两万多行代码,什么功能都往里塞,志、字符串处理、网络连接、配置文件解析,甚至还有一个MD5加密函数,跟工具类没半毛钱关系。

张晨说他之前也看过这系统,看了一周就放弃了。林默现在理解他了。

周五下午,周明远把他叫到办公室。

“一周了,说说吧。”周明远靠在椅子上,手里转着笔。

林默从包里掏出几张纸,递过去。

周明远接过来看。纸上列了三十多条问题,从架构缺陷到代码规范,从性能瓶颈到安全隐患,每条后面都标注了严重程度和修改建议。

周明远看了大概五分钟,然后放下纸,看着林默。

“你觉得最大的问题是什么?”

林默想了想,说:“设计思路过时了。这个系统最早是为了应对单机场景设计的,但现在的数据量已经是当年的几百倍。每次更新都要全量分发,所有机器重新建索引,带宽和CPU都扛不住。”

周明远点点头:“有解决方案吗?”

“有。”林默说,“改增量更新。只分发变化的部分,每台机器自己合并。这样带宽能降百分之八十,CPU也能省一半。”

周明远盯着他看了几秒:“你知道这系统有多少台机器吗?”

“文档里写了,三百多台。”

“三百多台,每台跑的业务不一样,配置也不一样。增量更新要保证每台机器的数据一致性,你怎么做?”

林默早有准备:“用版本号。每次更新打一个版本号,机器拉取的时候对比自己当前的版本,缺什么补什么。版本号用全局递增的序列,由中心节点生成。”

“中心节点挂了怎么办?”

“备节点顶上。主备之间同步状态,切换时间控制在十秒以内。”

周明远没说话,站起来走到窗边,背对着林默,看着外面的西山。

沉默了大概半分钟,他转过身,走回座位,坐下。

“方案写一份详细的给我。”他说,“下周五之前。”

林默愣了一下:“就我一个人?”

周明远看了他一眼,忽然笑了一下:“怎么,怕了?”

“不是。”林默说,“这个量,一个人,半年都不完。”

“没让你一个人完。”周明远说,“你先写方案,写完了我给你人。但方案得让我满意。”

林默点点头:“好。”

走出办公室,张晨凑过来:“怎么样?”

林默把周明远的话说了。张晨听完,竖起大拇指:“牛,能让周工点头要方案的,你是第一个。”

林默苦笑:“他还没点头呢。”

“那就是快了。”张晨压低声音,“你知道上一个被这么问的,是谁吗?就是王海。周工问他同样的问题,他憋了半天,说‘我回去想想’,然后想了三个月,没下文了。”

林默愣了一下。

张晨拍拍他肩膀:“你行。”

晚上回到家,林默没急着写方案。他打开电脑,先看了一眼比特币。这周又挖了0.6个,总共有8.3个,论坛上价格0.88美元。算下来值7.3美元,还是不够买显卡。

他靠在椅子上,盯着屏幕发呆。

增量更新,版本号,主备切换。这些思路前世他用过无数次,闭着眼睛都能画出来。但那是十年后的技术,现在说出来,会不会太超前?

他又想起张磊的话。创业,股份,风口。

摇了摇头,把这些念头甩开。现在先把眼前的事好。

打开文档,开始写方案。

周六下午,朱小发消息:“回上海了。”

林默回:“到了?”

“刚下火车,累死了。”

“休息休息。”

“嗯。对了,谢谢你那几天陪我吃饭。”

林默笑了:“客气什么。”

“下次你来上海,我请你。”

“好。”

聊了几句,朱小说要去洗澡,下线了。林默继续写方案。

周晚上,方案初稿写完。洋洋洒洒八千字,从现状分析到目标设计,从技术选型到实施步骤,从风险评估到应急预案,该有的都有了。他把文档发给周明远,附了一句话:“周工,初稿,您看看。”

周一上午,周明远没回。下午也没回。

周二上午,林默正盯着屏幕发呆,周明远从他工位旁边经过,扔下一句话:“来一下。”

林默站起来,跟着他走进办公室。

周明远坐下,把打印出来的方案扔在桌上,上面密密麻麻写满了批注。

“看完了。”他说。

林默等着。

“有几点要改。”周明远翻开第一页,“版本号生成这块,你用数据库序列,万一数据库挂了怎么办?改成用Snowflake算法,百度内部有现成的实现。”

林默愣了一下。Snowflake算法,他当然知道。但那玩意2010年就有了?

周明远看了他一眼:“怎么,没听过?”

“听过。”林默说,“只是没想到公司已经有实现了。”

“有。”周明远继续翻,“还有这个地方,增量更新的粒度太粗了。你按表来更新,但一张表可能有几百个字段,改一个字段就要全量同步?太浪费。按字段来,只更新变化的部分。”

林默点点头,记下来。

周明远又翻了几页,指出了七八个问题。有的是设计缺陷,有的是实现细节,有的是他没考虑到的边界情况。

翻到最后一页,周明远合上方案,看着他。

“这些能改吗?”

“能。”

“周五之前,改完给我。”周明远说,“改完没问题,就按这个。”

林默站起来,想说什么,又不知道说什么。

周明远摆摆手:“出去吧。”

走出办公室,林默发现手心有点汗。

晚上回到家,他打开电脑,开始改方案。周明远提的那些点,有些他能理解,有些得查资料。Snowflake算法他知道,但百度内部的实现长什么样?增量更新按字段来,怎么做版本控制?

查了一晚上,大概理清了思路。

周三中午,朱小发消息:“工作顺利吗?”

林默回:“还行,就是忙。”

“忙点好,充实。”

“你呢?”

“也还行,那个女的这周请假了,世界都清净了。”

林默笑了。

“对了,”朱小又说,“你那个朋友还找你吗?”

林默愣了一下:“哪个朋友?”

“就你说的那个,大学同学。”

“最近没找。”

“哦。”

林默觉得她语气有点怪,但没多想。

周五下午,改完的方案发给周明远。这次他回得快,半小时后就回了条消息:“可以,下周给你配人。”

林默看着那条消息,忽然觉得这周熬的夜都值了。

晚上,张磊发消息:“林默,下周来北京,出来喝点。”

林默盯着屏幕,想了很久。然后回:“下周末吧,这周太忙。”

张磊回:“行,到时候联系。”

林默放下手机,靠在椅子上。

窗外,北京的夜很冷。月光照着对面楼的窗户,亮晶晶的。

他忽然想起周明远说的那句话:按这个。

他站起来,走到窗边,看着外面。

这才开始。

微信阅读

评论 抢沙发

登录

找回密码

注册