天鹅到家支付系统高可用架构实践
如果无法正常显示,请先停止浏览器的去广告插件。
1.
2. 天鹅到家支付系统高可用架构实践
毕仁杰
3. 自我介绍
• 天鹅到家 架构师|资金营销团队负责人
• 2016年加入天鹅到家
• 负责天鹅到家支付清结算体系搭建
• 负责会员卡&优惠券等营销体系的搭建
• 近10年后端系统研发经验
• HybridAPP、ReactNative等移动端跨平台方案
4. 目录
目 录
CONTENTS
1 业务背景
2 支付系统架构设计
3 支付系统可用性保证
4 支付系统正确性保证
5 面临的挑战和总结
5. 业务背景
• 保洁
按单结算,抽佣,实时清算,奖惩,每月10号发工资,自主提现
• 保姆
按单结算,商家信息服务费,补贴,实时清算,无冻结期,自主提现
• 月嫂
按单结算,客户信息服务费,实时清算,无冻结期,自主提现
• 平台
按单结算,抽佣,返佣,有冻结期,机构/个人自主提现
• 培训
支付&退款,不涉及商家清结算
6. 技术架构
7. 目录
目 录
CONTENTS
1 业务背景
2 支付系统架构设计
3 支付系统可用性保证
4 支付系统正确性保证
5 面临的挑战和总结
8. 业务架构
9. 支付清结算架构
Ø 措施
1、幂等
2、延时消息队列
3、分布式锁
4、TCC
5、多版本并发控制
(MVCC)
最终一致性
自修复能力
10. 通用HTML5收银台
11. 目录
目 录
CONTENTS
1 业务背景
2 支付系统架构设计
3 支付系统可用性保证
4 支付系统正确性保证
5 面临的挑战和总结
12. 可用性
墨菲定律:“会出错的事总会出错”
13. 可用性保证
实时监控机制
限流熔断防雪崩
资源隔离
高性能,提高吞吐量
安全机制
14. 限流熔断防雪崩
• 串行环节过多,交易链路过长,请求快速堆积
• 区分关键节点,非关键节点熔断机制
• 合理设置超时时间
• 系统容量预估,做到心中有数
15. 高性能
• 压测
TPS、平均耗时、TP999
16. 实时监控
• 服务监控
• 接口监控
• 数据库慢查询监控
17. 资源隔离
• 进程隔离
收银台、支付、提现、清算、结算、账户等独立部署
• 线程隔离
线程池隔离,定时任务隔离
• 数据库隔离
支付数据数据库按业务线维度拆分,水平垂直拆分
• 热点隔离
服务分组,热点流量独立部署
18. 安全机制
• 接口签名,内网调用
收银台、支付、退款、提现等加签
• 黑白名单
IP黑白名单、用户黑白名单、商家黑白名单等
• 风控机制
信用卡套现、恶意下单、刷单等
• 系统可审计
权限控制、系统日志、操作记录、系统留痕
19. 目录
目 录
CONTENTS
1 业务背景
2 支付系统架构设计
3 支付系统可用性保证
4 支付系统正确性保证
5 面临的挑战和总结
20. 正确性保证
21. 对账系统
Ø 对账模式
1、日切对账
2、准实时对账
22. 差错处理
对平
两方均有数据且对比维度值一致
单边
一方有数据另一方没有找到数据
错账
两方均有数据但是对比维度值不一致
23. 差错告警
Ø 措施
1、完善的系统差错处理能力
2、规范的差错处理流程
24. 目录
目 录
CONTENTS
1 业务背景
2 支付系统架构设计
3 支付系统可用性保证
4 支付系统正确性保证
5 面临的挑战和总结
25. 面临的挑战
资金安全底线
如何避免资损,守住红线
01
02 故障快速恢复能力
03 业务复杂度
面临的挑战
系统历史包袱
业务整合,系统历史包袱重
04
完善的预警和监控机制,快速定
位和解决问题,故障演练
多主体,业务模式快速迭代
26. 经验总结
• 出账入账原则
收款交易原则:先收款后记账
出款交易原则:先记账后出款
• 得到明确结果再执行出款操作,警惕假失败
提现失败返还、退款等场景
• 幂等
业务校验、分布式锁(粒度)、乐观锁、UNIQUE KEY唯一索引
• 数据库事务
强事务使用不当导致回滚后无业务记录
• 对账
事后对账,最后一道防线
27.