极光iOS SDK架构 及性能优化经验分享 · 极光iOS SDK架构 及性能优化经验分享...

24
www.jiguang.cn 极光iOS SDK架构 及性能优化经验分享 2018/3/10 极光研发中心 沈孝星

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