SlideShare a Scribd company logo
1 of 42
云应用 | 2016.01.20 1
大鱼架构演进
云应用
2016.01.20
云应用 | 2016.01.20 2
1. Demo阶段
2. PGC: 热点、话题
3. PGC: 热点、群聊
4. PGC: 热点、万人群聊
5. UGC: 热点、万人群聊、弱社交
6. UGC: 热点、社交分享 -> LBS
7. 总结
目录
云应用 | 2016.01.20 3
• RxJava: 多线程, 线程池, 任务管理, 异常管理. 禁
止使用AsyncTask, Thread等Android/Java原生
线程相关以及Android Annotation这种注解型框架
• Retrofit: 网络请求
• Picasso: 图片加载与缓存
• Okhttp: 网络通信
• 数据持久化: Android原生
• UI: RecyclerView, support-v21, Toolbar,
SnackBar等Android Lollipop预览版相关控件
Demo阶段
Android客户端架构[0.1, 0.3)
云应用 | 2016.01.20 4
• 白色: 不需要或者需要很少的开发与维护
• 绿色: 需要日常开发与维护
• 蓝色: 需要超越日常工作量的投入, 存在
可控的风险
• 橙色: 需要预研与验证的技术, 存在不可
预知的风险
Demo阶段
Android客户端架构[0.1.0, 0.3)
云应用 | 2016.01.20 5
• 运营管理平台
• 服务器业务接口
• MySql数据持久化
• 一台开发主机
Demo阶段
服务器架构
云应用 | 2016.01.20 6
• Demo版本, 修了两天BUG, 改了几次UI, 就这么上了
• 额外: 预研直播, 群聊相关技术
PGC: 热点、话题
云应用 | 2016.01.20 7云应用 | 2016.01.20 7
PGC: 热点、群聊
差异化: 给用户游戏一
样的用户体验
云应用 | 2016.01.20 8
• 实时网络游戏
• 高可用, 高并发, 优秀的
可扩展性
参考的架构
网易Pomelo架构
https://github.com/NetEase/pomelo
云应用 | 2016.01.20 9
• 引入 Socket.io 框架
• 因为服务器开发是Java工程师, 所以
我们选择了Socket.io + Netty 的方
案
• Socket.io 对移动端的支持, 比当时
的 Pomelo 架构鲁棒性高太多, 现在
的 Pomelo 内部也改用 Socket.io
了
• Socket.io长连接单机可以达到百万
级别, 函数式API
PGC: 热点、群聊
服务器架构 – 陈明
云应用 | 2016.01.20 10
• Socket.io.RxJava: 将 Socket.io 的
函数式接口, 以及大鱼的相关业务接口
改成RxJava Observable式
• 将Retrofit的网络异常, 与 Socket.io
的网络异常全部封装到同一个模块, 代
理给RxJava
• SharePrefer: 对SharedPreference
的链式封装, 简化SharedPreference
使用, 源代码GIST点我
PGC: 热点、群聊
Android客户端架构[0.3.0, 0.6)
云应用 | 2016.01.20 11
PGC: 热点、群聊
Android客户端架构[0.3.0, 0.6) 设备唯一ID方案, Google与Apple的推荐方案
云应用 | 2016.01.20 12
PGC: 热点、群聊
Android客户端架构[0.3.0, 0.6) 设备唯一ID方案, 我们的MUID方案
云应用 | 2016.01.20 13
• 视差动画 - Parallax effects
• View Property Animation
• Layout Transition, Activity Transition,
Fragment Transition
• Shared Element Animation
• View Animation
• Canvas, Bitmap!
PGC: 热点、群聊
Android客户端架构[0.3.0, 0.6) 动画相关
• 游戏引擎 – Game engines
• Libgdx
• Cocos2d-x
• Unity
• …
做了十几个动画效果, 改了几个版本UI
云应用 | 2016.01.20 14云应用 | 2016.01.20 14
广播风暴: 同一个话题人数达到1250的时候,
同时发一条消息, 机房网卡就爆了(50MB)
云应用 | 2016.01.20 15
• n² 流量
• 解决方案: 参考网络游戏, 服务器分区
– 连接服务器物理分区, 聊天房间业务逻辑分区
– 精简json结构, 或者更换为protobuf
– 控制广播范围, 从全广播改成声波广播
– 控制用户发送消息频率
– 控制用户接收消息频率
– 图片url使用短code, 由客户端拼接
PGC: 热点、群聊
广播风暴
Connector
Connector
Connectormaster
Connector
消息队列
消息队列
消息队列
消息队列
云应用 | 2016.01.20 16云应用 | 2016.01.20 16
最终方案: 魅族Push通道protobuf重构版本
云应用 | 2016.01.20 17
• Fresco: 比Picasso更优秀的性
能, 更好的扩展性, 对动画的渲
染效率远高于Android原生控件
• Nebula.dayu: 基于nebula, 对
大鱼业务的封装
• Nebula.dayu.RxJava: 将
Nebula与大鱼业务改造成
RxJava式管理, 附加事务推送等
nebula暂时缺失的模块
• UI又改了
PGC: 热点、万人群聊
Android客户端架构[0.6.0, 0.8)
云应用 | 2016.01.20 18
• Push通道: 独立的, 只针对大鱼业务
• 因为原版还在测试阶段, 并没有target
第三方应用
PGC: 热点、万人群聊
服务器架构
云应用 | 2016.01.20 19
• 声波控制消息广播范围和数量
PGC: 热点、万人群聊
服务器架构 声波控制
云应用 | 2016.01.20 20
• 分组实现
PGC: 热点、万人群聊
服务器架构 声波架构 – By 陈金平
Socket服务群,消息收集分发,订阅 Http服务群,非消息业务,图片
Http服
务,运
营和管
理平
台,以
及监控
平台
消息生成服务 消息下发服务
赞/踩,投票站
队服务
Redis
Mysql规定数据
库
归档服务
FastDFS
用户
消息路由中心
(整理消息)
发言
Location服务集群(用户订阅路由中心)
发言
通知逻辑组下发
逐个发送消息
订阅,投票,站队
主题,消息管理等
鉴权和用户管
理服务
大组消息队列A
小房间
A1
小房间
A2
…
…
Slave
云应用 | 2016.01.20 21
• 分组实现
PGC: 热点、万人群聊
服务器架构 声波架构 – By 陈金平
大组消息队列A
小房间
A1
小房间
A2
…
…
Slave
消息接收服务集群 消息分发服务集群
消息路由中心
Redis集群
组临时消息队列
精选时消息队列归档用消息队列
用户群
发消息
存入数据库
转发路由中心
定时分组通知集群
收消息
云应用 | 2016.01.20 22
• 还是解决不了这种问题:
– 用户B与A, C能聊天互动
– 用户A与C却互相看不到
• 但是却将一个房间爆满, 另一个房间只有
几个人的寂寞感, 平均分配到了所有人
PGC: 热点、万人群聊
服务器架构 声波架构
用户A 用户C用户B
云应用 | 2016.01.20 23云应用 | 2016.01.20 23
并行开发流程
云应用 | 2016.01.20 24
云应用 | 2016.01.20 25云应用 | 2016.01.20 25
Apk安全相关: 对于一个应用, 外发到应用市
场, 首要保证安全, 其次是渠道分发推广
云应用 | 2016.01.20 26
• 添加Apk自我保护方案
• 使用Gradle Flavor来定制渠道打包
• RxJava作为整体架构的基础考虑
• Https签名从Java层移动到C层
• 敏感数据使用Gradle加密, C层解密
• 随着项目的变大, SQLite简直就是
业界毒瘤,
• 不, 一切Android偏Framework的
API都是业界毒瘤
• UI又改了, 2次
PGC: 热点、万人群聊、弱社交
Android客户端架构[1.0.0, 2.0.1]
云应用 | 2016.01.20 27
• 外部工具Gradle加密数据, 或者流程
• Gradle将APK的release签名加密到NDK层
• Gradle编译过程中将编译的Dex代码信息加密到
NDK层
• Android NDK层反向校验APK的Dex代码信息
• Android NDK层反向校验APK的签名
• Android NDK层解密次数据, 或解密流程
PGC: 热点、万人群聊、弱社交
Android客户端架构[1.0.0, 2.0.1] Apk自我保护方案
云应用 | 2016.01.20 28
• 比如Http签名加密整体流程
PGC: 热点、万人群聊、弱社交
Android客户端架构[1.0.0, 2.0.1] Apk自我保护方案
云应用 | 2016.01.20 29
• 加密解密
PGC: 热点、万人群聊、弱社交
Android客户端架构[1.0.0, 2.0.1] Apk自我保护方案
Android Apk NDK层解密
Gradle 编译过程加密
云应用 | 2016.01.20 30
• 自签名校验
PGC: 热点、万人群聊、弱社交
Android客户端架构[1.0.0, 2.0.1] Apk自我保护方案
云应用 | 2016.01.20 31
• Dex代码校验
PGC: 热点、万人群聊、弱社交
Android客户端架构[1.0.0, 2.0.1] Apk自我保护方案
云应用 | 2016.01.20 32
• 二次打包流程
• 早期互联网Android应用,
Ant编译的时候, 二次打包
Apk来加密, 原理与此一致
PGC: 热点、万人群聊、弱社交
Android客户端架构[1.0.0, 2.0.1] Apk自我保护方案
云应用 | 2016.01.20 33
• 第二次优化版本, 修改
Gradle编译链, 简化成一
次打包
PGC: 热点、万人群聊、弱社交
Android客户端架构[1.0.0, 2.0.1] Apk自我保护方案
云应用 | 2016.01.20 34
• 自我保护方案从大鱼2.0.0之后, 脱离大鱼, 单独维护, 可供其他应用使用, 音乐, 视频, 智能生活等多个
APP已经用到
项目地址: http://gitlab.meizu.com/AppArch/security
• 因为集成比较复杂, 后来又做了个gradle插件, 来帮助应用傻瓜式集成此方案
项目地址: http://gitlab.meizu.com/Cloud/securityplugin
PGC: 热点、万人群聊、弱社交
Android客户端架构[1.0.0, 2.0.1] Apk自我保护方案
云应用 | 2016.01.20 35
• 使用Gradle Flavor来定义渠道Flavor
• 借助Gradle resValue, buildConfigField等接口, 将渠道信息注入到Apk的代码与资源中, 以供数据统计
• 修改Gradle Android编译链, 在assemble的时候, 通过时间戳+机编码将apk以及混淆文件mappings绑
定到一起, 归档起来, 以供retrace
• 此归档流程已经集成至魅族Gradle插件2.x版本, 由于服务器不支持x.y.z.CI_CODE 这种版本名, 所以全
功能版本为 dev.2.3
项目地址: http://cloud.meizu.com/dayu/meizugradleplugin/tree/dev_23
PGC: 热点、万人群聊、弱社交
Android客户端架构[1.0.0, 2.0.1] 渠道分发
云应用 | 2016.01.20 36云应用 | 2016.01.20 36
2.0版本之后, 群聊被砍
云应用 | 2016.01.20 37
• Https全REST full化, 签名
改为Oauth头签名, hmac-
sha256加密算法
• Retrofit升级为2.0-beta3
最新架构
• 全面废弃了渣渣SQLite, 改
用realm数据库并加密, 开
发效率提升了无数倍
• JVM层添加Kotlin语言
• UI又改了
PGC: 热点、万人群聊、社交分享
Android客户端架构3.0.0
云应用 | 2016.01.20 38
• RxJava: 刚开始很难用, 习惯了超好用, 可以大幅度提升多线程, 任务组合, 任务管理等开发效率
• Retrofit: 刚开始很好用, 习惯了更好用, 可以大幅度提升网络接口开发效率
• Realm: 刚开始很难用, 习惯了超好用, 可以大幅度提升数据库开发效率
• Picasso -> Fresco: 难用一点点, 但性能提升
• Kotlin: 刚开始很难用, 习惯了, 越用越好用, 可以大幅度提升敲代码的效率
• 但总体而言: 开发使用了过多不稳定的beta, 甚至experimental技术
总结
Android长期技术选用
云应用 | 2016.01.20 39
• 技术选用: 尽量选择”绿色”, 甚至”白色”的技术, “蓝色”的技术一个阶段最多选一个
• 三方SDK: 各种auth2.0登录SDK, 各种支付SDK, 各种github开源库
• 渠道分发: Gradle必须要懂
• 数据统计: 海外Flurry, 国内友盟
• 推送平台: 极光, 或者parse这样的MBaas
• 灰度测试, 云测
• Android安全: 壳固化技术, 二次打包技术, 或者像大鱼一样的apk保护方案
• 免服务器开发(Baas, MBaas): 海外parse, 国内LeanCloud, bmob等一堆抄袭的
• 总而言之, 所有以上都是资源, 我们要做的是按startup挑选组合一切可以使用的资源
总结
Startup阶段, 移动开发你会遇到的东西
云应用 | 2016.01.20 40
• Ideas -> Validate: 产品idea的验证, 此过程在UI设计之前, 第三方validate公司有 Unbounce
• Plan -> Visualize: 只有通过validate的idea, 才能进入原型图设计, 项目计划阶段
• Project Management: 进入项目管理阶段
• Website: 开发稳步进行的时候, 网站才开始建设, 一般5美刀就可以买到
• SEO: 搜索优化, 与渠道分发准备推进项目上线
• Payment & Legal: 支付接入, 账号系统, 以及法律规避
• Analytic: 产品正常运转了之后, 数据分析开始介入, 用数据来帮助产品提升
• 其实Analytic约等于 Validate, 形成一个子循环, 数据分析是用来自我Validate然后改进下一个产品需求
与迭代的
总结
Startup项目正确的流程
云应用 | 2016.01.20 41
• 网易网络游戏框架: https://github.com/NetEase/pomelo
• Google惟一ID方案: http://developer.android.com/training/articles/user-data-ids.html
• Apk自我保护方案: http://gitlab.meizu.com/AppArch/security/tree/master
• Apk自我保护方案插件: http://gitlab.meizu.com/Cloud/securityplugin/tree/master
• 魅族Gradle插件: http://cloud.meizu.com/dayu/meizugradleplugin
– dev_23分支中包含有apk及mappings归档插件代码
• 推特Oauth加密: https://dev.twitter.com/oauth/overview/creating-signatures
• Startup 15个工具: http://creately.com/blog/diagrams/15-tools-to-launch-your-startup/?utm_content=bu
可供参考的资源
云应用 | 2016.01.20 42
谢谢
云应用 – 刘俊

