分享产品与技术分享腾讯与互联网更多精彩内容架构之美:开放环境下的网络架构QQ空间技术架构之峥嵘岁月QQ基础数据库架构演变之路查看更多移动应用使用场景系统架构优化策略开发策略产品移动应用使用场景网络环境复杂(2G,2.5G,3G,WiFi等)移动应用使用场景网络速度不均匀(网络死角;移动过程中,网络速度变化)移动应用使用场景不同设备屏幕大小不一需要对不同尺寸屏幕进行内容适配才能达到良好视觉呈现移动应用使用场景电池容量小u 智能手机的电池容量是个悲剧,需要尽可能省电内存小u 经常因为内存不足而造成应用闪退CPU处理能力有限u 无法进行复杂的逻辑处理,需要借助于AppServer存储空间有限u 图片,视频,音频,太多的东西放不下了……网络连接不稳定u 脱离WiFi无法使用(iPadWiFiOnly,iPodTouch等)移动应用使用场景系统架构优化策略开发策略产品现有移动互联网存在的问题模块划分模块划分LVSClientCDNWebServerAppServer(distributed)HDIRNTSEDDBDFSSTATSCACHE……OIMAGEOSHORTTHRIFTJGROUPS……模块划分移动应用使用场景系统架构优化策略开发策略产品模块划分XML解析–Androidu 如果XML中包含时间,解析效率会明显下降u 使用长整形时间格式,不要用字符型现有移动互联网存在的问题并发u 多线程(图片下载)u 异步执行(离线下载)CDNu CMWAPCMNETTD-SCDMA(移动)u WCDMA(联通)u CDMA2000(电信)图片服务器u 返回最合适的图片尺寸u 图片的裁剪和缩略u 节省内存模块划分预加载及下载的优先级模块划分显示优化/内存优化u 双边缓存/单边缓存45678cache当前页45678Cache前一页Cache后一页当前页具体cache的方向根据翻页运动轨迹进行判断当前页面的前后两个方向上都进行cache现有移动互联网存在的问题缓存技术u 数据(例如图片,长期不失效)可以共享u 减少网络交互u 减少流量u 加快访问速度u 增强用户体验现有移动互联网存在的问题增加动态缓存管理缓存失效的判断原则u 由服务器指定缓存数据有效时长(Expires、Cache-ControlLast-Modified、ETag)u 由客户端根据移动端容量的占用比例清除缓存的时机u 访问缓存数据时,检查,有过期则清除,实时清除;u 监测移动设备容量变化,超过阈值,进行清除;u 应用程序切换到后台时,触发检查,不影响用户;现有移动互联网存在的问题数据压缩-GZIP数据文章列表文章正文原始数据50233bytes7476bytesGZIP压缩后18834bytes3528bytes压缩比37.49%47.19%现有移动互联网存在的问题现有移动互联网存在的问题使用Http1.1u 长连接功能,Http1.1默认支持长连接,Http1.0需要请求时带上KeepAlive头信息u 降低了反复握手的网络和资源开销断点续传u 对于较大文件(字体文件、书籍等),有效减少网络流量重连策略u 重连3次,针对特定异常重连,幂等方法重连请求分类现有移动互联网存在的问题静态文件(CDN)动态文件缓存动态文件 (CDN)现有移动互联网存在的问题利用OS自带的通知机制(iOSPush)其它平台怎么办?u GoogleC2DM(AndroidCloudtoDeviceMessaging)/GCM(GoogleCloudMessagingforAndroid),在国内不一定好用u Symbian自身没有需要为这些移动终端自建Push服务现有移动互联网存在的问题移动终端登录后和Push服务器保持连接Push服务器主动心跳保持连接移动终端自动检测NAT保活的最大时长,动态调整Push服务器的心跳间隔优点:u 能够实时收到通知u 能够尽可能的省电u 为不支持Push功能移动终端增加实时通知功能现有移动互联网存在的问题无网络,iPodTouch/iPadWiFi怎么办充分考虑iPodTouch/iPadWiFi的设备,以及其他只在WiFi网络下使用网络应用的用户增加网络离线下载和管理模块用户可以在WiFi环境下,(定时或者手动)预先下载好网络数据离线收藏离线操作移动应用使用场景系统架构优化策略开发策略产品现有移动互联网存在的问题原则u 简单(实现最基本的功能)u 快速u 可用(无需考虑效率)u 用户反馈u 反复迭代优点u 验证系统的可行性u 确认需求点u 发现潜在的需求变更u 有利于缩短开发周期开发策略-快速原型开发现有移动互联网存在的问题缺点u 需要用户、策划、开发、测试等多方人员参与u 过多的迭代会消耗较多的资源开发策略-快速原型开发现有移动互联网存在的问题技术团队的现有能力u 我们的产品已经可以支持新闻和视频u 如何支持书籍、杂志、音频?尽量使用现有的解决方案u 成本低u 风险小系统复用u UI组件复用(e.g.webview)u 源代码复用(e.g.classinheritance/third-partylibraries)u 开源组件的复用(e.g.PDFBox/Epublib/BerkeleyDB等)u 框架复用(e.g.SSH/Thrift/Jgroups等)u 设计的复用开发策略-系统复用现有移动互联网存在的问题最理想的情况integratingexistingsystemandcreatenewapplication开发策略-系统复用现有移动互联网存在的问题Changeisalways,invariableistransientu 采用硬件的loadbalancer(Alteon,F5)AppServer新闻微博书籍杂志音频视频RSSAppServer解耦CommonServer新闻RSS微博音频视频书籍杂志开发策略-架构优化现有移动互联网存在的问题影响架构的因素u 需求的不断变化u 请求量/数据量的增加u 系统复杂度u ……开发策略-架构优化现有移动互联网存在的问题官方网站:AppStore:=8&ls=1(iPad)=en&mt=8&ls=1(iPhone)Android和AndroidPad可至官网下载官方网站:AppStore:=8Android、Symbian、BlackBerry、WindowsMobile可至官网下载现有移动互联网存在的问题结束THEENDThankYou