罗其平 高可用、弹性动态的金融级移动架构在蚂蚁金服的演进之路

1. ⾼高可⽤用、弹性动态的 ⾦金金融级移动架构在蚂蚁⾦金金服的演进之路路 罗其平(重岳) 蚂蚁⾦金金服-技术专家 www.antgroup.com
3. ⽬目录 • ⽀支付宝在移动端的架构演进与思考 • ⾼高可⽤用、弹性动态的移动⾦金金融架构演进 • 快速构建、复制稳定、⾼高可⽤用移动⾦金金融应⽤用 www.antgroup.com
4. 现在的⽀支付宝 8.7亿 年年活跃⽤用户 5‱ ⽇日闪退率 200+ 服务功能 3+ ⼈人均使⽤用
5. 独⽊木⾈舟 三个时代 战列列舰 航空⺟母舰
6. 三个时代 ⼤大杂烩 ⽹网络 存储 H5 ⽀支付 开发 昨天的代码好好的,今天不不能跑了了… Android ⼜又 65535 了了!!! 改完了了在编译,我先去喝喝杯咖啡~ 代码合并好⼏几天,测试包还没发布 启动太慢,⽤用起来不不流畅 测试
7. 团队协作 ■ 架构分层 ■ 基础能⼒力力下沉 ■ 业务分治 研发效率 ■ 接⼝口与实现分离 ■ ⼆二进制依赖 ■ 微应⽤用模式 三个⽅方向 性能与稳定 ■ 启动治理理 ■ 基础性能 ■ ⽹网络优化
8. 战列列舰时代 业务层 服务层 组件层 框架层 余额宝 账单 花呗 蚂蚁森林林 消息中⼼心 ⼈人脸识别 ⽀支付 应⽤用中⼼心 智能投放 登录 安全 ⽹网络 图⽚片 H5容器器 UI组件 存储 容器器 微应⽤用框架 服务框架 Pipeline mPaaS Mobile platform as a service
9. 业务1 ⻚页⾯面 资源 代码 业务分治 业务2 ⻚页⾯面 资源 代码 业务2 ⻚页⾯面 资源 代码 Bundle 1 Bundle 2 Bundle 3 业务N ⻚页⾯面 资源 代码 Bundle N
10. 接⼝口与实现分离 - Service Service 初始化 实现 接⼝口 服务配置 注册 服务 依赖调⽤用 服务框架 使⽤用⽅方 查找 服务
11. 微应⽤用化 ⻚页⾯面 MicroApp ⻚页⾯面 管理理 路路由⼊入⼝口 应⽤用配置 注册应⽤用ID 与实例例 微应⽤用管理理框架 使⽤用⽅方 应⽤用ID 与参数
12. 性能治理理 统⼀一开放规范,业务⽅方使⽤用统⼀一线程池、存储⼯工具,按需加载 引⼊入 Pipeline 机制,根据业务优先级规定业务初始化时机 利利⽤用 AOP 切⾯面对常⽤用路路径进⾏行行耗时统计,找到性能瓶颈 框架层⾯面 内存,存储,电量量,流量量,流畅度监控 基础指标跟踪优化 向下突破 虚拟机优化,如启动过程中禁⽤用 GC 利利⽤用 Background Fetch 机制实现“秒”起
13. ⼀一体化移动⽹网络服务 ⾃自研MMTP协议 • 0RTT 握⼿手协议 • Protobuf 数据格式 • 链路路复⽤用 • Z-standard 压缩算法 • ⾃自定义字典 HTTP-DNS • 避免 local DNS 缺陷 • 防劫持 • 容灾调度 推拉结合 • 全量量数据拉模式,增量量数据推模式
14. 更更⾼高的要求:打造航⺟母 ■ 业务数量量与类型急速膨胀,固定 集中时间点发布效率太低 ■ 代码量量膨胀,安装包过⼤大 业务 井喷 ■ ⽤用户对体验的诉求形成舆论压⼒力力 ■ ⽤用户投诉需要得到迅速处理理 ■ ⽤用户使⽤用环境复杂度远⾼高于内部 测试环境 ⽤用户 反馈 ⾼高可⽤用 弹性动态 开放 平台 ■ 打造⽣生态,引⼊入三⽅方服务 ■ 第三⽅方服务质量量影响⽀支付宝整体体验 监管 要求 ■ 监管要求时刻在变,要积极拥抱监管
15. 动态研发模式 ■ 代码量量膨胀,安装包太⼤大,iOS代码段 ⼤大⼩小超限不不能过审 ■ 集中点发布,迭代慢 ■ ⽤用户使⽤用的服务数量量有限 ■ ⼀一套代码多端运⾏行行 ■ 按需加载,节省流量量存储,安装包 ⼤大⼩小可控 ■ 统⼀一开放标准 ■ 快速发布,各发各的,不不依赖客户 端发版
16. 打磨Web体验 差量量更更新 计算资源差量量 节省带宽流量量 前后端分离 ⻚页⾯面资源离线化 ⽹网络请求⾛走 Native 通道, 解决⽩白屏、打开速度慢等问题 容错补偿 离线资源⽆无法访问 ⾃自动 fallback 到线上 深度定制组件 ⾃自定义扩展标签 嵌⼊入原⽣生组件 体验更更突出 推拉结合 RPC+SYNC 保证版本更更新率 Android 独⽴立浏览器器内核 解决 Android 机型碎⽚片化 带来的兼容性问题 全⾯面监控 资源加载异常 JS 执⾏行行异常 ⻚页⾯面耗时
17. ⼩小程序 DSL API Component DSL Transformer Render Framework JS Bridge Web Renderer Event Dispatcher View Manager Service Worker Lite Process Preloader Keep Alive ⽀支付宝能⼒力力全⾯面开放 简单易易⽤用,IDE ⽀支持 未来可平滑切换原⽣生渲染
18. ⼩小程序 线上⾼高可⽤用保障体系 快速发布 诊断定位 实时监控 容灾修复
19. 快速发布 智能灰度能⼒力力,多种升级策略略 内部灰度,外部灰度,⼈人群地域、机型⽹网络等多种规则 可供选择 增量量差分离线包更更新能⼒力力 减少数据冗余及设备带宽,在移动端⽹网络条件不不稳定场 景下体现优势
 系统⾼高性能保障 RT < 3ms , QPS 5w/s,触达率 99.99%
