ce97
作者ce97·2015-04-07 21:27
软件开发工程师·某某某

缓冲网络可更好地优化移动应用性能

字数 2281阅读 1361评论 0赞 0

架构师发现自己可以通过利用缓冲网络和新的数据同步协议改善移动应用性能

许多企业做移动开发是把它当作为现有Web应用的一种附加。不过企业架构师发现他们可以通过更好地利用缓冲网络和新的比传统Web基础设施更有效的数据同步协议来改善应用性能。

“这对于我们来说是一个很好的决定,这可以让高性能应用的开发变得容易多了,” DailyLook.com的CTO Eric Marston说。公司提供了一种在线购物体验,每天都会由职业造型师精心策划一些时尚灵感。它重新组织了自己的企业架构和应用开发流程,用全面的缓冲策略显著提升了应用性能,并且降低了后端基础设施的负载。

该公司此前已经在厚实的中间件层投入了可观的资源,以便Web和移动应用能通过公共中间件组件与后端对接回去。这样可以允许代码重用,并可改进应用开发,Marston说。但是促进更好的应用缓冲能力就需要多考虑一些工作了。

移动对于消费者互动来说是至关重要的

改进移动应用集成对于DailyLook来说非常关键。公司流量里面大约有90%来自于用户的原生移动app。Marston评估了若干的内容分发网络(CDN)、服务,但发现妻子大部分只是优化静态内容,他说。通过利用Instart Logic Software Defined Application Delivery Service,DailyLook得以对其DailyLook后端基础设施与移动客户端之间大部分的JSON消息进行加速。

Web应用在移动应用之前就有了,因此DailyLook对Web应用进行了重构,以便更好地利用这一新的中间件曾。这使得与Instart平台的协作变得更加容易。Marston建议组织考虑组织其中间件层去缓冲JSON数据对象。这使得在边缘侧将数据与其它所有东西一并展示成为可能。

最佳缓存所需的规划

“我们的数据库负载、Web服务器负载因此降低了,应用响应也更快,”Marston说。对于许多组织来说这可以是一个挑战,但是对于零售业来说则是生死攸关的。这个过程牵涉到找出如何分段及取出数据,一边任何个性化或与个人相关的东西能够与更加静态的产品数据分离出来。某些情况下,这意味着对DailyLook进行两个小小的调用,但也意味着更多数据可以展现给用户。

新用户能够在30毫秒的时间内接收来自边缘服务器的更新,而不是之前的500毫秒。总的来说,这项策略使得DailyLook可卸载大约70%对边缘服务器的总数据请求。开发对业务有效的缓冲规则也是一种好的做法,Marston说。与流行的新式请求相关的数据可缓存起来供数小时甚至数日使用,但是其他数据则要短暂得多。

Marston建议组织要鼓励在代码评审时开发者考虑更好的缓冲策略。将这个放进评审流程中有助于确保新应用能尽可能优化。

另一个好做法是把缓存策略作为中间件架构的一部分予以考虑。DailyLook部署中间件层的工作做到一半时才意识到通过好的缓存策略可以更加有效。Marston还建议采用JSON这样的技术让缓冲工作容易些。JSON不像HTML缓存那么容易使用,但是JSON使用得当的话是可以帮助减少数据库服务器的负载的

考虑新协议

其他移动专家则鼓励开发者考虑把数据同步作为缓存更有效的替代方式。“其真正价值在于当数据同步系统与应用栈的其他部分协调一致时,” Meteor Development Group的联合创始人Matt DeBergalis说。Meteor Development Group是开源JavaScript开发框架Meteor的开发者。

比方说,Meteor开发平台支持与DDP协议的直接集成,后者很多情况下都采用了更高效的WebSockets协议而不是REST或者JSON。在Meteor中,一旦服务器更新了信息,移动设备的屏幕就会自动更新。开发者不需要写特殊代码来利用自动化同步的优势。其最终结果是数据被缓存进行移动设备而不是中间件。

传统上用于JSON及REST的HTTP协议则是面向Web上的文档获取的,但是实时更新app需要有办法在客户未请求时发送更新。更高性能的app可利用像WebSockets这样的新兴协议,这些协议能够在不需要特殊请求的情况下自动发送数据给客户端。不过基础WebSockets协议是低级协议,所以很难在应用中有效利用,DeBergalis说。

针对同步设计

开发这类应用最大的挑战在于后端的数据层。迄今所有的数据库目的都是为了响应查询,而不是在情况发生变化时推送数据给后端,开源数据同步工具ReThinkDB的创始人Slava Akhmechet说。后端工程师被迫开发复杂的基础设施和定制代码来绕开这些数据层的限制。其中大部分的工作都需要前端的定制代码,这又进一步令开发和部署流程复杂化。

有时间有预算经验的团队可以在现有数据库基础上,通过结合浏览、触发器等传统功能及第三方查询系统如RabbitMQ来实现这一功能。也可以做得相当不错,但是其挑战是非常大的,而且开发代价也会很高,因为这种方法极易出错,还耗费很多的开发资源,Akhmechet指出。

“过去1、2年,在前端有关开发类似实时app方面取得了极大的创新,” Akhmechet说。像Meteor、Angular以及 React这样的框架把实时用例当成一等公民来对待,而且所有主流Web浏览器都支持像WebSockets及长时长HTTP连接这样的技术,这使得实时推送数据给浏览器变得既快又容易。这些工具都是用传统缓冲网络创建下一代移动app的可行替代。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广