蚂蚁--- 香港存款月结单百万级重构 系分

一:需求背景

1.1: 背景

随着香港银行极简开户,个人活期多币种,钱包用户引流等业务越来越多;香港银行存款客户数,账户数,交易数,均在今年快速增长,未来也会加快增长。

1.2: 存在的问题

账单中心存储月结单生成目前面临着较大的系统压力,安全隐患以及人工保障成本,其使用的跑批架构已不再适用于当前实际的业务发展阶段,迫切需要对月结单的跑批流程从底层根本的架构上进行重构设计,建设支持百万级客户的全新存款月结单链路。

1.3: 目标

建设一套多站点可复用的,并且香港存款月结单重构链路,将作为这套账单统一调度引擎的首个落地对象。将复用到多个站点。

1.4: 存在问题和挑战

问题:

1: 目前月结单都是按照单笔执行逻辑进行处理,导致每次生成月结单都要和DB进行交互,影响了月结单生产的效率。(性能问题)

2:月结单生成分为数据收集补充,pdf生成,消息通知三个阶段,耦合度极高。(扩展问题)

3:耦合度高导致无法独立修改进行,会DB交互

1.5: 目标

业务目标:(主要实现的功能点和效果)

绝对目标: 

香港存款月结单生成 支持百万级文件量的全部存款月结单品种在 每月初一天24小时内完成;

(个人客户约50个,个人活期月结单和个人存款宝月结单约50万份)

(企业客户数不超过1万个)

目前最近一次月结单生成 是26万份左右,6小时完成;

相对目标:

  香港存款月结单生成提升为原来的10倍,4800/小时 到 4.8万份文件/小时

 

系统目标:

 1: 解耦

  解耦香港存款月结单的各个子品种,使得 个人活期存款月结单,个人存款宝月结单,企业活期存款月结单,都作为各自独立,互不影响,可自定义调度控制的任务;

  解耦存款月结单的三个技术阶段,使得每个子品种存款月结单的一阶段数据准备,二阶段文件生成,三阶段对客通知,都各自独立,互不影响;

  

 2: 优化

  将原来根据存款账户维度生成月结单的模式,优化为按照用户文件维度生成。

  将原来单次调度执行单个账号的模式,优化为单次调度批量执行多个用户文件

  支持月结单指定规则跑批,包括圈人生成,历史月结单重新生成,多维度独立速率控制调度

3:提升月结单跑批性能,尽量减少存款月结单生成过程,对外部系统的RPC调用次数及对DB的调用次数
  1.   外汇实时换算接口,改为接入外汇SDK在月结单生成首次时,把获取到的汇率加载到缓存中,缓存有效期24小时,月结单生成时使用SDK在内存中进行汇率换算即可。
  2.   对客通知发沟通,改为调用沟通平台批量发送接口,每次发送1000个用户即可。
  3.   去除对于存款的调用,改为依赖账单本身数据库中的数据即可
  4.   月结单跑批过程中,对于账单本身数据库sql的增删改查操作,都尽量使用批量sql, 一次操作100个用户
  5.    “于乘上结余的获取,不再月结单跑批过程中实时进行DB查询,改为在月结单账户回流表中新增一个承上结余字段,在月结单跑批前,就用一个单独的定时任务,获取并填入承上结余。月结单跑批时取回流表数据则可天然获得对应账号的承上结余。
  6.   对于交易数量为0的账号,不再sql去查数据库交易回流表,目前有交易的账号大约只占总账号的十分之一。

 

相关推荐

  1. 蚂蚁--- 香港存款重构

    2024-05-05 05:10:02       45 阅读
  2. 并发分布式锁

    2024-05-05 05:10:02       52 阅读
  3. Spark SQL数据批量读写入MySQL

    2024-05-05 05:10:02       62 阅读
  4. redis数据量预热方案

    2024-05-05 05:10:02       47 阅读
  5. mysql数据深页问题

    2024-05-05 05:10:02       42 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-05 05:10:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-05 05:10:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-05 05:10:02       87 阅读
  4. Python语言-面向对象

    2024-05-05 05:10:02       96 阅读

热门阅读

  1. zeekeeper总结详解

    2024-05-05 05:10:02       33 阅读
  2. SQL-索引篇整理

    2024-05-05 05:10:02       32 阅读
  3. 数据库面试常问3

    2024-05-05 05:10:02       26 阅读
  4. HCIP第三节

    2024-05-05 05:10:02       30 阅读
  5. 什么是binutils-arm-linux-gnueabi

    2024-05-05 05:10:02       30 阅读
  6. SSH远程管理

    2024-05-05 05:10:02       31 阅读
  7. 人大金仓数据库技术的发展趋势和前景

    2024-05-05 05:10:02       32 阅读
  8. 算法:最长有效括号子串的长度

    2024-05-05 05:10:02       25 阅读
  9. react和vue在跨平台方面的比较

    2024-05-05 05:10:02       29 阅读
  10. 使用 vscode 远程调试目标板的 c 语言代码

    2024-05-05 05:10:02       29 阅读