对方服务的接口没有幂等,重试了一次,订单变成了两个。我深呼吸了一下,决定从最可疑的地方查起。我在日志里把 traceId 打上,排查信心立刻回来了。幸好之前留了备份
😂 IT段子
程序员日常、代码趣事、技术梗图,让你在学习之余轻松一笑
后端的问题很少出现在代码里,多半在配置或者环境。我把它记在心里,没跟任何人说。我把这个接口做了限流,营销活动终于没把库打垮。复盘会上我们把它列成了案例
这个接口的入参有八种组合,文档里写了三种。我先确认了一遍前置条件,再动手。我打开了这个接口的入参日志,终于看到那个空字符串了。从此我多了一条团队规约
对方服务的接口没有幂等,重试了一次,订单变成了两个。我默默打开了编辑器,准备一步步验证。我把这个批量接口分了页,单次请求终于不再超时。连茶水间都安静了
同一个接口,测试环境返回三秒,生产环境返回三百毫秒,没人知道为什么。我把这个批量接口分了页,单次请求终于不再超时
服务之间的调用链越来越长,一次请求要经过六个服务。我抬起头看了看周围,大家都一样。我打开了这个任务的执行历史,发现昨天它根本没跑。真香定律准时生效
OOM 了,堆 dump 下来 3 个 G,打开一看全是缓存,缓存了三年前的数据。我默默打开了编辑器,准备一步步验证。我把这个定时任务的执行时间错开了,争抢小了很多。第二天这个方案就变成了团队标准做法
服务之间的调用链越来越长,一次请求要经过六个服务。我忽然觉得,这可能就是这一行的常态。我打开了这个服务的依赖关系图,圈出了一个环形依赖
后端的诉求很简单:别让我在周末收到告警。我叹了口气,然后打开了编辑器。我把这个事务的边界收窄了一点点,长事务的告警少了。幸好之前留了备份
后端最擅长的事是把一个简单需求做成一次架构升级。我盯着屏幕,觉得这才是我的一天。我把这个服务的配置项从代码里挪到了配置中心。好在最后有惊无险