Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >微服务架构下的结算系统设计

微服务架构下的结算系统设计

原创
作者头像
会跳舞的机器人
修改于 2020-06-12 10:17:39
修改于 2020-06-12 10:17:39
1.3K0
举报

一、背景

公司业务系统的账户资金对接了第三方存管业务,第三方存管指的是银行与证券公司根据相关的法律法规,为投资者提供的客户交易结算资金管理服务。根据银行要求,在每个交易日闭市后业务系统都要将客户的资金变动情况生成清算文件发送给银行进行资金的清结算。

微服务架构下,系统存在多个业务子系统(同一套账户体系),那么每个业务子系统发生的资金变动都要进行结算,我们独立了一个结算子系统,结算子系统要做的事情就是按照银行给的资金数据统计规则统计各个业务子系统客户发生的资金变化情况并生成清算文件,然后与银行进行清结算。

二、问题与挑战

2.1 数据同步并保证数据的准确性

由于各个业务子系统和结算子系统不在同一个数据库,那么我们面临的第一个问题就是要将各个业务子系统的资金变化数据同步至结算子系统中,由于是每日结算一次,所以对数据的实时性要求并不高,只要在结算之前能同步完变动数据即可。数据的准确性指的是结算子系统的数据必须要与业务子系统实际的数据一致,不能多一条也不能少一条,否则会清算失败。

2.2 满足灵活应对多变的业务场景

业务的发展是多变的,如果系统后续多增加了几个业务子系统或者砍掉了几个业务子系统,结算子系统最好是不用任何改动即可满足新业务的接入或剔除。

2.3 业务子系统能快速接入

对于业务子系统来说,想要接入结算子系统肯定是越简单越好,最好是几行代码就能搞定。

三、解决方案

3.1 数据同步方案

常见的数据同步方案包括数据库同步、数据文件同步、远程接口获取、MQ数据同步、手工同步。下面就针对这五种同步方式做简单的优缺点分析。

image
image
1)数据库同步

数据库同步指的是通过某种工具将A库的数据同步到B库中,比如ETL工具,MySQL的话,可以考虑canal,canal是阿里巴巴开源的MySQL binlog 增量订阅&消费组件。

  • 优点:数据准确性较高
  • 缺点:实施起来较为复杂;扩展性差
2)数据文件同步

文件同步指的是业务子系统将资金数据生成文件放在某个位置上,比如FTP,而后结算子系统上FTP取文件解析入库。

  • 优点:数据准确性高
  • 缺点:灵活性不足
3)远程接口获取

各业务子系统提供资金数据查询的接口,结算子系统通过接口调用的方式来获取数据

  • 优点:比较适合数据量较小情况下的数据传输同步
  • 缺点:效率低;灵活性和扩展性较差
4)MQ数据同步

业务子系统在资金数据发生变化时,通过MQ准实时地将变化数据发送至结算子系统,结算子系统消费消息并入库。

  • 优点:灵活可扩展,且满足业务子系统快速接入的要求,只需要发送一条消息即可,结算子系统只需要关注消费消息并入库即可,就算后续有新增的业务子系统接入,结算子系统也无需改动或少量的改动
  • 缺点:强依赖于MQ中间件,当MQ出现消息阻塞或者宕掉时,数据准确性无法保证
5)手工同步

依赖于人工的导出&&导入数据,其实在定义好相关脚本后,工作量不算太大

  • 优点:数据准确性高,可以核对数据
  • 缺点:不自动化,增加了人工工作量

四、实施方案

数据同步方案

数据同步方案可以采用:MQ数据同步+手工同步的方式。主要依赖于MQ做数据同步,在MQ同步发生问题的情况下,再用手工同步做灾备方案,一般情况下MQ是没有问题的。当然这种方案主要是考虑到它的灵活性与扩展性,再加上实现起来比较简单。考虑到数据的准确性,其实数据文件同步也是一个很好的方式。

整体思路

实现的整体思路为:结算子系统定义好统一的消息字段,比如用户编号、变动金额、变动时间、变动类型(盈利/亏损/冻结/解冻)、业务来源等相关字段。各业务子系统按照统一的消息格式发送消息,结算子系统统一消费入库。在发起结算前,系统先生成结算数据供运营核对,核对无误后,再与银行发起结算。

可能存在的问题以及解决方案

因为可能存在消息消费阻塞的情况,所以在生成结算文件前,为保证数据的准确性,各业务子系统要提供一个查询数据总条数与总金额的接口作为数据核查的依据,结算子系统根据业务来源调用对应的业务子系统的接口获取核查数据,再与结算子系统中的数据做对比,如果一致则说明业务子系统的数据全部同步过来了,如果不一致,那么则告警需要手工同步。


如果文章对你有帮助的话,给文章点个赞吧。 如果有写得不正确的地方,欢迎指出。 文章首发公众号:会跳舞的机器人

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
支付系统
支付系统是连接消费者、商家(或平台)和金融机构的桥梁,管理支付数据,调用第三方支付平台接口,记录支付信息(对应订单号,支付金额等),金额对账等功能,根据不同公司对于支付业务的定位不同大概有几个阶段:第一阶段:支付作为一个(封闭)的、独立的应用系统,为各系统提供支付功能支持。一般来说,这个系统仅限于为公司内部的业务提供支付支持,并且和业务紧密耦合。第二阶段:支付作为一个开发的系统,为公司内外部系统、各种业务提供支付服务,支付服务本身应该是和具体的业务解耦合。
纯洁的微笑
2018/12/21
2.9K1
支付系统
交易履约之结算平台实践
Tech 导读 京东科技业务在快速发展的同时,产生了众多线上化资金结算的需求。传统的线下资金结算模式有着人力成本高、耗时长、多方沟通协调成本高、结算准确率低等固有缺点,且无法满足“风法财审”对于资金流程的管控要求,在此背景下金道结算平台孕育而生。本文从系统建设的背景、设计细节、已支撑案例及适用业务场景多个层面进行详细阐述。读者可以关注文中所讲的系统实践过程,进而对结算领域系统设计能力提升,具有一定的参考价值。
京东技术
2023/01/05
2.2K0
交易履约之结算平台实践
订单视角看支付
支付是指为清偿商品交换和劳务活动所引起的债权债务,货币债权从付款人向收付人的转移的过程。支付能力是电商产品的核心能力之一,作为订单同学,有必要了解关联域支付的流程以及基本概念,同时支付领域的很多设计思路与资损防控经验对订单域的系统设计也很有借鉴意义。本文将从支付系统的历史、基本概念、系统设计、资损防控与订单与支付交互等方面予以介绍。
得物技术
2024/02/28
3610
订单视角看支付
图解大厂清结算系统设计
账务系统为外部客户和内部管理者提供符合公司内部财务核算的各种会计凭证、账簿与财务报表,一般分为:
JavaEdge
2024/05/26
6130
图解大厂清结算系统设计
美团配送资金安全治理之对账体系建设
背景 随着美团配送业务的飞速发展,单量已经达到千万级别,同时每天产生的资金额已经超过几千万,清结算系统在保证线上服务稳定可靠的前提下,如何系统化的保障资金安全是非常核心且重要的课题。总结起来,配送清结算业务主要有以下几个特点: 1. 场景多:包括专送、众包、快送、跑腿、外部单等多条业务线;订单补贴、活动发放、奖惩、餐损、打赏、保险等多种结算场景;对接外部十多个系统。 2. 链路长:清结算内部经历定价、记账、汇总账单、付款等多个流程。 3. 单量大:目前日单量已达到千万级别。 在这样的业务背景下,我们的系统可
美团技术团队
2018/03/29
2K0
美团配送资金安全治理之对账体系建设
图解:支付系统产品架构
关于产品架构和业务架构的区别,一直存在争议。由于产品架构没有固定的标准,许多产品架构借鉴了TOGAF的4A架构理论中的业务架构方法。如果非要区分技术和产品,可以这样理解:产品主要关注用户使用的功能和内在关系的展示,而技术则更侧重于功能实现和技术栈的支持。
Louis XIV
2025/01/16
1670
图解:支付系统产品架构
存货库存模型升级始末 | 得物技术
公司存在多种物料种类、不同类型的库存和价值管理不一,存货系统目前主要接入包装耗材、商品数据。目的是为了:
用户10346649
2023/03/10
5360
存货库存模型升级始末 | 得物技术
一文带你玩转数据同步方案
停机迁移包括停服迁移与非停服迁移,停服迁移是选择某一时间点流量最少时停止所有服务,并在最短时间内完成数据迁移,此时需要注意停服时间;非停服迁移,即停止所有写数据服务,查询服务并不停止,同样要注意停服时间,防止对生产环境有较大影响。停机迁移完成后,还需要进行数据核对,通常首先要校验迁移前后数据量是否一致,其次还可对迁移前后数据逐条进行校验,还可进行流量回放,保证迁移前后业务表现完全一致。
lyb-geek
2024/04/18
5180
一文带你玩转数据同步方案
支付系统中,账户体系的设计与记账处理
点击上方“芋道源码”,选择“设为星标” 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java 2021 超神之路,很肝~ 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析 作业调度中间件 Elastic-Job 源码解析 分布式事务中间件 TCC-Transaction
芋道源码
2022/03/04
2.2K0
分布式账本技术在支付、清算与结算领域的应用:特征、机遇与挑战
作者:美国联邦储备委员会 编译:巴洁如  腾讯研究院高级研究员   金融科技泛指金融领域的技术创新,近年来受到金融行业广泛关注。其中,分布式账本技术(DLT)被业界普遍认为能够改进支付、清算与结算流程,将对资金转移以及证券、商品和衍生品交易的清结算方式产生重要影响。美国的支付与清结算系统每天处理约6亿笔交易,金额超过12.6万亿美元,这些系统的安全、高效运行,对于维护金融市场平稳运行和金融稳定至关重要,也是美联储的核心监管目标。   考虑到分布式账本技术可能对支付清结算体系带来的变革性影响,美联储成立
腾讯研究院
2018/03/05
2.4K0
CPMI:支付、清算与结算体系中DLT技术应用的分析框架
中国信息通信研究院与腾讯研究院区块链联合课题组 巴洁如 腾讯研究院高级研究员 image.png 国际清算银行(BIS)是由60个国家中央银行组成的国际性金融组织,服务于各国央行的货币和金融市场稳定政策目标,促进国际金融合作,是中央银行的银行。BIS下设支付与市场基础设施委员会(CPMI),通过监测和分析各国支付、清算与结算体系的发展情况,强化各国中央银行在支付体系监管领域的交流与合作,推动支付、清结算系统标准制定等,促进各国支付、清算与结算体系的安全、高效运行,支撑金融和宏观经济稳
腾讯研究院
2018/03/05
1.4K0
CPMI:支付、清算与结算体系中DLT技术应用的分析框架
【支付系统设计从0到1】支付系统账户体系设计(上)
在银行、支付公司以及电商平台的支付系统中,如果不是只做交易转发,而是真正需要做账务处理清结算,一定会涉及到账户体系的设计,一套好的账户体系应该是与业务无关的。账户体系在银行叫核心系统,在支付公司或者电商平台都是虚拟账户体系。在这一篇里我们主要讲讲支付系统的账户体系的产品设计,在下一篇里重点介绍技术设计中需要考虑的问题。
金融民工小曾
2018/09/14
3K0
【支付系统设计从0到1】支付系统账户体系设计(上)
资金视角看支付系统架构设计
在线支付是一个有近 20 年发展历程的行业,其背后系统的技术设计也随着时间、政策、技术的迭代,不断发生着变化。作为一个与钱直接打交道的行业,支付系统的准确性、安全性、稳定性要求都非常高,对程序员而言无疑是一个非常有挑战性的技术领域。 本文从资金的视角提炼了支付系统背后的业务与技术要点,帮助大家理清支付和资金的关系,文中多处架构示意图非常直观,相信能给大家一些全面的技术输入!
腾讯云开发者
2024/12/11
3290
资金视角看支付系统架构设计
支付设计白皮书:支付系统的概念与中国互联网支付清算体系
大家好,我是小六六,三天打鱼,两天晒网,小六六接触进入到支付这个行业也快一年了,从今天开始就开始输出自己的对支付相关的知识的梳理来和大家一起来学习支付,支付是一个非常大并且应用广泛的一个行业,它是万事万物的基础!我觉得任何产品的最后一公里肯定是支付了。有人说:“支付很简单。”,有人说:“支付很难。”如果你对支付感兴趣,建议关注我哦!大家一起学习!
用户9927510
2022/07/29
1.8K0
支付设计白皮书:支付系统的概念与中国互联网支付清算体系
干货 | 多业务线亿级体量,携程是怎么做账务中台的
本文为联合撰文,作者团队负责携程集团支付账务系统、消费金融账务系统、清结算和对账等工作的的开发、设计和运维工作。
携程技术
2021/04/09
1.3K0
腾讯财付通会计核算系统原理与架构
作者:shuangchen,腾讯 FiT 线后台开发工程师 财付通作为业界领先的第三方支付公司,一直致力于为互联网用户和各类企业提供安全便捷的在线支付服务,本文将介绍财付通如何通过会计核算系统来保障财付通亿万资金安全。 1. 背景 1.1. 财付通资金账务系统介绍 1.1.1. 账户体系 财付通作为业界领先的第三方支付公司,一直致力于为互联网用户和各类企业提供安全便捷的在线支付服务。财付通为用户或商户创建支付账户,用于承载用户或商户资金余额以及余额变动情况。财付通资金账务系统中,按账户属性分为现金账户、交易
腾讯技术工程官方号
2022/12/29
3.7K0
腾讯财付通会计核算系统原理与架构
金融科技&大数据产品推荐:金融魔方 ---专业的金融SaaS服务平台
金融科技&大数据产品推荐:金融魔方 ---专业的金融SaaS服务平台
数据猿
2018/04/24
5.4K0
金融科技&大数据产品推荐:金融魔方 ---专业的金融SaaS服务平台
微服务架构中的数据一致性:解决方案与实践| 得物技术
作为互联网公司的研发工程师,微服务的架构思想对于各位读者朋友来说,已经不是陌生东西。我们当中的大多数人,或多或少经历过从单体应用到微服务化的系统拆分和演进过程。我们按照庞大系统的业务功能和特征,将其从一个单体的大应用,逐渐地拆分成很多的子系统的协同配合完成业务功能,甚至拆分后的某些子系统服务,还可能再拆分出来更多的更细颗粒度的子系统服务。拆分后的服务之间,采用PRC调用方式的通信,也就越来越多。随之而来的,跨系统服务之间的数据一致性的问题就会越来越突出了。比如电商系统中营销活动系统的积分和优惠券的发放和扣减,比如电商系统的核心下单核心链路上,首页瀑布流,商详页,下单页等等商品价格全链路一致性等等,支撑这些业务功能的实现,往往可能需要依赖来自N个不同的业务系统服务提供的数据读写服务能力来完成。
得物技术
2023/06/09
6290
微服务架构中的数据一致性:解决方案与实践| 得物技术
大厂咋做多系统数据同步方案的?
业务线与系统越来越多,系统或业务间数据同步需求也越频繁。当前互联网业务系统大多MySQL数据存储与处理方案:
JavaEdge
2024/05/26
1.8K0
大厂咋做多系统数据同步方案的?
一文读懂:完整的支付系统整体架构!
在不同的公司由于接入渠道和应用的差异,对支付产品分类略有不同。综合支付场景和流程,支付产品可以分为如下几类:
Java高级架构
2018/08/16
1.4K0
一文读懂:完整的支付系统整体架构!
推荐阅读
相关推荐
支付系统
更多 >
LV.0
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文