第二十三章 · 谈话¶
十月十二日,星期一,上午七点。
十月十二日,凌晨五点四十分。值班日志最后一行是 05:12,资源池使用率百分之三十四,比昨天同一时刻高了六个点。陈稳把这一行截图存下来,没有发给任何人。
昨晚十一点到今晨五点,告警一共响了两次,都是同一个商户的重复提交,被拦截器挡住了。这是第四千二百二十三次和第四千二百二十四次。
天已经亮了,阳光照在路面上,很淡。手机上有何晚的消息。
「粥煮好了。在锅里,你自己盛。」
白米粥,没有放其他东西。他盛了一碗,喝了一口,很烫,放下碗等着。等的时候他又看了一遍那张截图。三十四这个数,值班表上写的上限是四十。
喝完粥,洗了碗,躺下,闭上眼睛。
他睡到下午两点。纪衡的消息是九点四十七分发的。
「下午四点,来我办公室一趟。」
上一次纪衡这样单独叫他,是八月二十八号,绩效沟通,那次的邮件写了「半小时」。这一次没写时长。
镜子里眼睛是红的,没有肿。他换了一件衬衫。
下午三点五十分,一号楼工位区人不多。资源池使用率百分之三十二,比早上降了两个点。
纪衡的办公室门开着。
纪衡抬起头。
「进来。」纪衡说。
桌上摊着一份打印稿,标题那一行有铅笔画的横线。
空调的声音,键盘的声音,外面有人说话,但听不清。这段时间大约四十秒。
纪衡抬起头。
「你昨晚处理了一个事故。」纪衡说。
「嗯。」
「复盘我看了。写得很清楚。做了什么,为什么这样做,效果怎么样。没有废话。」
技术版复盘一千二百字,他没有发。发出去的是汇报版,四百字。纪衡说的是那四百字。
「你那个消息服务,上线了,运行正常,没有受影响。」
消息服务的重试次数昨晚跳到过三次,日志里有,复盘里没写。
「你那个对账模块重构方案,我看了。时间表也看了。按你的计划执行。」
「好。」
纪衡把那份打印稿翻到第三页。
「我找你来,不是说这个。」纪衡说。
陈稳看着纪衡。
「你上周四做的方案评审,我后来跟技术 VP 聊了一下。他说,你讲得比以前好。但他问了一个问题,我没有答上来。」
纪衡把电脑转过来一点,屏幕上是陈稳那份方案的第三页。
「他问,这个方案做完之后,能推广到其他业务线吗。」
陈稳的方案里,第三页标题是「结算系统对账模块重构」。他自己写的时候,光标在「结算系统」四个字上停过一次,想过要不要删掉,最后没删。
「你的方案里,只写了结算系统。没有写其他业务线。」
「是。」
「为什么。」
「因为我只做过结算系统。」
纪衡看了他两秒。「这个理由,你在技术 VP 面前不要说。」
「好。」
「我问你一个问题。你那个数据治理的方案,跟这个对账模块重构的方案,能合在一起吗。」
陈稳知道能合。他在二号楼建的那三个视图,六十八行 SQL,本来就是给对账模块喂数据的。但他也知道,一旦说能合,这两个方案就变成一个方案,一个方案只有一个负责人,而数据治理的负责人是易文。
「你不需要马上回答。明天早上给我答案。」
「好。」
「还有一个事。你那个数据治理的方案,张磊那边已经推广到营销技术部了。周其正那边也在问,能不能用。」
这件事陈稳知道。张磊上周五给他发过消息,他回了一个「好」。他没有告诉易文。
「你之前写方案的时候,只写了结算系统。但你现在要想一下,如果别人要用你的方案,你需要准备什么。你那个数据加载接口,是按时间范围、商户 ID、对账类型批量查询。如果其他业务线要用,这些接口够不够。」
「不够。」
纪衡的手指在桌面上停住了。「哪里不够。」
「按时间范围查,走的是 settle_reconciliation 的联合索引。那个索引是我八月三号加的,只覆盖结算系统的四个字段。别的业务线的表结构不一样,走不了这个索引,会全表扫。」
「会怎么样。」
「跟九月十七号凌晨一样。」
纪衡把手指抬起来,又放下。「你回去看一下。明天早上一起给我答案。」
「你那个消息服务,跟蒋辉的智能重试补偿方案,还有资源冲突吗。」纪衡说。
「现在没有了。」
「为什么。」
「之前有冲突。消息服务跟规则引擎调度服务共用同一个资源池。昨天的事故之后,蒋辉说,消息服务不需要推后了。」
「他说的?」
「嗯。」
纪衡没再问下去。他把电脑屏幕转回自己那边,看了一会儿。
昨天那场 P0 的根因,是蒋辉那个没人 review 就合入的 MR,配置里的 topic 指向了消息服务。陈稳在群里只写了「已恢复,无资损」。纪衡手上有那份四百字的复盘,复盘里也没有这一句。
「你那个消息服务,接下来有什么计划。」
陈稳想了想,说:「继续观察。运行稳定以后,加消费者幂等逻辑,加 TTL 索引,加本地失败日志表。」
「谁写的。」
「易文标的注释。」
纪衡在打印稿边上写了两个字,笔尖压得很重。
「你最近跟易文走得很近。」纪衡说。
蒋辉在茶水间说过同一句话,用的是「啊」结尾。纪衡用的是句号。
「我不是说你不能跟她走得很近。我是说,你想清楚了吗。」
想清楚什么,纪衡没有说。这个问题的主语是空的。
「你不需要回答。明天早上给我答案。」
「好。」
「就这些。」纪衡说。
记事本上多了一行:十月十二日,下午四点。纪衡找我谈话。他问了四个问题。第一,对账模块重构能不能推广到其他业务线。第二,数据治理方案跟对账模块重构能不能合在一起。第三,推广需要准备什么。第四,我跟易文走得太近,想清楚了吗。
第四个问题他打了两遍才打完,第一遍写的是「我跟易文」,删了,重新写。
对账模块重构方案,从头看到尾,没有改。数据治理方案,从头看到尾,没有改。
茶水间窗外,阳光照在对面楼的玻璃上,反光,刺眼。
蒋辉在这个位置说过同样意思的一句话:你最近跟易文走得很近啊。有人会看到。蒋辉说这句话的时候,手里也端着一杯水。
记事本又多了一行:十月十二日,下午。纪衡说,你最近跟易文走得很近。蒋辉也说过同样的话。
两个人,不同的时间,不同的地点,同一句话。这件事他没有告诉易文。
第二遍看对账模块重构方案,一行一行看,四十分钟。数据治理方案,一行一行看。两份都没有改。
记事本第三行:十月十二日,下午五点半。两个方案都看了一遍。没有改。不知道怎么合在一起。
他把标题从「结算系统对账模块重构方案」改成「对账模块重构方案——事件驱动加增量比对,实现 T+0 实时对账」。原来只针对结算系统的描述,改成适用于所有业务线。改了半个小时,删掉,恢复到原来的版本。
他关掉方案,打开记事本,写一行:十月十二日,下午六点。改了一版,觉得不对,删了。
他看了一遍,保存,关掉。
他打开手机,看到易文的消息。
「听说纪衡找你谈话了。」
「嗯。」
「说了什么。」
「他问我,对账模块重构方案能不能推广到其他业务线。数据治理方案能不能跟对账模块重构合在一起。」
「你怎么回答的。」
「我说回去想一下。」
「你现在在想什么。」
他想的是纪衡最后那句「你跟易文走得很近」。这句话他没打出来。
「我不知道怎么合在一起。」他打字。
「你先把两个方案打开,放在一起看。」
左边是对账模块重构,右边是数据治理。两份文档的第一页格式一样,都是他照着纪衡那个 PPT 母版做的。
「然后呢。」
「看它们有什么共同点。」
他从头看到尾,看了一遍。字段对齐在左边,事件驱动在右边,中间隔着一整个屏幕的空白。
「数据治理方案,你做了什么。」
「字段对齐。三个表,一百多个字段,统一成了四十二个字段。」
「对账模块重构方案,你做了什么。」
「事件驱动加增量比对,T+0 实时对账。」
「这两个方案,有一个共同的东西。」
四十二个字段。他把两份文档并排缩小到百分之五十,还是没看出来。
「数据。」
这两个字他盯了大概三秒。
「数据治理方案做的是底层数据对齐。对账模块重构方案做的是上层数据比对。底层对齐了,上层比对才能做。这两个方案,本来就是一个整体。」
他在二号楼建那三个视图的时候,易文一句话都没解释过为什么要建。
「你把数据治理方案改成对账模块重构方案的第一部分。第二部分才是事件驱动加增量比对的实时对账。这样,两个方案就合在一起了。」
陈稳看着屏幕,没有说话。
「你试一下。」
「好。」
陈稳放下手机,打开对账模块重构方案,分成两部分。第一部分:数据治理。他把数据治理方案的内容写进去,字段对齐、视图创建、数据清洗,三页,全部写进去。第二部分:事件驱动加增量比对。
他写完了,看了一遍,觉得可以,保存,关掉。
他打开手机,看到易文的消息。
「改完了吗。」
「改完了。」
「怎么改的。」
「第一部分写数据治理,第二部分写实时对账。」
「可以。」
陈稳看着屏幕,没有说话。
「还有一个问题。」他打字。
「纪衡问,如果推广到其他业务线,需要准备什么。」
「你那个数据加载接口,是按时间范围、商户 ID、对账类型批量查询。如果其他业务线要用,你做成可配置的。业务线自己配字段名、字段类型、数据源。你不需要改代码,改配置就行。」
「你能做吗。」
「能。」
「那就做。」
陈稳放下手机,打开方案,在第三部分加了一小节:可配置数据加载接口,支持按业务线配置字段名、字段类型、数据源。
他写完,看了一遍,觉得可以,保存,关掉。
他打开记事本,写一行:十月十二日,晚上七点。方案改完了。第一部分写数据治理,第二部分写实时对账,第三部分写可配置数据加载接口。
窗外天已经黑了,对面楼的灯亮着,几扇窗,零星的。他看了一年多的那扇窗,灯是黑的。上一次那扇窗亮着,是九月的某一天,他没有记具体日期。
何晚的消息在手机上。
「你今晚回来吃饭吗。」
方案文档右下角显示已保存,时间十九点零四分。他还没有发给纪衡。
「我做了饭。」何晚说。
「你吃了吗。」
「还没。」
「我回来吃。」
家里是炒菜的味道。何晚系着围裙,锅里的油在响。
「回来了。」何晚说,没有回头。
「嗯。」
「洗手,吃饭。」
一盘青菜,一盘肉丝,一碗汤。何晚坐下来。
「你昨天没睡好。」何晚说。
「嗯。值班,处理了一个事故。」
「严重吗。」
「不严重。已经恢复了。」
事故不严重。资源池使用率从三十四降到三十一,用了六个小时。这两句他都没说。
「你吃粥了吗。」
「吃了。」
「吃了就好。」
何晚夹了一块肉放在他碗里。他夹起来,吃了。
「你胃不好,少吃肉。」
他又夹起来,吃了。
「你今天下午去哪了。」何晚说。
「公司。纪衡找我谈话。」
「说什么了。」
「说了几个事。问我方案能不能推广到其他业务线。还问我,跟易文走得近,想清楚了吗。」
「你怎么回答的。」
「我说回去想一下。」
何晚把汤碗往他那边推了两厘米。
「你那个易文,她教了你很多。」何晚说。
去年这个时候,何晚问他公司的事,他答的是「就那样」。三个字。现在他答了三十七个字,还带了两个人的名字。
「你以前不说谢谢。你以前觉得,什么事情都是应该的。你帮别人做事,别人帮你做事,都是应该的,不用说谢谢。你后来说谢谢了,是因为你开始在意别人怎么看了。」
这句话陈稳没有反驳。他确实不记得自己是从哪一天开始说谢谢的。
「你那个方案,能推广就推广,不能推广就算了。你不需要想太多。你那个纪衡,他问你跟易文走得近,想清楚了吗。你不需要想清楚。你跟她走得近,是因为她教了你东西。你学到了,就够了。」
何晚说完,拿起筷子,继续吃饭。
他夹了一块青菜,嚼了,咽下去。何晚说的「就够了」,和纪衡明天要的答案,不是同一件事。这一点他知道,没有说。
吃完饭,他洗了碗。手机上有易文的消息。
「明天早上,你给纪衡的答案,想好了吗。」
方案文档还没有发出去。发送对象一栏是空的。
「想好了。」他打字。
「你的答案是什么。」
「第一,对账模块重构可以推广到其他业务线。第二,数据治理方案跟对账模块重构可以合在一起。第三,可配置数据加载接口,支持按业务线配置字段名、字段类型、数据源。」
「第四呢。」
第四个问题是「我跟易文走得太近,想清楚了吗」。这个问题他不知道该怎么打出来,光标在输入框里停着。
「你不需要回答纪衡的第四个问题。他问你想清楚了吗,你不需要回答清楚还是不清楚。你只需要说,你学到了什么。他问,你再说。他不问,你不说。」
「好。」
天花板是白的,没有裂缝。
十月十三日,星期二,上午九点。
资源池使用率百分之三十一,比昨晚又降了。纪衡的办公室门开着。
纪衡抬起头。
「进来。」纪衡说。
椅子还在昨天的位置。
「答案想好了吗。」纪衡说。
「想好了。」陈稳说。
「说。」
「第一,对账模块重构方案可以推广到其他业务线。第二,数据治理方案跟对账模块重构方案可以合在一起。第三,如果要做成平台方案,需要加可配置数据加载接口,支持按业务线配置字段名、字段类型、数据源。」
纪衡的手指在桌面上停住了。
「方案我改了一版。把数据治理方案的内容改成对账模块重构方案的第一部分,第二部分是事件驱动加增量比对的实时对账,第三部分是可配置数据加载接口。」
「发我看一下。」
纪衡看完,把手机放在桌上,屏幕朝下。
「你昨天改的。」
「嗯。」
「谁帮你改的。」
这个问题有两个答案。一个是「没有人」,一个是易文的名字。前一个答案纪衡不会信,因为昨天下午四点他还答不上来。
「易文?」纪衡说。
昨晚十一点四十分那段对话,微信记录还在他手机里,第三十七条。
「你方案第三部分的可配置数据加载接口,是你自己想的,还是她帮你想的。」
陈稳想了想,说:「她帮我想的。」
纪衡把手机翻回正面,又翻了过去。
「你跟她学了很多。」
这句话纪衡今天说了两遍。第一遍是问句,第二遍不是。
「你学到了什么。」
陈稳想了想,说:「我学会了,写方案的时候,要写别人能执行的。」
纪衡等着。
「还有呢。」
陈稳想了想,说:「我学会了,说问题,不要说事实。」
纪衡把笔放下了。
「你跟她学了很多。但你要知道,你学的东西,最后是你自己的。不是她的。」
这句话和何晚昨晚说的「你学到了,就够了」,字面上很像,落点不一样。哪里不一样,他当时没想明白。
「你那个方案,我看了。可以。按你的计划执行。先做结算系统,做完了,再跟张磊对接,看他那边需要什么。消息服务加幂等逻辑、TTL 索引、本地失败日志表。」
「好。」
「就这些。」
记事本上多了一行:十月十三日,上午九点。纪衡说方案可以。按计划执行。先做结算系统,做完再跟张磊对接。消息服务加幂等逻辑、TTL 索引、本地失败日志表。
这一行他没有写纪衡说的最后那句话。
消息服务代码里,他开始写消费者幂等逻辑。写到中午,加了一行注释。
-- 已消费消息表,去重,定时清理超过七天的记录
CREATE TABLE IF NOT EXISTS settle_message_consumed (
message_id VARCHAR(64) PRIMARY KEY,
consumed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_consumed_at (consumed_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
他写完,提交 MR,commit message:feat: 消息服务加消费者幂等逻辑——已消费消息表去重,定时清理超过七天的记录。
记事本最后一行:十月十三日,中午。消息服务加消费者幂等逻辑。提交 MR。
茶水间窗外,阳光照在对面楼的玻璃上,反光,刺眼。
你跟她学了很多。但你要知道,你学的东西,最后是你自己的。不是她的。
这句话的意思是,以后不要再问她。
他把水喝完,杯子放进水池。手机通讯录里,易文的名字在第七个。他按到那一行,停住,屏幕在三十秒后自己黑了。
← 第二十二章 P0 · 目录 · 第二十四章 电话 →