支付链路横跨十几个服务,一笔交易超时很难定位。本文给出金融行业全链路追踪方案:trace id 贯穿、关键节点埋点、慢交易阈值与合规审计,附落地清单。
一笔支付从下单、风控、收银台、渠道扣款到对账,可能横跨十几个服务、多个数据库。用户投诉「扣款慢」,客服能给的只有交易号,而研发要顺着十几个服务的日志一点点对时间,常常半小时过去了还没找到慢在哪一跳。
解法是把链路追踪当基础设施来建:从入口到出口,每跳都带同一个 trace id,慢在哪一跳一目了然。
「慢」要定义成可度量的规则,而不是凭感觉。建议按渠道分档设阈值:
slow-txn:
pay: { p95_ms: 800, alert: 2000 }
refund: { p95_ms: 1200, alert: 3000 }
query: { p95_ms: 300, alert: 1000 }
超过 alert 阈值的交易自动打上「慢交易」标签并全量保留 trace,配合告警规则,超过一定比例就通知值班群。这样「慢在哪」和「多慢算慢」都有依据。
某次凌晨,pos 渠道扣款平均耗时从 350ms 涨到 900ms。按 trace id 检索该渠道交易,发现都卡在「渠道路由」这一跳,往下钻是路由服务里一个第三方 SDK 的同步调用超时。回滚该 SDK 版本后恢复。整个过程从发现到定位不到十分钟。
如果当时没有全链路 trace,只能对着三个服务的日志人肉对时间,运气不好要折腾一晚上。
金融交易数据敏感,trace 的可见范围要按角色收口:
角色权限在平台租户体系里配置,避免「为了排障把敏感数据敞开」。
金融行业对日志有留存和可追溯要求。方案落地时要同时满足: