前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微服务架构下的结算系统设计

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

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

一、背景

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

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

二、问题与挑战

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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、背景
  • 二、问题与挑战
    • 2.1 数据同步并保证数据的准确性
      • 2.2 满足灵活应对多变的业务场景
        • 2.3 业务子系统能快速接入
        • 三、解决方案
          • 3.1 数据同步方案
            • 1)数据库同步
            • 2)数据文件同步
            • 3)远程接口获取
            • 4)MQ数据同步
            • 5)手工同步
        • 四、实施方案
          • 数据同步方案
            • 整体思路
              • 可能存在的问题以及解决方案
              相关产品与服务
              云数据库 SQL Server
              腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档