跳转至

第二十五章 · 三分钟

十月十五日,星期四,上午九点。

消息服务日志最后一条是八点四十一分发送的,消费失败,重试中。陈稳按 F5,状态变成「消费成功」,耗时三秒。

纪衡的消息同时弹出来:「十点半,三楼会议室,周会。你讲一下方案进度。十分钟。」

陈稳打开方案,翻到第十六页,又翻回第一页。他读了一遍,觉得自己准备好了。但他知道,准备好了和讲好了是两回事。

十点二十五分,他拿着打印好的方案走到三楼会议室门口。纪衡坐在里面,面前是一台笔记本,蒋辉坐在对面,手里拿着手机。

「坐。」纪衡说。

陈稳坐在蒋辉旁边,把方案放在桌上。

「今天讲三件事。第一,对账模块重构方案进度。第二,数据治理方案推广情况。第三,消息服务上线后的运行数据。陈稳先讲。」

纪衡把笔记本转过来,屏幕亮着,上面是一个计时器,显示 00:00。

「十分钟。」

陈稳走到会议室前面,翻开方案第一页。数据质量监控脚本,字段值分布、字段值格式、字段值逻辑关系。

「对账模块重构方案,目前进度是……第一阶段的……数据质量监控脚本已经写完了。今天上午提交的。三条规则,字段值分布、字段值格式、字段值……逻辑关系。」

他说话的速度比平时快,每一句话的结尾都在往下掉。他听见自己的声音,觉得不像自己。

「第二阶段的数据治理,数据治理方案,营销技术部那边,已经确认了,可以接入。配置周期一周,运行周期一个月。」

纪衡靠在椅背上,没有看方案。

「配置做完了吗。」

「做完了。昨天提交的。营销技术部接入示例,字段映射配置,数据源配置。」

「他们那边开始跑了吗。」

「没有,今天开始跑。」

「什么时候能看到数据。」

「一周后。配置完成后,数据回流需要一周左右。」

纪衡没有继续问。陈稳停了两秒,然后翻开方案第五页,指着实时对账流程图说:

「第三阶段,实时对账。事件驱动加增量比对。消息服务上线后,结算系统发送结算事件,消息服务消费后,触发对账。比对完成后,异常标注,结果入库,告警通知。」

他的手指从「事件监听」移到「数据加载」,移到「规则比对」,移到「异常标注」,移到「结果入库」,移到「告警通知」。移完了,手停在纸的边缘。

「以上就是目前的进度。」

纪衡把笔记本转过来,计时器显示 03:11。

「你讲完了?」

「讲完了。」

「你方案里写了,第一阶段全部内容,两千三百字,数据字典、数据质量监控、字段对齐规则、视图创建脚本。你刚才讲了三分十一秒,其中一分半在讲数据质量监控脚本,两分钟在讲营销技术部接入,三十秒在讲实时对账流程图。你方案里最核心的部分——数据字典的结构、字段对齐的原则、视图创建的方式——你一个字都没讲。」

陈稳想开口,但没有说出来。

「你回去想一下,下次讲的时候,重点讲什么。不是把你方案里所有的东西都讲一遍,是讲你方案里最重要的东西。你只有十分钟,你不可能讲完所有东西。」

纪衡把笔记本合上。

「蒋辉,你讲一下消息服务上线后的运行数据。」

蒋辉走到前面,没有拿任何东西。

「消息服务十月十二日上线,运行四天,目前无告警。累计处理消息一万两千四百零三条,全部消费成功,无积压,无异常。消费者幂等逻辑已上线,已消费消息表去重,定时清理超过七天的记录。消息表当前数据量六万七千行,预计一个月后稳定在三十万行左右,在可接受范围内。」

蒋辉讲了大概两分钟。纪衡没有打断,没有提问。陈稳坐在椅子上,方案翻开在第二页,字段对齐原则,四十二条字段映射规则,他一个字都没有讲。

「数据治理方案推广情况呢。」纪衡说。

「张磊那边已经在做了。数据平台组内部推广,下周一两条业务线试点,十一月底前全公司推广。」蒋辉说。

「数据治理方案是谁做的。」

蒋辉停了一下。

「陈稳做的。」

「那为什么是你来回答。」

纪衡的目光从蒋辉身上移开,落到陈稳身上。

「陈稳,下次你讲的时候,把你做的数据治理方案讲清楚。不是让别人替你讲。」

纪衡说完,走出会议室。走廊里传来脚步声,越来越远,然后消失了。

会议室里只剩下陈稳和蒋辉。陈稳把方案合上,装进包里。

「你刚才讲得挺好的。」蒋辉说。

「你以前不会讲这么多。你以前只会说,'我做了',然后就没有了。现在你会说,'我做了什么,怎么做,什么时候能做完'。虽然纪衡说你不该讲数据质量监控,但你讲出来了,比以前好。」

