简介
《重生2010:我靠代码撬动世界》是“代码能跑就行”的又一力作,本书以林默为主角,展开了一段扣人心弦的都市脑洞故事。目前已更新145228字,喜欢这类小说的你千万不要错过!
重生2010:我靠代码撬动世界小说章节免费试读
一周时间,林默把那套索引分发服务的代码翻了三遍。
越看越头疼。
这系统起码有五六年历史,经过十几任开发的手,每个人都在上面添东西,但没人愿意清理垃圾。全局变量满天飞,函数动不动上千行,注释全是“TODO”和“FIXME”,有的TODO已经挂了三年。最离谱的是一个叫Utils.cpp的文件,两万多行代码,什么功能都往里塞,志、字符串处理、网络连接、配置文件解析,甚至还有一个MD5加密函数,跟工具类没半毛钱关系。
张晨说他之前也看过这系统,看了一周就放弃了。林默现在理解他了。
周五下午,周明远把他叫到办公室。
“一周了,说说吧。”周明远靠在椅子上,手里转着笔。
林默从包里掏出几张纸,递过去。
周明远接过来看。纸上列了三十多条问题,从架构缺陷到代码规范,从性能瓶颈到安全隐患,每条后面都标注了严重程度和修改建议。
周明远看了大概五分钟,然后放下纸,看着林默。
“你觉得最大的问题是什么?”
林默想了想,说:“设计思路过时了。这个系统最早是为了应对单机场景设计的,但现在的数据量已经是当年的几百倍。每次更新都要全量分发,所有机器重新建索引,带宽和CPU都扛不住。”
周明远点点头:“有解决方案吗?”
“有。”林默说,“改增量更新。只分发变化的部分,每台机器自己合并。这样带宽能降百分之八十,CPU也能省一半。”
周明远盯着他看了几秒:“你知道这系统有多少台机器吗?”
“文档里写了,三百多台。”
“三百多台,每台跑的业务不一样,配置也不一样。增量更新要保证每台机器的数据一致性,你怎么做?”
林默早有准备:“用版本号。每次更新打一个版本号,机器拉取的时候对比自己当前的版本,缺什么补什么。版本号用全局递增的序列,由中心节点生成。”
“中心节点挂了怎么办?”
“备节点顶上。主备之间同步状态,切换时间控制在十秒以内。”
周明远没说话,站起来走到窗边,背对着林默,看着外面的西山。
沉默了大概半分钟,他转过身,走回座位,坐下。
“方案写一份详细的给我。”他说,“下周五之前。”
林默愣了一下:“就我一个人?”
周明远看了他一眼,忽然笑了一下:“怎么,怕了?”
“不是。”林默说,“这个量,一个人,半年都不完。”
“没让你一个人完。”周明远说,“你先写方案,写完了我给你人。但方案得让我满意。”
林默点点头:“好。”
走出办公室,张晨凑过来:“怎么样?”
林默把周明远的话说了。张晨听完,竖起大拇指:“牛,能让周工点头要方案的,你是第一个。”
林默苦笑:“他还没点头呢。”
“那就是快了。”张晨压低声音,“你知道上一个被这么问的,是谁吗?就是王海。周工问他同样的问题,他憋了半天,说‘我回去想想’,然后想了三个月,没下文了。”
林默愣了一下。
张晨拍拍他肩膀:“你行。”
晚上回到家,林默没急着写方案。他打开电脑,先看了一眼比特币。这周又挖了0.6个,总共有8.3个,论坛上价格0.88美元。算下来值7.3美元,还是不够买显卡。
他靠在椅子上,盯着屏幕发呆。
增量更新,版本号,主备切换。这些思路前世他用过无数次,闭着眼睛都能画出来。但那是十年后的技术,现在说出来,会不会太超前?
他又想起张磊的话。创业,股份,风口。
摇了摇头,把这些念头甩开。现在先把眼前的事好。
打开文档,开始写方案。
周六下午,朱小发消息:“回上海了。”
林默回:“到了?”
“刚下火车,累死了。”
“休息休息。”
“嗯。对了,谢谢你那几天陪我吃饭。”
林默笑了:“客气什么。”
“下次你来上海,我请你。”
“好。”
聊了几句,朱小说要去洗澡,下线了。林默继续写方案。
周晚上,方案初稿写完。洋洋洒洒八千字,从现状分析到目标设计,从技术选型到实施步骤,从风险评估到应急预案,该有的都有了。他把文档发给周明远,附了一句话:“周工,初稿,您看看。”
周一上午,周明远没回。下午也没回。
周二上午,林默正盯着屏幕发呆,周明远从他工位旁边经过,扔下一句话:“来一下。”
林默站起来,跟着他走进办公室。
周明远坐下,把打印出来的方案扔在桌上,上面密密麻麻写满了批注。
“看完了。”他说。
林默等着。
“有几点要改。”周明远翻开第一页,“版本号生成这块,你用数据库序列,万一数据库挂了怎么办?改成用Snowflake算法,百度内部有现成的实现。”
林默愣了一下。Snowflake算法,他当然知道。但那玩意2010年就有了?
周明远看了他一眼:“怎么,没听过?”
“听过。”林默说,“只是没想到公司已经有实现了。”
“有。”周明远继续翻,“还有这个地方,增量更新的粒度太粗了。你按表来更新,但一张表可能有几百个字段,改一个字段就要全量同步?太浪费。按字段来,只更新变化的部分。”
林默点点头,记下来。
周明远又翻了几页,指出了七八个问题。有的是设计缺陷,有的是实现细节,有的是他没考虑到的边界情况。
翻到最后一页,周明远合上方案,看着他。
“这些能改吗?”
“能。”
“周五之前,改完给我。”周明远说,“改完没问题,就按这个。”
林默站起来,想说什么,又不知道说什么。
周明远摆摆手:“出去吧。”
走出办公室,林默发现手心有点汗。
晚上回到家,他打开电脑,开始改方案。周明远提的那些点,有些他能理解,有些得查资料。Snowflake算法他知道,但百度内部的实现长什么样?增量更新按字段来,怎么做版本控制?
查了一晚上,大概理清了思路。
周三中午,朱小发消息:“工作顺利吗?”
林默回:“还行,就是忙。”
“忙点好,充实。”
“你呢?”
“也还行,那个女的这周请假了,世界都清净了。”
林默笑了。
“对了,”朱小又说,“你那个朋友还找你吗?”
林默愣了一下:“哪个朋友?”
“就你说的那个,大学同学。”
“最近没找。”
“哦。”
林默觉得她语气有点怪,但没多想。
周五下午,改完的方案发给周明远。这次他回得快,半小时后就回了条消息:“可以,下周给你配人。”
林默看着那条消息,忽然觉得这周熬的夜都值了。
晚上,张磊发消息:“林默,下周来北京,出来喝点。”
林默盯着屏幕,想了很久。然后回:“下周末吧,这周太忙。”
张磊回:“行,到时候联系。”
林默放下手机,靠在椅子上。
窗外,北京的夜很冷。月光照着对面楼的窗户,亮晶晶的。
他忽然想起周明远说的那句话:按这个。
他站起来,走到窗边,看着外面。
这才开始。