More Related Content

What's hot

2016-07-12 Introduction to Big Data Platform Security
2016-07-12 Introduction to Big Data Platform Security2016-07-12 Introduction to Big Data Platform Security
2016-07-12 Introduction to Big Data Platform SecurityJazz Yao-Tsung Wang
 
十二項架構設計原則
十二項架構設計原則十二項架構設計原則
十二項架構設計原則Philip Zheng
 
美团技术沙龙04 美团下一代分布式存储系统
美团技术沙龙04   美团下一代分布式存储系统美团技术沙龙04   美团下一代分布式存储系统
美团技术沙龙04 美团下一代分布式存储系统美团点评技术团队
 
阿里巴巴运维自动化的探索与规划
阿里巴巴运维自动化的探索与规划阿里巴巴运维自动化的探索与规划
阿里巴巴运维自动化的探索与规划mysqlops
 
Comboware ComboStack 202105
Comboware ComboStack 202105Comboware ComboStack 202105
Comboware ComboStack 202105Elroy Peng
 
高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕ideawu
 
20220224台中演講k8s
20220224台中演講k8s20220224台中演講k8s
20220224台中演講k8schabateryuhlin
 
唯品会大数据实践 Sacc pub
唯品会大数据实践 Sacc pub唯品会大数据实践 Sacc pub
唯品会大数据实践 Sacc pubChao Zhu
 
