Routing · Ledger · Resilience
从下单那一刻的路由决策,到每天凌晨的自动结算,一条链路全覆盖。 通道挂了自动改道,费率下单即冻结,报表和审计永远同一个口径。
通道按权重分流,权重决定的是尝试顺序,不是并发度。一次下单在任一时刻只有一条通道在飞 —— 不会出现「这边刚出码、那边又改道」的双单。
上游没给反馈就继续等,真失败了才切下一条,每条通道分到的预算按剩余通道数自适应, 不做「按通道数平均分配时限」那种把每条都掐死的做法。
按通道权重决定优先顺序,权重高的先试。跟「优先级」不是一回事:停用通道、未绑定供应商的通道会自动排出,不用手工维护一份名单。
上游返回失败、超时、余额不足,立刻切下一条,并把「哪条通道、耗时多少」写进订单异常信息,运营在后台直接看得见,不用翻日志。
产品层与通道层各有一套限额,支持单笔、单日、单月、累计、笔数等类型,下单时双层同时校验,任意一层不通过即拦截。
单笔外呼总预算固定,每次尝试的预算是「剩余预算 ÷ 剩余通道数」—— 越往后通道越少,能拿到的时间越多,不会出现前几条把预算吃光、后面全没机会的情况。
订单生成的那一刻,商户费率与成本费率就一起写进订单。之后的审计、报表、账单全部读这份冻结值 —— 改费率只影响新单,不会把历史账目算歪。
每天凌晨自动结算,日终账单按支付产品拆明细后推送到运营群,明细与合计走同一条查询,不会出现两处对不上。
订单落库时同时写入商户费率与成本费率。报表和审计读的是同一份快照,两者天然同口径。
凌晨自动跑当日结算,已关闭的商户与供应商同样纳入,不会被静默跳过。结算开关只控制是否通知,不影响记账本身。
结算完成后跟发一条账单,按支付产品拆开明细。冲正单与测试单自动排除,不污染经营口径。
商户侧统一按「跑量 − 预付」呈现,与后台口径对齐。结算扣款等非人工往来在账单里单独识别,不混进预付明细。
限流与封禁分两层:应用层按商户、按接口限速,系统层只封真正的攻击特征 —— 被自家限流挡下的正常商户,不会被误判成攻击者拉进永久黑名单。
每台机器独立部署、独立登录态,一台的密钥泄露不会横向波及其余节点。异常订单有兜底状态与筛选入口, 超时单不会变成查无此单。
| 能力 | 做法 | 解决什么 |
|---|---|---|
| 应用层限流 | 按商户与接口维度限制请求速率,超额返回明确的限流响应而不是直接断开 | 单商户刷接口拖垮整机 |
| 系统层封禁 | 只对认证失败类特征计数封禁,限流命中不计入 | 大商户跑满限速后被误封永久黑名单 |
| 异常单兜底 | 订单状态覆盖超时、异常两类,列表可按异常筛选并查看上游原始信息 | 订单卡住后无处可查、只能翻服务器日志 |
| 多节点隔离 | 每台独立密钥与数据,互不通用;配置与结构一致性可在运维面板核对 | 一处泄露横向打穿全部节点 |
| 运维可视化 | 后台看 CPU 利用率与负载趋势、订单量与成功率、数据库结构差异 | 出问题只能登机器,响应慢 |
整套系统独立部署到你自己的服务器,数据完全在你手上,不与任何其他方共用实例。
运营后台(通道、产品、商户、费率、报表、权限)、商户后台(订单、费率、账单、对接信息)、运维面板(节点状态与结构核对),按角色分开,互不越权。
在群里就能改费率、调通道权重、查订单、看账单、收异常告警。后台能配的东西,机器人基本都能配,不用守着一台电脑。
上游按统一适配层接入,新通道对着文档补一个适配器即可上线,不用改动下单主流程。
一客一节点,密钥、数据、登录态各自独立。横向扩容时按平面复制,不引入共享单点。
可以开一套演示环境给你,用自己的账号跑一遍下单、改费率、看账单、查异常单。