2010年系统架构师大会在北京永泰福朋.喜来登大酒店落下了帷幕。本次大会主题是:“企业IT应用最佳实践”,是由IT168联合旗下三大技术社区ChinaUnix、ITPUB、IXPUB主办的继2009年第一届系统架构师大会之后偏重技术经验分享和案例剖析的又一次技术盛宴。据悉,本次技术大会邀请了30多位各行各业、国内最顶级的技术专家分享来自最终企业用户端的系统架构成功实践经验。
大会在大家的积极参与、互动过程中愉快的完成了两天的分享。由于本次大会设立了移动互联网产品架构设计专场,吸引了广大的移动开发者以及架构师到场。
移动开发专场的第一场分享嘉宾是来自北京联致远无线技术CTO:马万铮,具备五年移动开发从业经验的他,从移动互联网面临的各种问题方面给大家带来了精彩的分享,并提出了解决问题的方法。台下的各位架构师表示受益匪浅。
图:北京易联致远技术公司CTO 马万铮
移动互联应用中 互联网采用的技术也各式各样,马万铮将普遍采用的技术分为以下六个方面:1、相对低速的网络——缓存技术。2、动态的网络服务——智能动态缓存。3、网络连接不稳定——传统流程拆分。4复杂和依赖海量数据的运算——云端技术。5、云端服务离线使用——数据分组及智能数据下载。6、可扩展的云端服务——主动与被动式API。
移动互联网常见问题:
但是,随着移动互联网的发展,移动互联网也会面临诸多的问题。
第一个问题:移动互联网面临相对低速的网络
由于移动互联网相比于传统互联网,速度慢,且稳定性较差,与早期的传统互联网比较相近,也就是说移动互联网面临相对低速的网络问题。面对这个问题马万铮认为:一些早期的互联网技术将在移动互联应用中焕发生机。
第二个问题是动态的网络服务。也就是说,在真实的应用中经常会提供一些动态的信息,传统的浏览器采用的缓存技术不能完全满足需求。
第三个问题是网络连接不稳定。
具体表现为在传统的应用编程中,有些程序员往往习惯于单线式流程,这种模式编写简单,思路清晰,但当这个流程中涉及网络通讯时,一但网络通讯受阻,则无法正常完成流程。例如:短信计费,这是单线式流程,一步失败就无法继续。
图:短信计费消息发送过程
第四个问题是复杂和海量数据依赖的运算
对于复杂运算及依赖于海量数据的运算,由于移动设备自身能力所限,几乎是不可能完成的任务。但在移动互联领域,由于云端计算与轻客户端概念的引入,这一切变得越来越平常。
图:复杂和海量数据依赖的运算
第五个问题是云端服务离线使用
并非任何时间都能保证网络的畅通稳定,当网络状况不理想时云端应用就变成了废物。如何使云端应用在网络状况不佳时也能提供有限的服务?
图:云端服务离线使用
第六个问题是可扩展的互联服务。也就是说在移动互联服务中往往会产生一些可被第三方使用并具有一定扩展能力的服务,而传统移动应用一般不具有这一特征。
问题的解决方法:
第一、在遇到相对低速的网络问题时,马万铮提出了缓存技术,目前被广泛应用于浏览器中,而且专门用于解决反复读取速度低下、冗余传输。今后缓存技术还将被广泛应用于移动互联应用中,甚至会出现大量采用预加载加速技术的应用。
第二、在遇到动态的网络服务问题时,马万铮认为:通过定制的智能动态缓存可以为应用提供更优的缓存使用率,同时更节省带宽。而这种智能动态缓存可以做以下的几个工作:1、动态判定文件失效时间。2、根据缓存失效时间,动态释放缓存空间,减少本地资源浪费。3、根据失效时间动态清理,避免清理有效缓存。4、依据缓存有效期决定与网络沟通的流程。
第三、在解决网络连接不稳定时选择传统流程拆分。也就是将网络通讯从单线式流程中拆出。详见下图:
传统流程拆分图
第五、解决云端服务离线使用的方法是采用数据分组及智能数据下载。结合多项基础设施为云端服务提供有局限性的可离线使用的功能。如:在线地图服务与公交查询。常见的技术措施:1、缓存技术。2、合理的数据分组。3、智能选择性数据下载。
图:离线下载
第六、解决可扩展的云端服务方法:主动与被动式API。
在移动互联应用中,一般通过设计和提供主动型API与被动型API,来满足对互联应用的第三方调用与扩展。
主动型API:API功能由提供者实现。一般比较容易设计,但较封闭,一般不可被扩展
被动型API:API设计者设计接口和回调方法,API的功能由第三方实现,较容易扩展。