news 2026/5/8 16:32:46

从分散到统一:如何重构支付计费系统,降低新业务接入成本

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从分散到统一:如何重构支付计费系统,降低新业务接入成本

摘要:本文介绍一套面向海外支付场景的计费中台架构实践,通过领域驱动设计(DDD)和配置化引擎,实现新业务接入成本降低 80%、代码复用率提升 70%、计费成功率 100% 的工程目标。

关键词:计费中台;领域驱动设计;配置化引擎;架构实践

1. 背景与问题

1.1 业务挑战

海外支付业务面临地域多样性、渠道复杂性、业务多元性、场景灵活性等挑战,各国监管政策、费率结构差异显著,计费逻辑需快速适配迭代。

1.2 架构痛点

传统计费架构采用分散式嵌入式设计,计费能力散落在路由系统(router)、网关系统(gateway)等多个子系统中:

核心问题

  1. 代码重复:相同计费逻辑多系统重复实现,复用率低于 30%

  2. 一致性风险:路由估算与网关实际扣费存在偏差,对账困难

  3. 变更成本高:新增渠道需多系统协同发布,周期 2-3 周

  4. 追溯困难:计费日志分散,全链路定位问题成本高

1.3 解决思路

构建独立计费中台(billing),将计费能力从业务系统中剥离,统一收归至独立中台,实现能力复用、配置驱动、热更新。

2. 架构方案

2.1 架构演进

【改造前】 【改造后】 分散计费模式 统一计费架构 · 逻辑散落 → · 能力下沉 · 硬编码为主 · 配置驱动 · 需重启生效 · 热更新

2.2 统一计费架构

2.3 分层设计

3. 领域建模

3.1 核心实体

基于 DDD 思想,对计费领域进行抽象建模:

3.2 实体定义

4. 核心设计

4.1 事件风暴

通过事件风暴识别计费领域核心业务事件:

4.2 聚合根设计

采用聚合根模式封装计费规则,确保业务一致性边界:

public class BillingRuleAggregate { private RuleId ruleId; private ConditionSpec condition; private FormulaSpec formula; private RateConfig rateConfig; public boolean matches(BillingContext context) { return condition.evaluate(context); } public BillingResult calculate(BillingContext context) { Decimal amount = formula.compute(context, rateConfig); return BillingResult.create(amount, getCalculationDetails()); } }

4.3 配置化体系

支持多维度配置组合,实现"配置即开发":

采用Aviator作为表达式求值引擎,支持条件表达式、公式表达式、三元表达式、函数调用等:

4.4 算法模型

计费引擎支持固定费用和比例费用两种模式:

5. 关键实现

5.1 配置缓存架构

采用多级缓存 + 变更推送架构保障高性能:

  • 多级缓存:Caffeine 本地缓存 + Redis 分布式缓存

  • 变更推送:Redis Pub/Sub 实时通知各节点

  • 缓存预热:服务启动时预加载全量配置

  • 降级策略:缓存失效时降级至数据库

5.2 规则执行引擎

基于 Aviator 实现动态规则解析:

private static final Map<String, Expression> EXPRESSION_CACHE = new ConcurrentHashMap<>(); public Expression getExpression(String expressionStr) { return EXPRESSION_CACHE.computeIfAbsent(expressionStr, AviatorEvaluator::compile); }

工作流程:表达式解析 → 字节码编译 → 缓存复用 → 环境注入 → 结果返回

5.3 结构化日志

日志支持全链路追溯与审计:

{ "traceId": "计费链路追踪 ID", "tenantId": "租户标识", "scenarioCode": "场景编码", "matchedRules": [{"ruleId": "规则 ID", "ruleName": "规则名称"}], "calculation": {"originalAmount": "原始金额", "rateApplied": "应用费率", "finalFee": "最终费用"}, "result": {"status": "计费状态", "feeAmount": "费用金额"} }

6. 系统成效

6.1 核心指标

当前系统支撑近 20 家交易渠道、10 余条业务线、近 10 种交易场景的计费需求。

6.2 性能表现

6.3 稳定性表现

7. 架构扩展能力

7.1 清结算场景

计费引擎的算费能力可扩展至清结算领域,支撑商户结算、分润、服务费等场景:

7.2 插件化扩展

系统采用插件化架构,支持按需扩展新的计费场景:

8. 总结

核心经验

  1. 领域抽象:深入理解业务,提炼通用模型

  2. 配置驱动:变化部分配置化,提升灵活性

  3. 缓存保障:多级缓存策略保障高性能

  4. 日志基石:结构化日志支持全链路追溯

设计原则

作者简介

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/8 16:32:38

一行代码调用20+主流大模型:打造你的统一AI网关

从OpenAI到Claude&#xff0c;从文心到DeepSeek&#xff0c;企业如何优雅地管理多个大模型API&#xff1f;本文分享一套生产级方案。 前言 作为一名AI应用开发者&#xff0c;你是否也经历过这样的痛苦&#xff1a; 接入GPT-4&#xff0c;文档是英文的&#xff0c;参数格式和其…

作者头像 李华
网站建设 2026/5/8 16:32:38

Thorium浏览器终极指南:如何让老旧电脑也能流畅上网

Thorium浏览器终极指南&#xff1a;如何让老旧电脑也能流畅上网 【免费下载链接】thorium Chromium fork named after radioactive element No. 90. Source code and Linux releases. Windows/MacOS/ARM builds served in different repos, links are towards the top of the R…

作者头像 李华
网站建设 2026/5/8 16:32:29

专业的国内无人物流车租赁公司

一、行业背景与需求随着电商的迅猛发展和物流行业的不断进步&#xff0c;物流配送的效率和成本控制成为了企业关注的重点。在这个背景下&#xff0c;无人物流车的应用逐渐崭露头角。据相关数据显示&#xff0c;近年来我国快递业务量持续增长&#xff0c;2023 年已经突破 1000 亿…

作者头像 李华
网站建设 2026/5/8 16:32:25

动态定价算法解析:从技术原理到消费者应对策略

1. 动态定价&#xff1a;一次差点让我“破费”的真实遭遇前几天&#xff0c;我差点被一个看不见的“数字捕手”给咬了一口。事情是这样的&#xff0c;我正为即将到来的Design West会议准备一个关于辐射对嵌入式系统影响的演讲&#xff0c;想搞点有趣的演示道具。我相中了一个带…

作者头像 李华
网站建设 2026/5/8 16:32:22

摩尔定律失效?从NAND闪存工艺演进看半导体产业转型

1. 从“伦敦呼唤”说起&#xff1a;一场关于摩尔定律的行业预判十多年前&#xff0c;一篇来自EE Times的评论文章《London Calling: Moore’s Law fail at NAND flash node》在半导体圈内激起了不小的涟漪。文章的核心观点直指产业心脏&#xff1a;闪存巨头SanDisk在其1Y代NAND…

作者头像 李华