初探 Elastic Observability 的實踐方法
初探 Elastic Observability 的實踐方法初探 Elastic Observability 的實踐方法
初探 Elastic Observability 的實踐方法Joe Wu
 
豆瓣数据架构实践
豆瓣数据架构实践豆瓣数据架构实践
豆瓣数据架构实践Xupeng Yun
 
FIT2CLOUD:云管理及DevOps协作平台
FIT2CLOUD:云管理及DevOps协作平台FIT2CLOUD:云管理及DevOps协作平台
FIT2CLOUD:云管理及DevOps协作平台Fit2Cloud
 
Huangjing renren
Huangjing renrenHuangjing renren
Huangjing renrend0nn9n
 
Track A-3 Enterprise Data Lake in Action - 搭建「活」的企業 Big Data 生態架構
Track A-3 Enterprise Data Lake in Action - 搭建「活」的企業 Big Data 生態架構Track A-3 Enterprise Data Lake in Action - 搭建「活」的企業 Big Data 生態架構
Track A-3 Enterprise Data Lake in Action - 搭建「活」的企業 Big Data 生態架構Etu Solution
 
容器驅動開發 - .NET Conf 2017 @ 台中
容器驅動開發 - .NET Conf 2017 @ 台中容器驅動開發 - .NET Conf 2017 @ 台中
容器驅動開發 - .NET Conf 2017 @ 台中Andrew Wu
 
與大師對談: 轉移到微服務架構必經之路 ~ 系統與資料庫重構
與大師對談: 轉移到微服務架構必經之路~ 系統與資料庫重構與大師對談: 轉移到微服務架構必經之路~ 系統與資料庫重構
與大師對談: 轉移到微服務架構必經之路 ~ 系統與資料庫重構Andrew Wu
 
美团点评技术沙龙14:美团四层负载均衡
美团点评技术沙龙14:美团四层负载均衡美团点评技术沙龙14:美团四层负载均衡
美团点评技术沙龙14:美团四层负载均衡美团点评技术团队
 
2021 ee大会-旷视ai产品背后的研发效能工具建设
2021 ee大会-旷视ai产品背后的研发效能工具建设2021 ee大会-旷视ai产品背后的研发效能工具建设
2021 ee大会-旷视ai产品背后的研发效能工具建设Tianwei Liu
 
美团技术沙龙04 - Kv Tair best practise
美团技术沙龙04 - Kv Tair best practise 美团技术沙龙04 - Kv Tair best practise
美团技术沙龙04 - Kv Tair best practise 美团点评技术团队
 
Mesos-based Data Infrastructure @ Douban
Mesos-based Data Infrastructure @ DoubanMesos-based Data Infrastructure @ Douban
Mesos-based Data Infrastructure @ DoubanZhong Bo Tian
 

What's hot (20)

2016-07-12 Introduction to Big Data Platform Security
2016-07-12 Introduction to Big Data Platform Security2016-07-12 Introduction to Big Data Platform Security
2016-07-12 Introduction to Big Data Platform Security
 
十二項架構設計原則
十二項架構設計原則十二項架構設計原則
十二項架構設計原則
 
美团技术沙龙04 美团下一代分布式存储系统
美团技术沙龙04   美团下一代分布式存储系统美团技术沙龙04   美团下一代分布式存储系统
美团技术沙龙04 美团下一代分布式存储系统
 
阿里巴巴运维自动化的探索与规划
阿里巴巴运维自动化的探索与规划阿里巴巴运维自动化的探索与规划
阿里巴巴运维自动化的探索与规划
 
Comboware ComboStack 202105
Comboware ComboStack 202105Comboware ComboStack 202105
Comboware ComboStack 202105
 
高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕
 
20220224台中演講k8s
20220224台中演講k8s20220224台中演講k8s
20220224台中演講k8s
 
唯品会大数据实践 Sacc pub
唯品会大数据实践 Sacc pub唯品会大数据实践 Sacc pub
唯品会大数据实践 Sacc pub
 
初探 Elastic Observability 的實踐方法
初探 Elastic Observability 的實踐方法初探 Elastic Observability 的實踐方法
初探 Elastic Observability 的實踐方法
 
豆瓣数据架构实践
豆瓣数据架构实践豆瓣数据架构实践
豆瓣数据架构实践
 
FIT2CLOUD:云管理及DevOps协作平台
FIT2CLOUD:云管理及DevOps协作平台FIT2CLOUD:云管理及DevOps协作平台
FIT2CLOUD:云管理及DevOps协作平台
 
Huangjing renren
Huangjing renrenHuangjing renren
Huangjing renren
 
Track A-3 Enterprise Data Lake in Action - 搭建「活」的企業 Big Data 生態架構
Track A-3 Enterprise Data Lake in Action - 搭建「活」的企業 Big Data 生態架構Track A-3 Enterprise Data Lake in Action - 搭建「活」的企業 Big Data 生態架構
Track A-3 Enterprise Data Lake in Action - 搭建「活」的企業 Big Data 生態架構
 
Openstack的研究与实践
Openstack的研究与实践Openstack的研究与实践
Openstack的研究与实践
 
容器驅動開發 - .NET Conf 2017 @ 台中
容器驅動開發 - .NET Conf 2017 @ 台中容器驅動開發 - .NET Conf 2017 @ 台中
容器驅動開發 - .NET Conf 2017 @ 台中
 
與大師對談: 轉移到微服務架構必經之路 ~ 系統與資料庫重構
與大師對談: 轉移到微服務架構必經之路~ 系統與資料庫重構與大師對談: 轉移到微服務架構必經之路~ 系統與資料庫重構
與大師對談: 轉移到微服務架構必經之路 ~ 系統與資料庫重構
 
美团点评技术沙龙14:美团四层负载均衡
美团点评技术沙龙14:美团四层负载均衡美团点评技术沙龙14:美团四层负载均衡
美团点评技术沙龙14:美团四层负载均衡
 
2021 ee大会-旷视ai产品背后的研发效能工具建设
2021 ee大会-旷视ai产品背后的研发效能工具建设2021 ee大会-旷视ai产品背后的研发效能工具建设
2021 ee大会-旷视ai产品背后的研发效能工具建设
 
美团技术沙龙04 - Kv Tair best practise
美团技术沙龙04 - Kv Tair best practise 美团技术沙龙04 - Kv Tair best practise
美团技术沙龙04 - Kv Tair best practise
 
Mesos-based Data Infrastructure @ Douban
Mesos-based Data Infrastructure @ DoubanMesos-based Data Infrastructure @ Douban
Mesos-based Data Infrastructure @ Douban
 

Viewers also liked

Android gradle 从入门到gg 2
Android gradle 从入门到gg 2Android gradle 从入门到gg 2
Android gradle 从入门到gg 2Jun Liu
 
Android gradle 从入门到gg 3
Android gradle 从入门到gg 3Android gradle 从入门到gg 3
Android gradle 从入门到gg 3Jun Liu
 
Android gradle 从入门到gg 0
Android gradle 从入门到gg 0Android gradle 从入门到gg 0
Android gradle 从入门到gg 0Jun Liu
 
Android gradle 从入门到gg 1
Android gradle 从入门到gg 1Android gradle 从入门到gg 1
Android gradle 从入门到gg 1Jun Liu
 
Hockey Kit for Android
Hockey Kit for AndroidHockey Kit for Android
Hockey Kit for Android旭辰 羅
 
Android Layout模組化介紹
Android Layout模組化介紹Android Layout模組化介紹
Android Layout模組化介紹Chris Jeng
 
[DEPRECATED]Gradle the android
[DEPRECATED]Gradle the android[DEPRECATED]Gradle the android
[DEPRECATED]Gradle the androidJun Liu
 
第二堂 學習 Java 語法 (1) Java 歷史與程序開發
第二堂 學習 Java 語法 (1) Java 歷史與程序開發第二堂 學習 Java 語法 (1) Java 歷史與程序開發
第二堂 學習 Java 語法 (1) Java 歷史與程序開發力中 柯
 
Track A-1: Cloudera 大數據產品和技術最前沿資訊報告
Track A-1: Cloudera 大數據產品和技術最前沿資訊報告Track A-1: Cloudera 大數據產品和技術最前沿資訊報告
Track A-1: Cloudera 大數據產品和技術最前沿資訊報告Etu Solution
 
Java您不知道的5件事 雷腾(l.t)
Java您不知道的5件事   雷腾(l.t) Java您不知道的5件事   雷腾(l.t)
Java您不知道的5件事 雷腾(l.t) oleone
 
Retrofit Technology Overview by Cumulations Technologies
Retrofit Technology Overview by Cumulations TechnologiesRetrofit Technology Overview by Cumulations Technologies
Retrofit Technology Overview by Cumulations TechnologiesCumulations Technologies
 
使用 RxJava 让数据流动 (Let data streaming using rxjava)
使用  RxJava 让数据流动 (Let data streaming using rxjava)使用  RxJava 让数据流动 (Let data streaming using rxjava)
使用 RxJava 让数据流动 (Let data streaming using rxjava)Tankery Chen
 
introduce Okhttp
introduce Okhttpintroduce Okhttp
introduce Okhttp朋 王
 
網絡倫理 Internet Ethics
網絡倫理 Internet Ethics網絡倫理 Internet Ethics
網絡倫理 Internet EthicsCalvin C. Yu
 
Simplificando chamadas HTTP com o Retrofit
Simplificando chamadas HTTP com o RetrofitSimplificando chamadas HTTP com o Retrofit
Simplificando chamadas HTTP com o RetrofitFelipe Pedroso
 
Storm: Distributed and fault tolerant realtime computation
Storm: Distributed and fault tolerant realtime computationStorm: Distributed and fault tolerant realtime computation
Storm: Distributed and fault tolerant realtime computationFerran Galí Reniu
 
Infinum Android Talks #16 - Retrofit 2 by Kristijan Jurkovic
Infinum Android Talks #16 - Retrofit 2 by Kristijan JurkovicInfinum Android Talks #16 - Retrofit 2 by Kristijan Jurkovic
Infinum Android Talks #16 - Retrofit 2 by Kristijan JurkovicInfinum
 

Viewers also liked (20)

Android gradle 从入门到gg 2
Android gradle 从入门到gg 2Android gradle 从入门到gg 2
Android gradle 从入门到gg 2
 
Android gradle 从入门到gg 3
Android gradle 从入门到gg 3Android gradle 从入门到gg 3
Android gradle 从入门到gg 3
 
Android gradle 从入门到gg 0
Android gradle 从入门到gg 0Android gradle 从入门到gg 0
Android gradle 从入门到gg 0
 
Android gradle 从入门到gg 1
Android gradle 从入门到gg 1Android gradle 从入门到gg 1
Android gradle 从入门到gg 1
 
Hockey Kit for Android
Hockey Kit for AndroidHockey Kit for Android
Hockey Kit for Android
 
Android Layout模組化介紹
Android Layout模組化介紹Android Layout模組化介紹
Android Layout模組化介紹
 
Android Thread
Android ThreadAndroid Thread
Android Thread
 
[DEPRECATED]Gradle the android
[DEPRECATED]Gradle the android[DEPRECATED]Gradle the android
[DEPRECATED]Gradle the android
 
第二堂 學習 Java 語法 (1) Java 歷史與程序開發
第二堂 學習 Java 語法 (1) Java 歷史與程序開發第二堂 學習 Java 語法 (1) Java 歷史與程序開發
第二堂 學習 Java 語法 (1) Java 歷史與程序開發
 
Track A-1: Cloudera 大數據產品和技術最前沿資訊報告
Track A-1: Cloudera 大數據產品和技術最前沿資訊報告Track A-1: Cloudera 大數據產品和技術最前沿資訊報告
Track A-1: Cloudera 大數據產品和技術最前沿資訊報告
 
Java您不知道的5件事 雷腾(l.t)
Java您不知道的5件事   雷腾(l.t) Java您不知道的5件事   雷腾(l.t)
Java您不知道的5件事 雷腾(l.t)
 
Retrofit Technology Overview by Cumulations Technologies
Retrofit Technology Overview by Cumulations TechnologiesRetrofit Technology Overview by Cumulations Technologies
Retrofit Technology Overview by Cumulations Technologies
 
使用 RxJava 让数据流动 (Let data streaming using rxjava)
使用  RxJava 让数据流动 (Let data streaming using rxjava)使用  RxJava 让数据流动 (Let data streaming using rxjava)
使用 RxJava 让数据流动 (Let data streaming using rxjava)
 
introduce Okhttp
introduce Okhttpintroduce Okhttp
introduce Okhttp
 
網絡倫理 Internet Ethics
網絡倫理 Internet Ethics網絡倫理 Internet Ethics
網絡倫理 Internet Ethics
 
Simplificando chamadas HTTP com o Retrofit
Simplificando chamadas HTTP com o RetrofitSimplificando chamadas HTTP com o Retrofit
Simplificando chamadas HTTP com o Retrofit
 
Rxjava meetup presentation
Rxjava meetup presentationRxjava meetup presentation
Rxjava meetup presentation
 
Retrofit
RetrofitRetrofit
Retrofit
 
Storm: Distributed and fault tolerant realtime computation
Storm: Distributed and fault tolerant realtime computationStorm: Distributed and fault tolerant realtime computation
Storm: Distributed and fault tolerant realtime computation
 
Infinum Android Talks #16 - Retrofit 2 by Kristijan Jurkovic
Infinum Android Talks #16 - Retrofit 2 by Kristijan JurkovicInfinum Android Talks #16 - Retrofit 2 by Kristijan Jurkovic
Infinum Android Talks #16 - Retrofit 2 by Kristijan Jurkovic
 

Similar to 大鱼架构演进

千万级并发在线推送系统架构解析 | 个信互动 叶新江
千万级并发在线推送系统架构解析 | 个信互动 叶新江千万级并发在线推送系统架构解析 | 个信互动 叶新江
千万级并发在线推送系统架构解析 | 个信互动 叶新江imShining @DevCamp
 
云网锦绣 SDN实战研讨会
云网锦绣 SDN实战研讨会云网锦绣 SDN实战研讨会
云网锦绣 SDN实战研讨会Hardway Hou
 
Android消息推送实现 | 友盟 徐仙明
Android消息推送实现 | 友盟 徐仙明 Android消息推送实现 | 友盟 徐仙明
Android消息推送实现 | 友盟 徐仙明 imShining @DevCamp
 
Alibaba server-zhangxuseng-qcon
Alibaba server-zhangxuseng-qconAlibaba server-zhangxuseng-qcon
Alibaba server-zhangxuseng-qconYiwei Ma
 
徐晓 Qq空间技术架构之峥嵘岁月
徐晓 Qq空间技术架构之峥嵘岁月徐晓 Qq空间技术架构之峥嵘岁月
徐晓 Qq空间技术架构之峥嵘岁月drewz lin
 
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验colderboy17
 
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验guiyingshenxia
 
使用GoogleAppEngine建立个人信息中心
使用GoogleAppEngine建立个人信息中心使用GoogleAppEngine建立个人信息中心
使用GoogleAppEngine建立个人信息中心Du Yamin
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAEq3boy
 
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)FLASH开发者交流会
 
Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境
Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境
Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境drewz lin
 
How do we manage more than one thousand of Pegasus clusters - engine part
How do we manage more than one thousand of Pegasus clusters - engine partHow do we manage more than one thousand of Pegasus clusters - engine part
How do we manage more than one thousand of Pegasus clusters - engine partacelyc1112009
 
什么是云计算
什么是云计算什么是云计算
什么是云计算Liyang Tang
 
Bluemix Node-Red Part II
Bluemix Node-Red Part IIBluemix Node-Red Part II
Bluemix Node-Red Part IIJoseph Chang
 
Using google appengine_final
Using google appengine_finalUsing google appengine_final
Using google appengine_finalWei Sun
 
冉有 支付宝钱包的研发挑战和最佳实践
冉有 支付宝钱包的研发挑战和最佳实践冉有 支付宝钱包的研发挑战和最佳实践
冉有 支付宝钱包的研发挑战和最佳实践Trinea Trinea
 
微博平台混合云实践 - Docker全架构
微博平台混合云实践 - Docker全架构微博平台混合云实践 - Docker全架构
微博平台混合云实践 - Docker全架构Chen Fei
 
IDF2013大会分享——《使用新浪移动云开发全平台应用》
IDF2013大会分享——《使用新浪移动云开发全平台应用》IDF2013大会分享——《使用新浪移动云开发全平台应用》
IDF2013大会分享——《使用新浪移动云开发全平台应用》easychen
 
深入浅出 V cloud director
深入浅出 V cloud director深入浅出 V cloud director
深入浅出 V cloud directorITband
 
Appium手机自动化测试 testerhome_bqcon版本
Appium手机自动化测试 testerhome_bqcon版本Appium手机自动化测试 testerhome_bqcon版本
Appium手机自动化测试 testerhome_bqcon版本延胜 黄
 

Similar to 大鱼架构演进 (20)

千万级并发在线推送系统架构解析 | 个信互动 叶新江
千万级并发在线推送系统架构解析 | 个信互动 叶新江千万级并发在线推送系统架构解析 | 个信互动 叶新江
千万级并发在线推送系统架构解析 | 个信互动 叶新江
 
云网锦绣 SDN实战研讨会
云网锦绣 SDN实战研讨会云网锦绣 SDN实战研讨会
云网锦绣 SDN实战研讨会
 
Android消息推送实现 | 友盟 徐仙明
Android消息推送实现 | 友盟 徐仙明 Android消息推送实现 | 友盟 徐仙明
Android消息推送实现 | 友盟 徐仙明
 
Alibaba server-zhangxuseng-qcon
Alibaba server-zhangxuseng-qconAlibaba server-zhangxuseng-qcon
Alibaba server-zhangxuseng-qcon
 
徐晓 Qq空间技术架构之峥嵘岁月
徐晓 Qq空间技术架构之峥嵘岁月徐晓 Qq空间技术架构之峥嵘岁月
徐晓 Qq空间技术架构之峥嵘岁月
 
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
 
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
 
使用GoogleAppEngine建立个人信息中心
使用GoogleAppEngine建立个人信息中心使用GoogleAppEngine建立个人信息中心
使用GoogleAppEngine建立个人信息中心
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAE
 
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)
 
Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境
Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境
Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境
 
How do we manage more than one thousand of Pegasus clusters - engine part
How do we manage more than one thousand of Pegasus clusters - engine partHow do we manage more than one thousand of Pegasus clusters - engine part
How do we manage more than one thousand of Pegasus clusters - engine part
 
什么是云计算
什么是云计算什么是云计算
什么是云计算
 
Bluemix Node-Red Part II
Bluemix Node-Red Part IIBluemix Node-Red Part II
Bluemix Node-Red Part II
 
Using google appengine_final
Using google appengine_finalUsing google appengine_final
Using google appengine_final
 
冉有 支付宝钱包的研发挑战和最佳实践
冉有 支付宝钱包的研发挑战和最佳实践冉有 支付宝钱包的研发挑战和最佳实践
冉有 支付宝钱包的研发挑战和最佳实践
 
微博平台混合云实践 - Docker全架构
微博平台混合云实践 - Docker全架构微博平台混合云实践 - Docker全架构
微博平台混合云实践 - Docker全架构
 
IDF2013大会分享——《使用新浪移动云开发全平台应用》
IDF2013大会分享——《使用新浪移动云开发全平台应用》IDF2013大会分享——《使用新浪移动云开发全平台应用》
IDF2013大会分享——《使用新浪移动云开发全平台应用》
 
深入浅出 V cloud director
深入浅出 V cloud director深入浅出 V cloud director
深入浅出 V cloud director
 
Appium手机自动化测试 testerhome_bqcon版本
Appium手机自动化测试 testerhome_bqcon版本Appium手机自动化测试 testerhome_bqcon版本
Appium手机自动化测试 testerhome_bqcon版本
 

