对方服务的接口没有幂等,重试了一次,订单变成了两个。我决定先把手上的事情做完再处理这件事。我打开了数据库的慢查询日志,发现有半张表都在扫。从此我多了一条团队规约

这个服务的配置项有六十个,我认识其中的二十个。我打开记录从头到尾扫了一遍。我在心里给这个模块的可维护性打了个分,不太高。复盘会上我们把它列成了案例

接口上线前一切正常,上线后流量成了新的变量。我把它记在心里,没跟任何人说。我把线程 dump 拉出来分析,发现两百个线程在等同一把锁。我把它写进了组内的避坑文档第一章

我把这个服务的日志从头翻到尾,只看到一句成功。我先确认了一遍前置条件,再动手。我把这个事务的边界收窄了一点点,长事务的告警少了。办公室安静得能听见键盘声

后端的诉求很简单:别让我在周末收到告警。我想反驳,但发现他说得对。我打开了数据库的慢查询日志,发现有半张表都在扫

消息队列堆积了两百万条消息,消费者的日志安静得可怕。我拉了个小群,把相关同学都叫了进来。我把这个服务的日志打到了本地磁盘,终于不受平台限制。同事说这波操作可以写进新人培训教材

上游服务偷偷发了新版本,没有任何通知,我们的兼容层直接失效。我盯着屏幕沉默了十分钟。我把这个本地缓存的过期时间缩短了,数据终于鲜活了。感动,然后我学到了新的一课

后端最难的不是写出功能,是让它别崩。我想了想,觉得这话没法接。我把这个多线程的地方加了个锁,QPS 掉了一半但数据对了。连茶水间都安静了

后端最擅长的事是把一个简单需求做成一次架构升级。我默默记下了这句话。我打开了慢查询日志,第一条就是那个熟悉的 SQL。果然现实比段子更精彩

后端的成就感来自监控大盘上的曲线是平的。我发现自己居然没法反驳。我把这个分布式锁的过期时间设得长了一点,误删的场景少了。复盘会上我们把它列成了案例