陈稳把包背起来。

「你那个方案,我看了。数据字典、字段对齐、视图创建,写得不错。你什么时候写的?」

「这个月。」

「你一个人写的?」

「嗯。」

蒋辉把手机放进口袋。

「你变了。以前你写了东西,没人知道。现在你写了,别人知道了。」

蒋辉说完,走出会议室。

陈稳站在原地,方案翻开在第一页,标题下面写着「v5.1」。他想起自己刚才讲了三分十一秒,而最重要的东西一个字都没有讲。

他回到工位,打开记事本,写一行:

「十月十五日上午。周会。我讲了三分十一秒。纪衡说,最重要的东西没有讲。数据字典、字段对齐原则、视图创建脚本,我一个字都没有讲。」

他保存,关掉,然后打开方案,从第一页开始读。第一页:标题、背景、现有问题。异常发现时间 T+1、异常率百分之十一点七、人工核对耗时平均每人每天三小时。他一个字一个字地读,读完了,翻到第二页。字段对齐原则,四十二条字段映射规则。他写的时候很认真,每一个字段名、每一个类型、每一个空值策略,他都确认过。但他在讲的时候,一个都没有提。

他翻到第三页。数据治理,字段对齐、视图创建、数据清洗、数据质量监控。四十二条字段映射规则,他写了整整两天,和易文改了三次才定稿。

他翻到第五页。实时对账流程图,六个节点。他今天讲的时候,手指从「事件监听」移到「告警通知」,用了三十秒,全部讲完了。但流程图下面还有一行字,他写的时候加进去的:事件监听依赖消息服务可靠性,消息服务不可用则降级为轮询,间隔三十秒。他今天没有讲这个。

他翻到第六页。可配置数据加载接口。他写的时候,接口设计为四个参数:业务线编号、字段映射配置、数据源配置、数据加载策略。他今天没有讲这个。

他翻到第七页。时间计划。第一阶段数据治理,两周;第二阶段实时对账,四周;第三阶段推广,两周。他写完了,纪衡说「方案可以。按你的计划执行。」但他今天没有讲这个。

他翻到第八页。风险与应对。方案失败后的回退方案——如果实时对账不可用,回退到现有 T+1 对账流程,数据不丢失,仅延迟。他今天也没有讲这个。

他关掉方案,打开消息服务日志,刷新。最后一条消息是十点四十一分发送的,消费成功,无异常。他刷新,又一条,也消费成功。他继续刷新,第五次,第六次,第七次。全部通过。

他关掉日志页面,打开营销技术部的接入配置,检查了一遍。数据源配置、字段映射配置、接口配置,全部正确。他关掉页面,打开数据质量监控脚本,又跑了一遍,全部通过。

下午两点。他打开记事本,在最后一行写:

「10.14.1.88。问周其正。」

他拿起手机,找到周其正的号码,按了通话键。响了四声,周其正接了。

「喂,陈稳。配置收到,已经在跑了。数据量还不大,等两天看看效果。」

「周其正,我想问你一个问题。」

「你说。」

「你们营销技术部的测试环境,DHCP 分配记录,能查到吗。」

电话那头安静了两秒。

「你查这个干什么。」

「我之前查到一条日志,有一个 IP 是你们营销技术部测试环境 DHCP 池分配的,我想确认一下是谁在用。」

「IP 多少。」

「10.14.1.88。」

周其正那边传来键盘声,很快。

「这个 IP 是测试环境的 DHCP 池,没错。九月十七号晚上分配过一次,十月十一号晚上又分配过一次。分配记录上没有写具体是谁申请的,但 DHCP 池是研发部维护的,只有研发工程师有权限申请。你等一下,我查一下分配日志。」

键盘声又响了一阵。

「分配日志显示,两次分配都是同一个人申请的——张毅。你们结算组之前那个,后来转到技术支持中心的老梁的交接人。」

陈稳把手机换到左手,右手在记事本上写:张毅。10.14.1.88。两次分配。

「张毅申请这个 IP 做什么?」

「分配日志上没有写用途。DHCP 池申请只记录申请人、分配时间、分配 IP,不记录用途。你要查更详细的,得找研发部要全量日志。」

「好。谢谢。」

「你查这个 IP 干什么?」

「之前有一次索引被人为删除了,操作日志显示是 root@localhost,IP 是 10.14.1.88。我想确认是谁做的。」

「张毅?」

「不确定。分配记录是他申请的,但不代表是他操作的。root 权限可以共享。」

「那你查到了告诉我。」

「好。」

电话挂断。

陈稳放下手机,在记事本上写:

「10.14.1.88——张毅。两次分配:九月十七日、十月十一日。索引删除:八月一日。分配记录无用途备注。需查研发部全量日志。」