大鱼架构演进

  • 1. 云应用 | 2016.01.20 1 大鱼架构演进 云应用 2016.01.20
  • 2. 云应用 | 2016.01.20 2 1. Demo阶段 2. PGC: 热点、话题 3. PGC: 热点、群聊 4. PGC: 热点、万人群聊 5. UGC: 热点、万人群聊、弱社交 6. UGC: 热点、社交分享 -> LBS 7. 总结 目录
  • 3. 云应用 | 2016.01.20 3 • RxJava: 多线程, 线程池, 任务管理, 异常管理. 禁 止使用AsyncTask, Thread等Android/Java原生 线程相关以及Android Annotation这种注解型框架 • Retrofit: 网络请求 • Picasso: 图片加载与缓存 • Okhttp: 网络通信 • 数据持久化: Android原生 • UI: RecyclerView, support-v21, Toolbar, SnackBar等Android Lollipop预览版相关控件 Demo阶段 Android客户端架构[0.1, 0.3)
  • 4. 云应用 | 2016.01.20 4 • 白色: 不需要或者需要很少的开发与维护 • 绿色: 需要日常开发与维护 • 蓝色: 需要超越日常工作量的投入, 存在 可控的风险 • 橙色: 需要预研与验证的技术, 存在不可 预知的风险 Demo阶段 Android客户端架构[0.1.0, 0.3)
  • 5. 云应用 | 2016.01.20 5 • 运营管理平台 • 服务器业务接口 • MySql数据持久化 • 一台开发主机 Demo阶段 服务器架构
  • 6. 云应用 | 2016.01.20 6 • Demo版本, 修了两天BUG, 改了几次UI, 就这么上了 • 额外: 预研直播, 群聊相关技术 PGC: 热点、话题
  • 7. 云应用 | 2016.01.20 7云应用 | 2016.01.20 7 PGC: 热点、群聊 差异化: 给用户游戏一 样的用户体验
  • 8. 云应用 | 2016.01.20 8 • 实时网络游戏 • 高可用, 高并发, 优秀的 可扩展性 参考的架构 网易Pomelo架构 https://github.com/NetEase/pomelo
  • 9. 云应用 | 2016.01.20 9 • 引入 Socket.io 框架 • 因为服务器开发是Java工程师, 所以 我们选择了Socket.io + Netty 的方 案 • Socket.io 对移动端的支持, 比当时 的 Pomelo 架构鲁棒性高太多, 现在 的 Pomelo 内部也改用 Socket.io 了 • Socket.io长连接单机可以达到百万 级别, 函数式API PGC: 热点、群聊 服务器架构 – 陈明
  • 10. 云应用 | 2016.01.20 10 • Socket.io.RxJava: 将 Socket.io 的 函数式接口, 以及大鱼的相关业务接口 改成RxJava Observable式 • 将Retrofit的网络异常, 与 Socket.io 的网络异常全部封装到同一个模块, 代 理给RxJava • SharePrefer: 对SharedPreference 的链式封装, 简化SharedPreference 使用, 源代码GIST点我 PGC: 热点、群聊 Android客户端架构[0.3.0, 0.6)
  • 11. 云应用 | 2016.01.20 11 PGC: 热点、群聊 Android客户端架构[0.3.0, 0.6) 设备唯一ID方案, Google与Apple的推荐方案
  • 12. 云应用 | 2016.01.20 12 PGC: 热点、群聊 Android客户端架构[0.3.0, 0.6) 设备唯一ID方案, 我们的MUID方案
  • 13. 云应用 | 2016.01.20 13 • 视差动画 - Parallax effects • View Property Animation • Layout Transition, Activity Transition, Fragment Transition • Shared Element Animation • View Animation • Canvas, Bitmap! PGC: 热点、群聊 Android客户端架构[0.3.0, 0.6) 动画相关 • 游戏引擎 – Game engines • Libgdx • Cocos2d-x • Unity • … 做了十几个动画效果, 改了几个版本UI
  • 14. 云应用 | 2016.01.20 14云应用 | 2016.01.20 14 广播风暴: 同一个话题人数达到1250的时候, 同时发一条消息, 机房网卡就爆了(50MB)
  • 15. 云应用 | 2016.01.20 15 • n² 流量 • 解决方案: 参考网络游戏, 服务器分区 – 连接服务器物理分区, 聊天房间业务逻辑分区 – 精简json结构, 或者更换为protobuf – 控制广播范围, 从全广播改成声波广播 – 控制用户发送消息频率 – 控制用户接收消息频率 – 图片url使用短code, 由客户端拼接 PGC: 热点、群聊 广播风暴 Connector Connector Connectormaster Connector 消息队列 消息队列 消息队列 消息队列
  • 16. 云应用 | 2016.01.20 16云应用 | 2016.01.20 16 最终方案: 魅族Push通道protobuf重构版本
  • 17. 云应用 | 2016.01.20 17 • Fresco: 比Picasso更优秀的性 能, 更好的扩展性, 对动画的渲 染效率远高于Android原生控件 • Nebula.dayu: 基于nebula, 对 大鱼业务的封装 • Nebula.dayu.RxJava: 将 Nebula与大鱼业务改造成 RxJava式管理, 附加事务推送等 nebula暂时缺失的模块 • UI又改了 PGC: 热点、万人群聊 Android客户端架构[0.6.0, 0.8)
  • 18. 云应用 | 2016.01.20 18 • Push通道: 独立的, 只针对大鱼业务 • 因为原版还在测试阶段, 并没有target 第三方应用 PGC: 热点、万人群聊 服务器架构
  • 19. 云应用 | 2016.01.20 19 • 声波控制消息广播范围和数量 PGC: 热点、万人群聊 服务器架构 声波控制
  • 20. 云应用 | 2016.01.20 20 • 分组实现 PGC: 热点、万人群聊 服务器架构 声波架构 – By 陈金平 Socket服务群,消息收集分发,订阅 Http服务群,非消息业务,图片 Http服 务,运 营和管 理平 台,以 及监控 平台 消息生成服务 消息下发服务 赞/踩,投票站 队服务 Redis Mysql规定数据 库 归档服务 FastDFS 用户 消息路由中心 (整理消息) 发言 Location服务集群(用户订阅路由中心) 发言 通知逻辑组下发 逐个发送消息 订阅,投票,站队 主题,消息管理等 鉴权和用户管 理服务 大组消息队列A 小房间 A1 小房间 A2 … … Slave
  • 21. 云应用 | 2016.01.20 21 • 分组实现 PGC: 热点、万人群聊 服务器架构 声波架构 – By 陈金平 大组消息队列A 小房间 A1 小房间 A2 … … Slave 消息接收服务集群 消息分发服务集群 消息路由中心 Redis集群 组临时消息队列 精选时消息队列归档用消息队列 用户群 发消息 存入数据库 转发路由中心 定时分组通知集群 收消息
  • 22. 云应用 | 2016.01.20 22 • 还是解决不了这种问题: – 用户B与A, C能聊天互动 – 用户A与C却互相看不到 • 但是却将一个房间爆满, 另一个房间只有 几个人的寂寞感, 平均分配到了所有人 PGC: 热点、万人群聊 服务器架构 声波架构 用户A 用户C用户B
  • 23. 云应用 | 2016.01.20 23云应用 | 2016.01.20 23 并行开发流程
  • 25. 云应用 | 2016.01.20 25云应用 | 2016.01.20 25 Apk安全相关: 对于一个应用, 外发到应用市 场, 首要保证安全, 其次是渠道分发推广
  • 26. 云应用 | 2016.01.20 26 • 添加Apk自我保护方案 • 使用Gradle Flavor来定制渠道打包 • RxJava作为整体架构的基础考虑 • Https签名从Java层移动到C层 • 敏感数据使用Gradle加密, C层解密 • 随着项目的变大, SQLite简直就是 业界毒瘤, • 不, 一切Android偏Framework的 API都是业界毒瘤 • UI又改了, 2次 PGC: 热点、万人群聊、弱社交 Android客户端架构[1.0.0, 2.0.1]
  • 27. 云应用 | 2016.01.20 27 • 外部工具Gradle加密数据, 或者流程 • Gradle将APK的release签名加密到NDK层 • Gradle编译过程中将编译的Dex代码信息加密到 NDK层 • Android NDK层反向校验APK的Dex代码信息 • Android NDK层反向校验APK的签名 • Android NDK层解密次数据, 或解密流程 PGC: 热点、万人群聊、弱社交 Android客户端架构[1.0.0, 2.0.1] Apk自我保护方案
  • 28. 云应用 | 2016.01.20 28 • 比如Http签名加密整体流程 PGC: 热点、万人群聊、弱社交 Android客户端架构[1.0.0, 2.0.1] Apk自我保护方案
  • 29. 云应用 | 2016.01.20 29 • 加密解密 PGC: 热点、万人群聊、弱社交 Android客户端架构[1.0.0, 2.0.1] Apk自我保护方案 Android Apk NDK层解密 Gradle 编译过程加密
  • 30. 云应用 | 2016.01.20 30 • 自签名校验 PGC: 热点、万人群聊、弱社交 Android客户端架构[1.0.0, 2.0.1] Apk自我保护方案
  • 31. 云应用 | 2016.01.20 31 • Dex代码校验 PGC: 热点、万人群聊、弱社交 Android客户端架构[1.0.0, 2.0.1] Apk自我保护方案
  • 32. 云应用 | 2016.01.20 32 • 二次打包流程 • 早期互联网Android应用, Ant编译的时候, 二次打包 Apk来加密, 原理与此一致 PGC: 热点、万人群聊、弱社交 Android客户端架构[1.0.0, 2.0.1] Apk自我保护方案
  • 33. 云应用 | 2016.01.20 33 • 第二次优化版本, 修改 Gradle编译链, 简化成一 次打包 PGC: 热点、万人群聊、弱社交 Android客户端架构[1.0.0, 2.0.1] Apk自我保护方案
  • 34. 云应用 | 2016.01.20 34 • 自我保护方案从大鱼2.0.0之后, 脱离大鱼, 单独维护, 可供其他应用使用, 音乐, 视频, 智能生活等多个 APP已经用到 项目地址: http://gitlab.meizu.com/AppArch/security • 因为集成比较复杂, 后来又做了个gradle插件, 来帮助应用傻瓜式集成此方案 项目地址: http://gitlab.meizu.com/Cloud/securityplugin PGC: 热点、万人群聊、弱社交 Android客户端架构[1.0.0, 2.0.1] Apk自我保护方案
  • 35. 云应用 | 2016.01.20 35 • 使用Gradle Flavor来定义渠道Flavor • 借助Gradle resValue, buildConfigField等接口, 将渠道信息注入到Apk的代码与资源中, 以供数据统计 • 修改Gradle Android编译链, 在assemble的时候, 通过时间戳+机编码将apk以及混淆文件mappings绑 定到一起, 归档起来, 以供retrace • 此归档流程已经集成至魅族Gradle插件2.x版本, 由于服务器不支持x.y.z.CI_CODE 这种版本名, 所以全 功能版本为 dev.2.3 项目地址: http://cloud.meizu.com/dayu/meizugradleplugin/tree/dev_23 PGC: 热点、万人群聊、弱社交 Android客户端架构[1.0.0, 2.0.1] 渠道分发
  • 36. 云应用 | 2016.01.20 36云应用 | 2016.01.20 36 2.0版本之后, 群聊被砍
  • 37. 云应用 | 2016.01.20 37 • Https全REST full化, 签名 改为Oauth头签名, hmac- sha256加密算法 • Retrofit升级为2.0-beta3 最新架构 • 全面废弃了渣渣SQLite, 改 用realm数据库并加密, 开 发效率提升了无数倍 • JVM层添加Kotlin语言 • UI又改了 PGC: 热点、万人群聊、社交分享 Android客户端架构3.0.0
  • 38. 云应用 | 2016.01.20 38 • RxJava: 刚开始很难用, 习惯了超好用, 可以大幅度提升多线程, 任务组合, 任务管理等开发效率 • Retrofit: 刚开始很好用, 习惯了更好用, 可以大幅度提升网络接口开发效率 • Realm: 刚开始很难用, 习惯了超好用, 可以大幅度提升数据库开发效率 • Picasso -> Fresco: 难用一点点, 但性能提升 • Kotlin: 刚开始很难用, 习惯了, 越用越好用, 可以大幅度提升敲代码的效率 • 但总体而言: 开发使用了过多不稳定的beta, 甚至experimental技术 总结 Android长期技术选用
  • 39. 云应用 | 2016.01.20 39 • 技术选用: 尽量选择”绿色”, 甚至”白色”的技术, “蓝色”的技术一个阶段最多选一个 • 三方SDK: 各种auth2.0登录SDK, 各种支付SDK, 各种github开源库 • 渠道分发: Gradle必须要懂 • 数据统计: 海外Flurry, 国内友盟 • 推送平台: 极光, 或者parse这样的MBaas • 灰度测试, 云测 • Android安全: 壳固化技术, 二次打包技术, 或者像大鱼一样的apk保护方案 • 免服务器开发(Baas, MBaas): 海外parse, 国内LeanCloud, bmob等一堆抄袭的 • 总而言之, 所有以上都是资源, 我们要做的是按startup挑选组合一切可以使用的资源 总结 Startup阶段, 移动开发你会遇到的东西
  • 40. 云应用 | 2016.01.20 40 • Ideas -> Validate: 产品idea的验证, 此过程在UI设计之前, 第三方validate公司有 Unbounce • Plan -> Visualize: 只有通过validate的idea, 才能进入原型图设计, 项目计划阶段 • Project Management: 进入项目管理阶段 • Website: 开发稳步进行的时候, 网站才开始建设, 一般5美刀就可以买到 • SEO: 搜索优化, 与渠道分发准备推进项目上线 • Payment & Legal: 支付接入, 账号系统, 以及法律规避 • Analytic: 产品正常运转了之后, 数据分析开始介入, 用数据来帮助产品提升 • 其实Analytic约等于 Validate, 形成一个子循环, 数据分析是用来自我Validate然后改进下一个产品需求 与迭代的 总结 Startup项目正确的流程
  • 41. 云应用 | 2016.01.20 41 • 网易网络游戏框架: https://github.com/NetEase/pomelo • Google惟一ID方案: http://developer.android.com/training/articles/user-data-ids.html • Apk自我保护方案: http://gitlab.meizu.com/AppArch/security/tree/master • Apk自我保护方案插件: http://gitlab.meizu.com/Cloud/securityplugin/tree/master • 魅族Gradle插件: http://cloud.meizu.com/dayu/meizugradleplugin – dev_23分支中包含有apk及mappings归档插件代码 • 推特Oauth加密: https://dev.twitter.com/oauth/overview/creating-signatures • Startup 15个工具: http://creately.com/blog/diagrams/15-tools-to-launch-your-startup/?utm_content=bu 可供参考的资源
  • 42. 云应用 | 2016.01.20 42 谢谢 云应用 – 刘俊