第二十章 · 胃药¶
九月二十七日,星期六,上午九点。
纪衡的消息发在八点五十一分,星期六:「方案改好了吗。」
下面还有一条,何晚的,八点四十:「今天有事吗。」两条挨在一起。陈稳先回了纪衡。
「改好了。」
「周四讲。同样的时间,同样的会议室。技术 VP 也会来。」
「好。」
然后他回何晚:「没有。」
「下午我去你公司附近。一起吃饭。」
「好。」
方案第三版昨天下午发给了易文,易文说可以。纪衡还没有看过。这件事陈稳知道,他没有跟纪衡说方案是易文过的。
那件灰色衬衫的袖口开了一道口子,三厘米,上周他跟何晚提过一次。皮鞋是何晚买的,四百八,鞋尖又起了一层皱。
「今天有事吗」发在八点四十,比纪衡那条早十一分钟。上个月有一个星期六她也这么问过,那次他回的是「有事」,回完就去了公司,晚上十点才回她第二条。这次他回的是「没有」。第三版的接口定义只写了三个接口,还差两个,周四要讲。他没有改口。
十一点半,公司楼下花坛边。何晚穿了一件白色短袖,牛仔裤,头发扎起来,手里拎着一个袋子。
「等了多久。」
「没多久。」
何晚把袋子递过来:「给你带了件衣服。你上次说那件衬衫袖口破了。」
陈稳接过来,没有打开:「谢谢。」
公司旁边那条街上的小馆子,两个菜,一个汤。何晚给两个杯子都倒了茶。
「你上次说,你被纪衡叫去开了一个会,有一个叫顾源的人说了三句话,你答不上来。后来呢。」
「后来我回去改了方案。」
「改好了吗。」
「改好了。」
「那你周四还紧张吗。」
陈稳想了想:「不知道。」
「你以前不会说不知道。」
以前他会说「行」「可以」「没问题」。这三个词他上一次用是九月十八日凌晨,回纪衡那条。
何晚没有追问。她夹了一筷子菜,放下筷子,看了一眼窗外,然后起身去结账。陈稳拉住她:「我来。」
「你上次说你这月工资还没发。」
「发了。」
「多少。」
「够。」
何晚松开手。她记得他上个月说过一次工资晚发七天,那次他说的也是「够」。
四十二块。他回到桌边的时候,桌上已经放了一个东西。
「胃药。你上次说那个吃完了。我去药店,问了一下,说这个比那个好。铝碳酸镁咀嚼片,你吃那个,吃多了对胃不好。这个是中成药,温和一点。」
药盒是白底蓝字的,包装上写着一天三次,饭后半小时。他现在吃的那种是饭前嚼两片。
「多少钱。」
「不贵。」
「多少。」
「二十六。」
价签没有揭干净,边上露出一个三和一个八。药店在她家那条街上,来回二十分钟,星期六上午门口能排到台阶下面。这些她没有说。
「你拿着啊。」
陈稳把药盒放进口袋:「谢谢。」
「你不要光说谢谢。你要记得吃。你那天晚上回来,胃一直不舒服,你以为我不知道,但你翻了好几次身。」
那天晚上是九月十八日,他两点四十一分才躺下。他跟她说的是「有点事,处理完了」。
「你那个公司,是不是有毒。」
「还行。」
「你每次都这么说。」
这半年他说了几次「还行」,何晚数过。陈稳不知道她数过。
馆子门口。
「你下午有事吗。」
「没事。」
「那去你公司看看。」
陈稳愣了一下:「去我公司?」
「对。你从来没让我去看过。」
陈稳过了三秒才说:「好。」
刷卡进闸,一号楼三楼。星期六的工位区里有四个人在加班,没有人抬头。
他的工位在最里面一排靠通道。屏幕没有关,显示着监控大盘,绿色的数字,百分之九十九点九九,曲线平稳。旁边一个笔记本翻开着,字迹潦草。再旁边三样东西:一个水杯,一个充电器,一盒胃药。
何晚拿起那盒胃药。铝碳酸镁咀嚼片,三十六粒装,已经打开,吃了三分之一。跟她刚才买的不是一个牌子,是他自己买的那个。她放下。
抽屉没有关严,缝里能看见一板止痛药,还有一盒没拆封的胃药,牌子和桌上这盒一样,是他一次买三盒里的一盒。她把抽屉推回去,推到一半停下,留着原来那道缝。她没有问他为什么要一次买三盒。
她的手指按在笔记本翻开的那一页上,从上往下移。「顾源三句话」「独立消息服务」「消息表迁移」「周四前改完」。四行,四个句号都没有。她合上笔记本,放回原位。
「你工位挺乱的。」
「嗯。」
「你以前不这样。你以前东西放得很整齐。你每次回家,都会把桌面收拾干净。你现在不收拾了。」
这一条他自己没有察觉。桌上那盒胃药是八月十九日买的,之后没有换过位置。
何晚没有追问。窗外是灰蒙蒙的天,没有太阳,没有雨。她转过身。
「走吧。」
「好。」
桌上的胃药进了另一个口袋,两盒在两边。屏幕关掉。
电梯门打开,里面站着一个人。
蒋辉。
蒋辉看到陈稳,愣了一下,又看到何晚,笑了笑:「嫂子好。」
何晚说:「你好。」
蒋辉手里拿着一张打印纸,正面朝下,从他们中间过去。这个称呼他从来没有当着陈稳的面用过第二次。
一楼,大楼门口。
「那个人是谁。」
「蒋辉。」
「就是你说的那个,跟你做同一个项目的人。」
「嗯。」
「他今天也加班。」
「嗯。」
「他手里那张纸,正面冲下的。」
「没注意。」
何晚没有再问。过了一会儿:「我回去了。」
「我送你。」
「不用。你回去改方案吧。你不是说周四要讲吗。」
他没有说过周四要讲。他说的是「回去改方案」。她自己接上的。
何晚看着他,过了一会儿:「你那个胃药,吃完了告诉我。我下次再给你买。」
「好。」
何晚转身走了,在第二个路口转弯,不见了。
三楼的屏幕重新亮起来,监控大盘还在,绿色数字,百分之九十九点九九。加班的四个人还是四个人。
他打开记事本,在最后一行写:九月二十七日。何晚来公司了。她看到了我的工位。她说我变了。她给我买了胃药。
他看了一遍,保存,关掉。
他打开独立消息服务设计文档,看了起来。
九月二十八日,星期日,上午十点。
何晚的消息:「今天加班吗。」
「不。」
「那怎么安排。」
「在家改方案。」
「好。晚上过来吃饭。」
「好。」
太阳出来了,照在对面楼的玻璃上,反光,刺眼。那扇黑着的窗,白天看不出来是黑的。
独立消息服务设计文档改了三处。消息表主键从自增 ID 改为 UUID,避免跨数据库的自增冲突。消息状态从三个枚举改为五个:待发送、已发送、已确认、已失败、已过期。重试策略从固定间隔改为指数退避,初始间隔三十秒,最大间隔三十分钟,最多重试五次。
改完,保存,发给易文。这一版他没有同时发给纪衡。
易文的回复在十分钟后:「消息表加了创建时间、发送时间、确认时间吗。」
「加了。」
「发给我看。」
陈稳把消息表结构发过去。
CREATE TABLE settle_message (
message_id VARCHAR(64) PRIMARY KEY,
message_type VARCHAR(32) NOT NULL,
message_body TEXT NOT NULL,
status VARCHAR(16) NOT NULL DEFAULT 'PENDING',
retry_count INT NOT NULL DEFAULT 0,
max_retries INT NOT NULL DEFAULT 5,
next_retry_at DATETIME,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
sent_at DATETIME,
confirmed_at DATETIME,
expired_at DATETIME,
INDEX idx_status_next_retry (status, next_retry_at),
INDEX idx_created_at (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
易文的回复:「可以。消费者幂等怎么做的。」
「消息 ID 去重。消费端维护一张已消费消息表,记录已消费的消息 ID,重复消息跳过。」
「已消费消息表有清理策略吗。」
「定时清理。超过七天的记录删除。」
「可以。」
陈稳放下手机,继续改方案。他写了消费者幂等逻辑,写了消息表清理策略,写了异常处理流程。他写了两个小时,把方案第三版改成了第四版,二千五百字,四部分:问题描述、方案设计、接口定义、异常处理。
他写完了,保存,关掉。
下午,何晚家。她在厨房里做饭。陈稳在门口站着,没有进去。
「你站在门口干什么。」
「没什么。」
「进来坐。」
沙发上,电视没开,手机没拿。
何晚从厨房里探出头:「你今天怎么这么安静。」
「在想事情。」
「想什么。」
「方案。周四要讲。上次没讲好,这次不能再讲不好。」
何晚回到厨房。抽油烟机响了四十秒就关了,这一顿她煮的是面。
两碗面上桌。
「你觉得,你这次能讲好吗。」
「不知道。」
「你上次说,你写了十五分钟,纪衡说没有重点。这次你写了什么。」
「问题和方法。不是技术方案。」
「有什么区别。」
「上次我写的是,我做了什么,用了什么技术。这次我写的是,遇到了什么问题,用什么方法解决。」
「你觉得这样更好吗。」
「易文说这样更好。」
「那你觉得呢。」
陈稳想了想:「我觉得,这样写,别人更容易听懂。但我不确定,这样写是不是对的。」
「为什么不确定。」
「因为这样写,要少写很多技术细节。我不知道,少了那些细节,会不会漏掉什么东西。」
何晚吃完了半碗,剩下的推到一边。她今天问了六个问题,五个是关于方案的。
水声起来。他还在桌前。方案第四版二千五百字,四部分,问题描述那一节只有一百二十字。
水声停了。她转过身,他就在身后。她擦干手,从他身边过去,拿起手机。
他没有拿手机。
何晚过了一会儿,放下手机,看着他:「你今天晚上,还要回去改方案吗。」
「不改了。改完了。」
「那你看电视吗。」
「不看。」
「那你干什么。」
「坐着。」
「那你坐吧。」
她去厨房倒了一杯水,放在他手边,是刚烧开晾到不烫的那种。他喝了两口。这个杯子是去年他买的,一对,另一个在他自己那边,杯口缺了一小块。
何晚进了卧室,出来的时候手里一件叠好的衣服,放在陈稳身边:「你上次说那件衬衫袖口破了,我给你补好了。」
那道三厘米的口子缝上了,针脚很细,不仔细看,看不出来。线的颜色比衬衫深半个色号,她手边只有这一卷。
「谢谢。」
「你上次说谢谢,是谢谢你给你买胃药。这次说谢谢,是谢谢你给你补衣服。你什么时候能不跟我说谢谢。」
他今天说了两次谢谢。四个月前他一次也不说。
何晚转身进了卧室,关上门。门锁咔嗒一声响,不是锁上了,是关上了,没有锁。
星期天的晚上,对面那栋楼,那扇黑着的窗,还是黑的。
衬衫叠好夹在胳膊下面,鞋穿上了。卧室门外,他站了一会儿:「我走了。」
门内没有声音。
门在他身后合上。他数了一下,门锁没有再响第二声。
小区里路灯亮着。他不知道自己什么时候学会说谢谢的。他以前不说谢谢,也不说很多话。现在他学会了说谢谢,学会了说问题而不是事实,学会了把方案写成问题加方法。
地铁上,易文的消息。
「方案第四版看完了。可以。周四用这个版本讲。有几个地方,我标了注释,你改一下。」
「好。」
他打开方案,看到易文标的注释,三处:消息表清理策略的七天时间窗口,建议改为根据业务量动态调整;消费者幂等逻辑的已消费消息表,建议加 TTL 索引;异常处理流程中,建议加一条:消息发送失败后,写入本地失败日志表,由定时任务扫描重试。
三处全部改完,保存,发给易文。用了二十六分钟。
「改完了。」
「可以。周四早上,再发一版给我看。」
「好。」
车厢的灯白得刺眼。何晚今天说的那句话,他一路上没有想出怎么回。
他打了一条「不用谢也知道」,删了,因为她说的不是这个。又打「我下次不说」,也删了,这句像是答应一件他做不到的事。最后发出去的是「到家了」。发的时候地铁还有四站。
何晚没有回。
记事本最后一行:九月二十八日。方案第四版改完。易文标了三处注释,全部改完。何晚说,你什么时候能不跟我说谢谢。我不知道。
他看了一遍,保存,关掉。
两盒胃药一起放在床头,一盒白底蓝字,一天三次,饭后半小时;一盒是他自己买的,三十六粒装,剩三分之二。她今天没有把旧的那盒拿走。
两点钟他又开了一次灯,把方案从头看了一遍,没有改。第二遍看到接口定义那一节的时候,他把灯关了。
九月二十九日,星期一,上午九点。
纪衡的消息:「周四的方案,准备得怎么样了。」
「改完了。」
「发给我看。」
陈稳把方案第四版发给纪衡。
纪衡的回复在半小时后:「方案可以。周四上午十点,三楼会议室,讲十五分钟。技术 VP 也会来。你准备一下。」
「好。」
连接池使用率百分之四十三,比上周五高了三个百分点。这个数昨天没有人看。
上午十点十分,蒋辉在他工位后面停了一下:「星期六那位是嫂子。」
「是。」
「挺好。」
蒋辉过去了,手里没有拿纸。星期六那张正面朝下的纸,陈稳想问一句是什么,问了就等于说自己看见了。他没有问。
纪衡说的是十五分钟。上一次也是十五分钟,讲完之后顾源用了三句话。这一次方案里那三条风险后面,他加了第四条:单体依赖。
记事本写一行:九月二十九日。纪衡说方案可以。周四上午十点,三楼会议室,讲十五分钟,技术 VP 会来。方案是易文过的,纪衡不知道。
他看了一遍,保存,关掉。
口袋里两盒胃药。他把何晚买的那盒拿出来,拆开,取一片,包装上写着饭后半小时,他没有吃饭。
他把药片放回去,盒子放在桌上那盒旁边,两盒并排。然后新建一个文件,命名为「方案第五版」。
← 第十九章 三句话 · 目录 · 第二十一章 茶水间 →