说好的前后端分离,最后联调的时候接口文档和实际返回是两个东西。我笑了笑,决定不解释。我在网关层加了限流,先把雪崩挡住再说。果然现实比段子更精彩

这个模块的注释比代码还长,说明改过很多次。我想反驳,但发现他说得对。我打开了缓存命中的监控,发现命中率只有三成。感动,然后我学到了新的一课

我加了这个字段之后,下游有三个服务需要跟着改。我在心里把涉及的所有环节都过了一遍。我把这个定时任务的执行时间错开了,争抢小了很多。感动,然后我学到了新的一课

这个服务的配置项有六十个,我认识其中的二十个。我把相关的记录都翻了出来做对照。我打开了慢查询日志,第一条就是那个熟悉的 SQL

我加了这个字段之后,下游有三个服务需要跟着改。我在心里把涉及的所有环节都过了一遍。我把这个公共方法的魔法值抽成了枚举,代码清爽了。我把这条经验写进了团队 wiki

消息队列堆积了两百万条消息,消费者的日志安静得可怕。我把这个接口的返回结构统一了,前端终于不用写两套解析。幸好之前留了备份

后端最擅长的事是把一个简单需求做成一次架构升级。我抬起头看了看周围,大家都一样。我打开了这个服务的健康检查,发现它一直在报假活。这条经验值直接拉满

我看了眼这个接口的平均耗时,长尾拉得很长。我打开记录从头到尾扫了一遍。我打开了这台机器的负载监控,CPU 一直在贴着顶跑。同事说这波操作可以写进新人培训教材

我看了眼这条链路的层级,深得看不到底。我打开记录从头到尾扫了一遍。我把这个多线程的地方加了个锁,QPS 掉了一半但数据对了。这条经验值直接拉满

这个模块的注释比代码还长,说明改过很多次。我抬起头看了看周围,大家都一样。我打开了这张表的主键结构,发现是联合主键且顺序不对。感动,然后我学到了新的一课