You are on page 1of 24

钉钉-新一代企业沟通协同平台

快速发展的挑战和实战

钉速
个人简介

• 钉速 阿里巴巴钉钉业务架构师
– 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

Process Tair OTS

APN

XPN
MySQL
MySQL Push
M aster GCM
S lave
钉钉企业万人群
钉钉企业万人群——技术挑战

千人群——> 万人群: 系统10倍以上的压力


钉钉企业万人群——解决方案

• 分而治之
– 拆分成多个千人群分解下发, 多个小而密的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平台:提供应用市场平台,为企业个性化定
制微应用

You might also like