Professional Documents
Culture Documents
快速发展的挑战和实战
钉速
个人简介
• 钉速 阿里巴巴钉钉业务架构师
– 2015~现在 : 负责钉钉客户端跨平台架构,整体架构和
性能优化
– 2013~2015:猎豹移动 手机猎豹浏览器/Chromium
– 2010~2013:创新工场 移动游戏引擎,MMORPG
大纲
• 钉钉发展历程和产品架构
• 平台级企业应用的系统架构要求
• 我们遇到的技术挑战 …
系统架构——高可靠/高可用
• 防单点
– 多机房容灾、DB同步主备切换
• 防攻击、降级能力
– 流控、过滤
• 保障消息一致性
– 消息对账
• 微应用白屏
– WebView上实现监控
• 系统监控
– 全链路监控
系统架构——高性能
• 客户端省电
– 智能心跳
• 离线包更新
– 差量更新
• 微应用加速
– HTTP Over LWP
• 断线重连
– 协议层重连,服务端使用上次session
系统架构——安全
• 更高的网络传输加密强度
– TLS1.3安全通信协议
• 放心的聊天数据安全
– 第三方加密
• 本地数据防破解
– 客户端数据库加密
• 开放平台接口安全
– JS API 鉴权/白名单
钉钉系统架构
LW S W SS LW S
RPC
RPC
Receiver Sync
push
syncinfo
P TS
Tail
APN
XPN
MySQL
MySQL Push
M aster GCM
S lave
钉钉企业万人群
钉钉企业万人群——技术挑战
• 分而治之
– 拆分成多个千人群分解下发, 多个小而密的QPS
• 降级服务 & 消息管控
– 群管理消息、已读未读降级
– 消息发送频度限制 : 1分钟限定发送条数
• 用户登录推送消息阈值
– 下行消息量超过阈值则采用客户端主动拉取
钉钉企业万人群——解决方案
• @人 先加载部分人员,支持分页加载,搜索
• 群成员列表分页显示,群成员搜索
• 客户端IM全链路消息处理优化
• App启动优化
性能优化——App启动优化
App启动优化——完整的生命周期
A ctivity
A pp S plash onC reate A pp
S tart onC reate end S how
A B C D E
A pp A ctivity
First onD raw
onC reate onC reate
begin
App启动优化—— 启动模块
App启动优化—— 客户端大数据压测
• 首屏大数据构造
– 会话个数构造5000+
– 消息数50,000+ 条记录
• Ding消息大数据构造
– 5000+
• 企业组织大数据构造
– 500+
• 手机联系人
– 1000+
App启动优化—— 性能优化
• 首屏会话拉取(3w记录,17s——500ms)
– 优化SQL添加索引
– SQL 语句limit 限定个数
• 企业卡片Update时缺少pKey索引(5000条记录,
1s——0ms)
– 升级加入索引
• 联系人、Ding、我的设置保障切换流程
– TAB ViewController 读取数据主线程——异步线程
• 搜索引擎索引build
– 启动结束后异步线程
App启动优化—— 优化效果
重度用户启动提升100%:10s VS <5s
整体提升30+%:2.0s VS 1.4s
App启动优化—— puzzled
App启动第一条SQL
select * from sqlite_master
耗时2s+?
App启动优化—— 找到真相
• 消息表设计采用分表
– SQLite执行第一条语句之前会装载表结构,表
越多,首次执行越久
• 优化表设计、本地表过期汰换
App启动优化—— 闭环 & 软着陆
压测
瓶颈优化
基线回归
每日报表 线上灰度
线上监控
分析
钉钉未来挑战
• 多设备消息漫游:同时支持手机,pad,pc
• 国际化:多语言,支持国际定位POI,支持国际
电话,支持GCM消息推送
• 安全可靠:核心应用99.99%可用性
• SaaS平台:提供应用市场平台,为企业个性化定
制微应用