首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
JavaEdge
华为_2012实验室_Java工程师
关注
已关注
取消关注
一起来学习吧
@JavaEdge:
支付账务清结算系统设计
1 账务清结算系统职责概述账务清结算系统是支付系统的资金控制管理模块,分为:1.1 账务账务系统为外部客户和内部管理者提供符合公司内部财务核算的各种会计凭证、账簿与财务报表,一般分为:实时入账模块,负责在线完成客户账户余额更新日终批处理模块,负责日终余额校验并完成会计报表统计1.2 清结算支付业务的资金计算模块,最终目的是实现与商户的货款两清,功能包括:**清算(Clearing)**是根据交易结果和协议规定,对交易的客户备付金、商户手续费、银行成本和其他款项进行计算,明确每个客户的应收应付金额**结算(Settlement)**是根据结算周期规定,对清算产生的应收应付金额,完成资金的划拨;对账最终完成货款两清**对账(Statement)**过程中交易成员对收付的结算款项核对、确认,确保自身权益不受影响2 建设重点账务清结算系统承接支付的所有交易的资金处理。除了满足基本结算业务规则和财务会计规则,还需根据互联网支付业务特点,额外考虑:实时交易,交易总量大,交易峰值不可控KA 商户模式,数据库存在热点账户问题,并且资金数据是敏感数据,要求绝对的准确,所以数据库表拆分方案复杂结算模式多样,千人千面结算计费规则3 系统功能架构三方支付场景中,账务和清结算是交易的必要一环,入账和清结算请求,来自交易支付系统。3.1 支付交易的标准入账结算信息流交易支付系统分别通知账务、清结算模块,完成交易入账、交易清结算处理,清结算完成结算后再次调用入账完成结算款划拨。那么,为啥要分开并行完成交易入账和清结算请求呢?账务的维度和交易的资金出入要一一对应,组合支付、合单支付场景,一笔支付不能完全对应一笔结算,需在支付交易系统明确订单拆分规则,依商户订单模式报送清结算,依支付订单维度报送账务账务和清结算分开,可在内部做一个弱校验,即使其中一个系统出问题,也可保证不产生资损,降低资金风险账务清结算系统接收到支付的指令后,根据业务流程、账务规则和结算规则,设计账务清结算系统的组成结构:一、前置接口 对外系统提供不同的协议服务,以完成账务入账和结算逻辑。主要处理:流量控制:对接口流量控制,防止流量洪峰;对单账户控制,防止热点账户影响校验中心:完成交易的完整性校验、幂等性校验、账户状态的可用性校验等决策中心:完成交易和记账规则、结算规则的匹配,同时处理熔断机制下的业务降级决策二、账务清结算业务处理,账务结算的核心处理模块。这部分业务是根据传统的结算业务规则、账务会计规则,通过技术手段实现自动化结算业务、记账业务和会计报表业务。4 技术难点4.1 热点账户即正常交易过程的某个特定时间段内,出现频次特高的账户。若数据库异常重试或交易故障的人工恢复等处理导致的高频,一般不作热点账户。账务处理避免不了数据库行锁。若一次账务处理数据库事务 10ms,对热点账户处理 TPS 最大 100,一旦超过阈值,频繁锁竞争会使数据库性能骤降。热点账户分类:4.1.1 入款热点入款热点常用的做法是缓冲入账,将入款交易缓冲,按照一定的处理速度做账务处理,使得账务处理速度低于 tps 的阈值,保证数据库性能稳定;如果在逐笔缓冲处理仍有压力,可以使用汇总缓冲。4.1.2 出款热点出款热点若采用缓冲,可能导致不良结果,一般不采用,通常对出款热点的处置方案:① 数据库驱动层改写由数据库驱动层检测数据库行锁,在规定时间周期内,合并更新,统一返回处理结果,类似汇总入账,降低热点的更新频度② 数据库水平拆分账务系统的账户记录分散到不同机器的不同表。再对有热点的账户逻辑拆分成多个账户,使拆分的多个账户分散到不同机器的不同表。热点账户变成多个账户,降低账户热度③ 应用层实现通过分布式缓存,冻结部分商户资金放在分布式缓存中,由缓存实时扣款。最终再同步到账户余额。本文账务清结算系统采用分布式缓存方案,包括:账户余额实时处理模块、账户余额缓存处理模块和定时补偿处理模块。4.2 业务处理模块4.2.0 流程图4.2.1 账户余额实时处理接受客户端出款请求,转发到账户余额缓存处理模块处理做实际的数据库余额操作,接受缓存处理模块或定时检查模块请求汇总更新数据库4.2.2 账户余额缓存处理负责用户出款请求。申请缓存余额、余额缓存出款、汇总更新余额功能。4.2.3 定时补偿处理为防止缓存异常等问题导致用户余额失真,定时处理模块定期检查缓存申请的余额处理情况和缓存状态,在缓存过期时调用余额实时处理模块刷新用户余额。5 数据库拆分账务清结算数据按用途分:每笔交易记录借贷双方,便于日终余额核对,同时满足会计上凭证需求需满足交易的日统计需求商户结算账单查询需求,商户 T+1 日需要核对 T 日结算账单数据需满足商户按日实时查询需求小微商户结算周期多变、对账周期长需满足小微商户按月账单读取,甚至按季度账单读取基于热点账户和主要需求,数据库表拆分规则:先按客户属性完成拆分:资金渠道方的数据,需满足按日汇总和 T-2 日对账需求,这部分数据采用按日一级拆分,为避免一日内交易过的,按订单 hash 拆分到不同表中,尽量保证单表的记录在几百万内商户数据,由于支付商户分小微普惠型商户和 KA 商户。这两类商户诉求不尽相同KA 商户资金流大,交易笔数多,要求日清日结,按商户+日期+订单号拆分,控制单笔记录几百万内,保证单日商户数据查询效率小微商户,交易量小,查询时间跨度长,只按商户号一级拆分6 结算规则针对商户计费结算规则多变,设计个标准的算法指令,指令可完成数值比较、四则运算、数据赋值等操作。还设计一套算法组合标准,把若干算法按标准组装成算法执行策略,通过对算法策略包含的每个算法指令的执行,完成计费结算逻辑。6.1 执行流程图关注我,紧跟本系列专栏文章,咱们下篇再续!作者简介:魔都国企技术专家兼架构,多家大厂后端一线研发经验,各大技术社区头部专家博主,编程严选网创始人。具有丰富的引领团队经验,深厚业务架构和解决方案的积累。参考:编程严选网
点赞 0
评论 1
Java求职圈
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
04-20 09:47
蚌埠坦克学院 嵌入式软件开发
京东嵌入式二面 (整体感觉很随和)
1. 先做一个自我介绍吧,重点讲讲你的学校经历、实习经历,以及你认为最能体现你能力的一段经历参考答案:我会先简要介绍自己的专业背景、技术方向和目前主要在做的事情。然后重点讲学校里做过的项目、竞赛或者实验室经历,说明自己不是只停留在课程层面。如果有实习经历,我会突出实习中接触到的真实业务场景和我承担的具体工作。我会挑一段最能体现自己能力的经历展开,比如独立完成模块开发、定位复杂问题或者推动优化落地。表达时会尽量讲“我做了什么、为什么这么做、结果怎么样”。最后会把这些经历和嵌入式岗位要求关联起来,体现匹配度。2. 你之前的实习主要做了什么?有没有一件事情是你从不会到能独立负责的?参考答案:我会先介...
查看10道真题和解析
点赞
评论
收藏
分享
04-20 10:09
浙江大学 算法工程师
滴滴C++一面复盘
这场滴滴C++一面整体问得很杂,但又不是那种完全脱离项目的八股拷打,更多是基础题穿插项目追问。前面会先看你的计算机基础和C++功底,后面再结合项目去问设计、优化、排查和取舍。整体感受就是:范围广,节奏快,很多题都能继续深挖。我自己的感受是,面试官比较看重你是不是真的理解,而不是只背过答案。像进程线程、Reactor、epoll、HTTPS、MySQL索引、内存池这些题,如果只能说定义,很容易就被问住。另外项目一定要熟,不然后面问到性能优化、技术选型、线上问题排查时,会比较难接。这场面试大概问了这些题:进程与线程的区别是什么?C++11 协程的用户态线程是怎么实现的?什么是 Reactor 模型...
查看27道真题和解析
点赞
评论
收藏
分享
不愿透露姓名的神秘牛友
03-30 21:35
网易互娱,草台班子这一块
爱蜜莉雅碳劝退测开:
裁员裁大动脉了
点赞
评论
收藏
分享
03-03 23:42
复旦大学 Java
为啥找不到日常实习
目标后端
_无论云泥意贯一:
把复旦大学放前面,山东大学放后面,并且在两个大学后面标注985(用一些显眼的颜色标注)
点赞
评论
收藏
分享
04-20 22:37
广西大学 算法工程师
美团 Agent开发 一面
群里小伙伴投稿的时候 我也懵了一下 ,纯八股1. 自我介绍,着重讲讲你的履历2. 讲讲 HashMap 和 Hashtable 的区别,为什么现在工程里几乎不用 HashtableHashtable 的方法基本都是同步的,粒度重,性能差,而且不支持高并发场景下的细粒度优化。HashMap 本身不是线程安全的,但它更轻量,配合外部同步、ConcurrentHashMap 或更合理的并发设计更适合现代工程。Hashtable 还有一个问题是历史包袱重,API 设计也比较老旧,所以现在一般不作为首选。3. 设计一个线程安全的“批量删除 HashMap 中符合条件的 value”功能不能直接在遍历时删...
AI-Agent面试实战...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
1
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
放弃其他大厂,我为什么选择携程机票BU?
8411
2
...
前端手撕总结
7429
3
...
你总挂在同一轮,其实是因为...
2713
4
...
得物后端AI面
2656
5
...
第一次面试即kpi
2602
6
...
地狱四月
2588
7
...
我的前途全被学校毁了!!!
2498
8
...
28届双非本oc鹅厂
2067
9
...
25届入职互联网大厂的老登,总结了几点心里话
1728
10
...
暑期完结!
1408
创作者周榜
更多
正在热议
更多
#
你的实习产出是真实的还是包装的?
#
74099次浏览
593人参与
#
你是怎么和mt相处的?
#
101898次浏览
496人参与
#
华泰星战营,提前锁定校招offer
#
13717次浏览
389人参与
#
打工人的工作餐日常
#
95983次浏览
550人参与
#
拼多多集团-PDD笔试
#
86453次浏览
593人参与
#
网易游戏雷火笔试
#
11486次浏览
108人参与
#
26届秋招投递记录
#
123502次浏览
683人参与
#
招银网络科技(深圳)有限公司成都分公司笔试
#
5128次浏览
20人参与
#
毕业论文怎么查AI率
#
85407次浏览
1963人参与
#
网易笔试
#
171312次浏览
812人参与
#
简历上如何体现你的“AI”能力?
#
17339次浏览
382人参与
#
找不到大厂实习可以去小厂吗?
#
23166次浏览
278人参与
#
你总挂在第__面?
#
12332次浏览
148人参与
#
哪些AI项目值得做?
#
27142次浏览
663人参与
#
如何准备秋招
#
81852次浏览
871人参与
#
0offer互助地
#
769966次浏览
4723人参与
#
实习时最怕听到的一句话
#
23958次浏览
226人参与
#
多益网络工作体验
#
70114次浏览
312人参与
#
没有面试的日子里,你在做什么
#
14866次浏览
387人参与
#
秋招被挂春招仍然能投的公司
#
31802次浏览
241人参与
#
秋招开始捡漏了吗
#
244555次浏览
1058人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务