付钱拉 石伟 - 从零到一,构建灵活、高性能的金融账务系统

堂巧兰

2017/12/18 发布于 技术 分类

ArchSummit全球架构师峰会是InfoQ中国团队推出的面向高端技术管理者、架构师的技术大会,参会者中超过50%拥有8年以上的工作经验。 ArchSummit秉承“实践第一、案例为主”的原则,展示新技术在行业应用中的最新实践,技术在企业转型中的加速作用,帮助企业技术管理者、CTO、架构师做好技术选型、技术团队组建与管理,并确立技术对于产品和业务的关键作用。

文字内容
1.       从零到一,构建灵活、高性能的金融账务系统   FUQIANLA.NET 石伟   付钱拉高级架构师  
5. 金融核心系统   账户 记账 ⽇日终
6. 场景   钱包 发⼯工资 Happy
7. 整体介绍   How Exactly When Left Where
8. 账户系统的演进   ⽤用户表 ⽤用户号 ⽤用户名 密码 余额 ⽤用户表 ⽤用户号 ⽤用户名 密码 ⽤用户余额表 ⽤用户号 余额
9. 账户系统的演进   ⽤用户表 ⽤用户号 ⽤用户名 密码 客户ID ⽤用户余额表 ⽤用户号 余额 客户表 姓名 ⾝身份证号
10. 账户系统的演进   ⽤用户表 ⽤用户号 ⽤用户名 密码 账户余额表 ⽤用户号A ⽤用户号A 账户1 账户2 余额 余额 客户表 姓名 ⾝身份证号
11. 账户系统的演进   ⽤用户表 ⽤用户号 ⽤用户名 密码 账户余额表 ⽤用户号A ⽤用户号A 账户1 账户2 余额 余额 客户表 姓名 ⾝身份证号 ⽤用户关联表 ⽤用户号 外部⽤用户号
12. 特点一   准确性   一致性   复杂性  
13. 问题   0.01 3W 1000W
14. 解决   Float   BigDecimal   0.01+0.06  =  0.07     4.015*100  =  401.5       0.06999999999999999   401.49999999999994   new  BigDecimal("0.01").add(new  BigDecimal("0.06"))   new  BigDecimal(“4.015”).multiply(new  BigDecimal(“100”))  
15. 问题   上游   4位小数   平台   2位小数   下游  
16. 问题详情   上游系统   +1.4567   1.4567   Ü   +1.4567   1.4567   -2.91          2.9134   平台   1.4567   1.4567   ? 下游系统   1.45   Ü   1.45            2.90  
17. 解决方案   § 分别更新余额、差额   §   定时差额汇总,补充流水   余额拆分   分别更新   余额校验   定时汇总   §   拆分为余额、差额   §   余额+差额>支出金额  
18. 实现方式   +1.4567   +1.4567   上游系统   平台余额   1.4567   Ü 1.4567   1.45   1.45   -2.91   2.9134   2.90   平台差额   下游系统   0.0067   Ü 0.0067   1.45   1.45   0.0134   2.90  
19. 效果   余额   2.90 差额   1 0.013 4 2 余额   +0.01 -2.91 余额   0 差额   0.003 4
20. 特点二   准确性   一致性   复杂性  
21. 要求   强一致性   余额   记账流水  
22. 实现   § 插入变更流水   更新余额   插入流水   §   整体提交/回滚   防重   提交/回滚   §   获取所有要更新的账户   §   做防重处理  
23. 要求   最终一致性   交易状态   记账结果  
24. 实现方式   § 核对记账时间、条数   获取数据   核对   §   收到报警,人工处理   报警   异常处理   §   获取所有的交易数据 、记账数据   §   差异数据报警  
25. 特点三   准确性   一致性   复杂性  
26. 原因   充值   使用场景多   提现   转账   基数大   交易量大   频率高  
27. 问题   A>B B>A 死锁
28. 解决   获取账号   排序   顺序更新   事务提交  
29. 问题   转出账 户A1   转出账 户A2   转入账 户B   转出账 户 A1000 热点账户  
30. 解决   账户拆分   热点账户   同步异步结合   同步变异步   单笔变批量  
31. 规划   可配置   服务化   自动化  
32. 思考  
33. THANKS