全球架构师峰会 Arch Summit 2018

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

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

相关幻灯片