20. 监控、诊断 监控指标 • 闪退 • 流畅度 • 电量量 • 流量量 • 不不可⽤用埋点 上报策略略 • 区分流畅度,⾼高 优先级实时上报 • 独⽴立轻量量进程 • 定制化开关及多 种采样上报策略略 上报⽅方式 • ⾃自动上传 • 周期性检查上传 • 诊断指令驱动上 传 诊断分析 • ⽤用户⾏行行为分析 • APP⽇日志分析
21. 业务系统 Native ⾃自动化埋点 业务系统 H5/⼩小程序 前端埋点库 JSBridge 实时监控 埋点SDK 接收埋点参数 获取公共参数 ⽇日志格式化 限流控制 Mmap ⽂文件映射 上传⽇日志 并清理理本地⽂文件 数据应⽤用 监控 分析 计算平台 离线计算 ODPS 搜索 报表 实时计算 JStorm/Galaxy 同步埋点数据 mdap
22. 容灾处理理 故障隔离 预设开关,业务出现故障时⽴立即 推送配置,屏蔽⽌止⾎血 流量量熔断 Hook⽹网络调⽤用,统计请求次数和流量量消耗。 在不不同策略略下达到阈值时,触发异常上报或熔断 ⾃自动恢复 客户端启动阶段监听死锁、闪退与⾸首屏加载异常, 连续启动失败时重置清空应⽤用数据。 动态化能⼒力力修复 Hotpatch 修复原⽣生代码,可监控,可回滚
23. 传统⾦金金融机构 App 存在的问题 ! 启动时间⻓长,经常崩溃 ! 监控处于空⽩白 客户端发⽣生问题⽆无法定位和解决 ! 研发效率低下 团队协作程度不不⾼高 ! 发布灰度缺失 ⽆无法⼩小范围验证产品能⼒力力
24. 研发 客户端框架 移动⽹网关 数据同步 消息推送 H5容器器 ⼩小程序框架 ⽇日志埋点 热修复 助⼒力力⾦金金融APP mPaaS 运维 ⽤用户⾏行行为分析 闪退分析 性能分析 异常告警 ⾃自定义分析 发布 智能灰度 离线包 ■ 快速复制 ■ ⾼高可⽤用,⾼高稳定 ■ ⾼高度⼯工程化,⼤大团队协作开发快
25. 经典案例例:⼴广发银⾏行行 5‱ ⽇日闪退率, 以前统计基本处于空⽩白 1.5s 启动时间, 以前 30s 或更更⻓长 3个⽉月 ⼿手机银⾏行行在发现精彩后 启动改版,复⽤用⼤大量量发现精彩组 件,开发时间⼤大幅减少
28. 谢谢 THANK YOU www.antgroup.com