极光iOS SDK架构 及性能优化经验分享 · 极光iOS SDK架构 及性能优化经验分享...
Transcript of 极光iOS SDK架构 及性能优化经验分享 · 极光iOS SDK架构 及性能优化经验分享...
-
www.jiguang.cn
极光iOS SDK架构及性能优化经验分享
2018/3/10
极光研发中心 沈孝星
-
© JIGUANG. Confidential. All Rights Reserved.
目录
2
01关于极光
Part
02SDK架构优化
Part
• 旧架构• 新架构
• 规模• 产品线• 产品图谱
03性能优化
Part
• 长连接• 本地缓存
04APP开发的一些优化建议
Part
• 思路
-
3
Part I - 关于极光
© JIGUANG. Confidential. All Rights Reserved.
• 规模
• 产品线
• 产品图谱
-
© JIGUANG. Confidential. All Rights Reserved. 4
关于极光-规模
6060万款APP
万 110亿 亿 90%25万110亿移动终端
月独立活跃设备
90%覆盖率25万开发者
8
-
© JIGUANG. Confidential. All Rights Reserved.
关于极光-产品线
5
极光开发者服务
极光
数据服务
极光开发者服务:高效稳定SDK、节约开发资源、增强用户体验、提升业务效率。
极光效果通:精准锁定目标用户,量身定制广告投放策略,提高运营效率。
极光数据服务:解析目标客户,洞悉行业趋势,跟踪企业运营情况,帮助企业决策者
提升决策效率。
极光
效果通
-
© JIGUANG. Confidential. All Rights Reserved.
关于极光-产品图谱
6
开发者服务
极光即时通讯 JMessage
极光短信服务JSMS
极光推送JPush
极光社会化组件 JShare
极光统计JAnalytics
600,000 应用
8亿+ 月活
30亿条 消息/日
110亿安装量
数据交换 数据加工数据采集 机器学习数据清洗 数据建模数据储存
极光效果通
极光大数据平台
精 准营 销
iAPP
定制化分析
行业研究
商业地理
金融风控数据产品
-
7
Part II – SDK架构优化• 旧架构
• 新架构
© JIGUANG. Confidential. All Rights Reserved.
-
8© JIGUANG. Confidential. All Rights Reserved.
JPush
Network
Model
Cache
Network
Model
Cache
JMessage
SDK架构优化-旧架构
极光IM极光推送
2016年以前SDK
-
9© JIGUANG. Confidential. All Rights Reserved.
SDK架构优化-旧架构特点
• JPush SDK由单独的类库承载, JMessage业务依附于JPush的底层实现
• JPush实现了如数据通道,任务队列,用户活跃,用户新增等功能
• JMessage拥有JPush的功能
• JMessage和JPush各自独立
• JMessage和JPush不能同时集成
-
10© JIGUANG. Confidential. All Rights Reserved.
Controller
Model
Session
Cache
HTTPS
SDKEntry
Channel
Business
JMessage Controller
JPush
JMessage
A JIGUANGDeveloper !!
-
11© JIGUANG. Confidential. All Rights Reserved.
2016年极光产品结构大变动
极光IM 极光短信 极光统计极光推送 极光分享
-
12© JIGUANG. Confidential. All Rights Reserved.
SDK架构优化-旧架构弊端
• SDK各自独立,不易管理
• 空间占用大
• 需要重复集成,重复注册SDK
• 占用没必要的线程
• 开启多个通道更消耗资源
-
13© JIGUANG. Confidential. All Rights Reserved.
JPush
Model
Network
Cache
JAnalytics
Model
Network
Cache
JShare
Model
Network
Cache
……
-
14© JIGUANG. Confidential. All Rights Reserved.
SDK架构优化-新架构
……
JCore
JPush JAnalytics JMessage …
• JCore负责核心通用的功能,上层SDK各自在JCore之上运行自有业务
• 结构更加清晰,利于扩展• 共享资源,减少重复动作• 针对性做基础优化更加方便
-
15© JIGUANG. Confidential. All Rights Reserved.
JPush JAnalytics JMessage…
Controller
Model Network Cache
JCore Controller
Business
JCore
Business
-
16© JIGUANG. Confidential. All Rights Reserved.
Channel HTTPS
Cache
JCore
Thread
Log Protocol
Register Report
UserCtrl ……
Infrastructure Common business
Business Business Business……JXxx Business
-
17© JIGUANG. Confidential. All Rights Reserved.
SDK架构优化-新架构劣势及存在的问题
• 核心包更新问题
• 测试成本高
• 发布体验不好
• 相对于旧版集成繁琐
• 核心包可能还存在一些性能问题
-
18© JIGUANG. Confidential. All Rights Reserved.
Part III - 性能优化• 长连接
• 本地缓存
-
19© JIGUANG. Confidential. All Rights Reserved.
性能优化-长连接
server
client
sis
最优地址
优先选择可用的
排除不可用的策略
cache缓存加速
上报,根据反馈做调整接入服务
-
20© JIGUANG. Confidential. All Rights Reserved.
性能优化-本地缓存
存数据
Cache
Write to file
存在的弊端:
• 单线程操作,容易堵线程
• 达到一定数据量后,读写耗时较长
• 某种特殊情况下,容易丢数据
取数据
Cache
Read from file
无论数据大小,都这么干,真的好么??
-
21© JIGUANG. Confidential. All Rights Reserved.
性能优化-本地缓存
存数据
Cache
NSUserDefaults
取数据
Cache
NSUserDefaults
A线程
存数据
Cache
Write file
取数据
Cache
Read file
B线程
存数据
Cache
Write file
取数据
Cache
Read file
C线程
…
-
22© JIGUANG. Confidential. All Rights Reserved.
Part IV APP开发的一些优化建议
• 思路
-
23© JIGUANG. Confidential. All Rights Reserved.
APP开发的一些优化建议-思路
• 把握架构设计合理性,多做结构优化分析
• 复杂的逻辑简单化,简单的逻辑更容易实现及维护
• 权衡利弊,不同的场合用适当的方法解决
• 多回头看看自己写的代码,或许能发现一些问题
-
© JIGUANG. Confidential. All Rights Reserved. 24
ENDT H A N K S