有赞移动基础保障体系的建设

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 有赞移动基础保障体系的建设 ⼤大可乐 / 封光
2.
3. 代码评审 监控 排障 打包 发布 合分支
4. 有赞移动日志平台 有赞移动CI/CD
5. 商家反馈APP频繁登出
6. 商家反馈APP频繁登出 3 和客满沟通,还需要APP版本、 设备型号、系统版本等信息辅助 定位问题 2 搜集视频/截图、店铺ID等信 息,最后提⼯工单 1 我最近总是重新登陆 反复沟通 商家 反复沟通 客满 4 搜集APP版本、设备型号、系 统版本信息 开发 5 必现:箭头 偶现:箭头 ?
7. ⽇日志平台 ⽇日志信息 上传⽅方式 搜集基本信息 开发回捞⽇日志 搜集业务信息 商家主动上传
8. ⽇日志平台 移动⽇日志 APP 设备查询 … 业务⽅方 回捞⼊入⼝口 SDK 后端服务 公共服务 ⽇日志库 ⻓长连接库 信息聚合 监控告警平台 设备信息库 回捞管理理 消息平台 筛选⼊入⼝口 ⽇日志管理理 底层服务 … Mysql
9. ⽇日志平台 ⽤用户⽇日志 接⼝口错误 设备信息 移动⽇日志 APP 设备查询 … 业务⽅方 操作轨迹 ⽹网络状态 回捞⼊入⼝口 SDK ⽇日志库 ⻓长连接库 设备信息库 筛选⼊入⼝口 路路由错误 业务异常 后端服务 公共服务 信息聚合 监控告警平台 回捞管理理 消息平台 ⽇日志管理理 底层服务 … Mysql
10. SDK ⽇日志保存策略略 单线程写⼊入 ⽹网络状态监听 消息收发 失败重试等 ⽇日志⽂文件管理理 写⼊入加密 完整性校验 ⽇日志 C++ iOS SDK cmake iOS - bridge iOS .a Android SDK 交叉编译 .so Android - bridge Android
11. ⽇日志级别 1 收到socket消息时上传 2 启动、前后台切换时检查是否要上传 log.d log.i log.w log.e APP 本地 ⽇日志中⼼心
12. 对称密钥 APP 原始⽇日志 加密 对称算法 加密⽇日志 APP⽇日志⽂文件
13. 公钥ID ⽇日志后台 ⽂文件头 公钥 加密密钥 + ⽇日志库版本 rsa ⽣生成对称密钥 对称算法 APP⽇日志⽂文件 时间 设备ID 混淆参数 APP 原始⽇日志 加密 加密⽇日志 内容区
14.
15. 触发回捞时间 收到⽇日志时间
16. ⽇日志级别 log.d log.i APP 本地 电话、短信、企业微 信、邮件等渠道 log.w log.e ⽇日志中⼼心 告警中⼼心 ⾃自定义告警配置
17. 告警配置 阈值告警 环⽐比告警
18. 告警配置 阈值告警 环⽐比告警
19. 告警配置 电话、短信、企业微信、邮件等渠道 阈值告警 环⽐比告警
20. 告警配置 阈值告警 环⽐比告警 告警时间
21. ⽇日志平台 移动⽇日志 APP 设备查询 … 业务⽅方 回捞⼊入⼝口 SDK 后端服务 公共服务 ⽇日志库 ⻓长连接库 信息聚合 监控告警平台 设备信息库 回捞管理理 消息平台 筛选⼊入⼝口 ⽇日志管理理 底层服务 … Mysql
22. 信息聚合
23. 快速定位
24. 快速定位
25. ⽇日志平台 移动⽇日志 APP 设备查询 … 业务⽅方 回捞⼊入⼝口 SDK 后端服务 公共服务 ⽇日志库 ⻓长连接库 信息聚合 监控告警平台 设备信息库 回捞管理理 消息平台 筛选⼊入⼝口 ⽇日志管理理 底层服务 … Mysql
26.
27. 上传⽅方式 ⾃自建的 socket通道 APP APP⽇日志 ⻓长连接 ⽇日志后台 其他⽂文件 备份 压缩 ⽇日志中⼼心
28.
29. 上传⽅方式 APP 数据库⽂文件、 配置⽂文件等 APP⽇日志 ⻓长连接 ⽇日志后台 其他⽂文件 备份 压缩 ⽇日志中⼼心
30. 消息格式
31. 商家反馈APP频繁登出 少量量沟通 商家 包含店铺ID、⽤用户ID、APP版 本、系统版本、设备型号、最近 使⽤用时间等 单次沟通 客满 开发 根据⼿手机号或店铺名等信息 检索商家设备 客满⼯工作台 ⽇日志信息表
32. 商家反馈APP频繁登出 服务 上传⽇日志 包括商家操作轨迹、⽹网络 请求等等,还原现场 少量量沟通 商家 单次沟通 开发 客满 ⽇日志回捞
33. 有赞移动日志平台 有赞移动CI/CD
34. 有赞移动 CI/CD • 有赞移动 CI/CD 过去式 • 有赞移动持续集成系统 - MBD • 有赞移动持续部署系统 - Apub
35. 有赞移动 CI/CD 过去式 对于测试、运营等⻆角⾊色⻔门槛较⾼高 打包机任务繁重,经常内存爆表 产物管理理混乱
36. 有赞移动 CI/CD • 有赞移动 CI/CD 过去式 • 有赞移动持续集成系统 - MBD (Mobile Build) • 有赞移动持续部署系统 - Apub
37. 前端 构建 集成 任务 后端服务 任务调度系统 任务 统计 热修复 ⽇日志 任务 ⽇日志存储系统 ⽇日志 构建管理理 结果 Gitlab Runner 集群 持续集成系统 - MBD ……
38. 前端 构建 集成 任务 后端服务 任务调度系统 任务 统计 热修复 ⽇日志 任务 ⽇日志存储系统 ⽇日志 构建管理理 结果 Gitlab Runner 集群 持续集成系统 - MBD ……
39. 热修复 正式构建 测试构建 测试构建 测试构建 测试构建
40.
41.
42.
43. 创建集成 测试构建 正式构建 分发平台 测试包分发 测试构建 正式包分发 测试构建 测试构建 热修复分发 热修复
44. 前端 构建 集成 任务 后端服务 任务调度系统 任务 统计 热修复 ⽇日志 任务 ⽇日志存储系统 ⽇日志 构建管理理 结果 Gitlab Runner 集群 持续集成系统 - MBD ……
45. 前端 构建 集成 任务 后端服务 任务调度系统 任务 统计 热修复 ⽇日志 任务 ⽇日志存储系统 ⽇日志 构建管理理 结果 Gitlab Runner 集群 持续集成系统 - MBD ……
46. GitLab Runner what? • 脚本解释器器,通过 Http 与上层 CI 通信 why? • 开源 • ⽀支持 Docker、BashShell、VirtualBox • Go 编写,跨平台 • ⼆二进制⽂文件,⽆无外部依赖,部署⽅方便便
47. 前端 集成 构建 热修复 任务 后端服务 任务调度系统 任务 统计 ⽇日志 任务 ⽇日志存储系统 ⽇日志 构建管理理 结果 Gitlab Runner 集群 持续集成系统 - MBD ……
48. 为什什么要任务调度? 任务队列列 Runner1 Task Runner2 Task Task Task Task Task Task Runner3 有些运⾏行行了了很多任务 有些没有运⾏行行任务
49. Runner 动态评分 任务队列列 Runner1 Task Task Task Runner2 Task Runner3 Task Task Task 初始分 100 任务数量量:3 Cpu 占有率:90% 初始分 90 任务数量量:1 Cpu 占有率:80% 初始分 100 任务数量量:0 Cpu 占有率:10%
50. 分数 = 初始分 - 任务数 * 30 - CPU 占有率 * 100 任务队列列 Runner1 Task Task Task Runner2 Task Runner3 Task Task Task 初始分 100 任务数量量:3 Cpu 占有率:90% 初始分 90 任务数量量:1 Cpu 占有率:80% 初始分 100 任务数量量:0 Cpu 占有率:10%
51. 分数 = 初始分 - 任务数 * 30 - CPU 占有率 * 100 任务队列列 Runner1 Task Task Task Runner2 Task Runner3 Task Task Task 初始分 100 任务数量量:3 Cpu 占有率:90% -80 初始分 90 任务数量量:1 Cpu 占有率:80% -20 初始分 100 任务数量量:0 Cpu 占有率:10% 90
52. 前端 集成 构建 热修复 统计 ⽇日志 组件并发构建会有问题吗? 任务 后端服务 任务 任务调度系统 ⽇日志存储系统 结果 ⽇日志 任务 构建管理理 Gitlab Runner 集群 Runner Task Task Task Task ……
53. 组件隔离 代码区 • 同⼀一组件并发构建的时候,会使⽤用不不同的⼯工作区 缓存区
54. 创建集成 测试构建 正式构建 分发平台 测试包分发 测试构建 正式包分发 测试构建 测试构建 热修复分发 热修复
55. 有赞移动 CI/CD • 有赞移动 CI/CD 过去式 • 有赞移动持续集成系统 - MBD • 有赞移动持续部署系统 - Apub (App Publish) 分发平台 测试包分发 正式包分发 热修复分发
56. .apk .patch Apub MBD .ipa 符号表⽂文件
57. 测试包分发 Apub 分发系统 正式包分发
58. 测试包列列表 PC 测试包分发 App 测试包详情⻚页
59. 包详情⻚页 PC
60. 包分业务线管理理 PC
61. PC 每个 App 的所有包
62. App
63. 测试包分发 MBD Apub 正式包分发
64. 灰度 条件 正式包分发 全量量
65. 灰度 条件 正式包分发 全量量
66. DeviceToken hashcode ( devicetoken ) 灰度 30% hashcode % 100 70%
67. 灰度 条件 正式包分发 全量量
68. 客户端上传条件 服务端 启动 JS 引擎,注⼊入变量量 area area: “杭州” scriptEngine.put(area, “杭州”) 条件 发版⼈人写好条件表达式 执⾏行行表达式 scriptEngine.eval (…….) true false
69.
70.
71. 测试包分发 业务异常 ⽇日志平台 消息格式 MBD 条件下发 线上告警 Gitlab-Runner App集成⽣生命周期 设备信息聚合 Q & A Apub Runner 调度策略略 开发回捞⽇日志 Runner 组件隔离 ⽇日志加密 ⽇日志C++库 ⽇日志分级 灰度下发
72.

首页 - Wiki
Copyright © 2011-2024 iteam. Current version is 2.125.0. UTC+08:00, 2024-05-07 11:24
浙ICP备14020137号-1 $访客地图$