他保存,然后打开消息服务日志,刷新。最后一条是十三点五十八分发送的,消费成功。他刷新,又一条,也消费成功。他关掉页面,靠在椅背上。

他想起张毅。张毅是老梁在技术支持中心的交接人,九月份回滚了营销结算适配器限流配置,commit message 写「恢复默认配置」。张毅不会犯索引删除的低级错误——顾源说过。但分配记录是张毅申请的。

他不确定这说明了什么。

下午五点。他打开记事本,又看了一遍自己写的那行字。张毅的名字写在那里,旁边是那个 IP,还有两个日期。他想起易文说过的话:「等那个人再动一次。」现在那个人动了——十月十一日,又分配了一次。但这次没有触发任何事故,可能是因为索引已经加回来了,也可能是因为那个人没有做任何操作。

他不知道。

他关掉记事本,打开方案,翻开第二页,开始背字段对齐原则。四十二条映射规则,他背了六条,卡住了。他翻回上一页,继续背。背到第十五条,又卡住了。他翻回上一页,继续背。背完四十二条,他花了十几分钟。

他关掉方案,打开消息服务日志,刷新。全部通过。

晚上七点。他回到家,何晚在厨房里,锅里在煮东西。他换好鞋,走过去,站在厨房门口。

「今天回来得早。」何晚说。

「嗯。今天周会,我讲了三分十一秒。」

「讲得怎么样。」

「纪衡说,最重要的东西没有讲。」

「那你觉得呢。」

「我觉得他说得对。」

何晚把火调小,转过来看着他。

「你以前不会说'他说得对'。你以前只会说,'还行'。」

「你今天还查到了什么?」

陈稳看了她一眼。

「你查到了什么。」

「我查到了那个 IP 是谁申请的。」

「是谁。」

「张毅。」

「张毅是谁。」

「老梁在技术支持中心的交接人。之前回滚过限流配置。」

「他为什么要删索引。」

「不确定。分配记录是他申请的,但不代表是他操作的。」

「那你打算怎么办。」

「查研发部的全量日志。」

「你查得到吗。」

「不知道。先问一下。」

何晚把火打开,继续煮东西。锅里冒着热气,水汽在厨房里慢慢散开。

「你变了。你以前不会查这种事。你以前只会说,'算了,反正不影响业务'。」

陈稳看着她。她没有回头,背对着他,手里拿着铲子,在锅里翻动。

「以前觉得,查了也没用。现在觉得,查一下,至少知道是谁。」

「那你查到了,然后呢。」

「然后再说。」

何晚把菜盛出来,端到桌上。陈稳坐下来,拿起筷子,夹了一口。

「你做的菜,不咸了。」

「今天放的盐正好。」

何晚坐在他对面,看着他吃饭。她看了一会儿,低下头,开始吃自己的。

「你那个易文,今天教了你什么。」

陈稳把筷子停在半空中。

「她今天没有教我什么。我自己查的。」

何晚抬起头,看着他,没有接话。陈稳知道她不相信,但她没有追问。

他继续吃饭,夹了一口菜,咽下去,又夹了一口。他吃完了,放下筷子。

「何晚。」

「嗯。」

「你今天怎么不问我,学到了什么。」

何晚看着他,拿起筷子,又放下。

「因为你现在不需要我提醒你学了什么了。你自己知道。」

晚上十点。他坐在电脑前,打开记事本,看了一遍今天写的所有东西。数据质量监控脚本、周会三分十一秒、字段对齐原则、10.14.1.88——张毅。他读了一遍,又读了一遍,然后打开方案,翻开第二页,继续背字段对齐规则。

四十二条映射规则,他背了二十一条,卡住了。他翻回上一页,继续背。背完四十二条,他花了十二分钟。比下午快了。

他关掉方案,打开消息服务日志,刷新。全部通过。

他关掉页面,在记事本最后一行写:

「十月十五日,晚上十点。四十二条字段对齐规则,背完一遍,十二分钟。比下午快了四分钟。」

他保存,关掉。窗外很安静,对面楼的灯亮着几扇。他看了一年多的那扇窗,灯是黑的。

他想起今天在会议室里,纪衡说「你讲完了?」的时候,他站在那里,手里拿着方案,不知道接下来应该做什么。他想起自己讲了三分十一秒,而最重要的东西一个字都没有讲。

他想起自己查到的名字。张毅。这个名字写在记事本里,旁边是那个 IP。他想起自己问周其正的时候,周其正说「你查到了告诉我」。他不知道能不能查到,但他知道,他已经开始查了。

窗帘没有拉紧,外面透进来一点点光,很淡,很弱。

他翻了个身,侧躺着,面向窗户。他不知道自己什么时候睡着的。


← 第二十四章 电话 · 目录 · 第二十六章 路过 →