携程陈浩然:借助性能优化,提高用户体验

原创
新闻
在无线环境较差的情况下使用 App,如何能够保证顺利使用例如查询,减少出错率,对无线技术工程师提出了严峻的挑战。当笔者问及携程针对弱网情况下是怎么做好优化时,陈浩然先生表示,在网络信号时好时坏,网络抖动的情况下,如果用TCP连接,是有很多优化机制的。

   WOT2016移动互联网技术峰会第二天,我们非常荣幸的邀请到了携程无线高级开发总监陈浩然先生,就携程无线网络服务架构,弱网优化方案,自动重试可控分析以及移动用户体验优化等方面进行了采访。

[[170886]]

  陈浩然先生目前主要负责携程无线技术开发工作,在本次峰会上与大家分享的主题是《无线App网络服务通道治理和性能优化》。之所以选择这样一个分享主题,陈浩然先生首先表示这个主题来自于他工作中比较核心的业务实践,其次他认为网络服务对于APP来讲非常重要,对于所有相关的无线开发人员来说都是非常感兴趣的。我们遇到一些问题他们也会遇到,通过分享这些解决方案,可以对他们有一些启发,有一些借鉴价值。

  相信很多朋友跟笔者一样,对携程无线当前的网络服务架构非常感兴趣。在谈到携程无线目前的网络服务架构时,陈浩然先生表示,携程无线服务架构是比较清晰的,我们最新网络服务都是通过TCP的连接到达TCP Gateway,通过TCP Gateway进行网络服务转发,转发到后端业务的SOA接口,或者转发到HTTP Gateway,整个架构以Gateway 作为核心中间件,所有的App前端网络服务都是基于TCP协议,后端是基于HTTP协议实现网络服务。

  当笔者问到为何会选择TCP时,陈浩然先生表示,之所以选择TCP,是有一些历史的原因。因为携程的APP用户一般都是在景点、酒店等地方使用APP,众所周知酒店的无线网络都不会很好,景区的3G/4G网络也比较差,我们发现如果使用HTTP协议,它的网络服务成功率是不会令人满意的。那么,我们就会考虑是不是可以用一些更基础一点的协议?就是HTTP下层的传输层TCP协议做,如果使用TCP协议做,所有网络服务阶段都是可以划分的很清楚,包括获取服务端的IP、连接、发送请求、接受响应,所有阶段都一清二楚。这个时侯,我们就可以针对每个阶段做一些优化,而不是像传统HTTP请求一样只能直接获取结果。我们希望可控性更高,这样网络性能优化这一块儿有更多的优化方法去做。

  在无线环境较差的情况下使用 App,如何能够保证顺利使用例如查询,减少出错率,对无线技术工程师提出了严峻的挑战。当笔者问及携程针对弱网情况下是怎么做好优化时,陈浩然先生表示,在网络信号时好时坏,网络抖动的情况下,如果用TCP连接,是有很多优化机制的。如果用传统的HTTP连接,网络弱时服务失败了直接进行重试,这个有很大风险。比如我下了个单,由于网络不好就发送了两个请求,不知道请求是不是真的发到了服务器端,这时就会出现重复下单的情况,即服务幂等性的问题。如果用TCP协议做网络服务,就可以知道连接失败了,还是序列化请求失败,还是发送请求失败。如果在前面这几个阶段失败,直接进行重试就可以。因为用户知道自己在景区,信号不好,是有一个心理预期的。但是,我们自动帮他重试以后,返回一个响应给他,告诉他这个查询是成功的,下单是成功的,他是可以接受一定时间的等待的。像HTTP协议可能直接我告诉他失败,这个用户体验是非常差的。在网络抖动情况下,传统的HTTP在网络环境切换时,可能联通网络切到了电信网络,目标服务器就不合适了,如果用TCP去实现的话,就会用自动 Ping的方式找到一个最合适服务网络的IP地址,有很多优化办法,不断地调整找到一个最优的网络通路,这也是通路治理的一个方面,这种优化后就会让连接成功率高很多。

  谈到自动重试可靠性分析,陈浩然先生表示,TCP本身就有很多重传的机制,重试本身就是提高成功率很好的办法。最大的问题什么时候可以重试。我们发现所有失败里面90% 以上失败都是TCP连接失败,包括HTTP请求,是因为连不上服务器失败了,这时是不是可以自动重试一下,这种重试机制类似于传输层TCP协议这一层的。想要保证可靠传输的话有同传数据包的机制,那应用层是不是也可以做到重试。因为还没有连上,把它在连接这一步加上一个重试机制,很大程度上可以解决90%以上的失败的情况的发生,整体的网络服务成功率就是提升了。这种重试也是参考了TCP协议本身一些机制来做一些优化的思路。

  在采访最后,笔者针对携程在移动优化方面对用户体验的影响有哪些好的做法进行了提问,陈浩然先生表示,携程的用户体验优化有两种方式,一是技术层面,二是产品层面。技术层面这块就是目前我负责的这些工作,会有一些客户端的APM来做性能管理的工作,通过埋点等发现一些性能问题,不断优化来提升整体用户体验。产品端层面我们有一个比较好的AB Testing机制,并且很早已经建立了这套机制。在产品设计方面不是哪一个老板说B版比A版好就用B版,而是依赖于AB Testing实验结果判定。我们所有产品端的变动都用这套机制。比如我们换一个下单流程,这个流程跟原来流程比,哪一个好?我们都是用AB Testing方式对比,最终效果是要根据AB testing以后,根据定单的转化率来计算的,B版确实比A版好的时候,才会把所有App版本换成B版,两个用户在使用的时候有可能同时使用一个App,某一个地方的流程是不一样的。A版和B版哪一个好?通常要经过1-3个月时间进行试验,试验结束了以后,我们确定版本以后换成新版本。所以说,AB Testing对于携程来讲是比较重要的用户体验提升方式。

责任编辑:张诚 来源: 51CTO.com
相关推荐

2022-07-15 09:20:17

性能优化方案

2022-07-08 09:38:27

携程酒店Flutter技术跨平台整合

2016-10-11 14:57:33

携程APP性能优化

2023-04-24 15:10:23

优化方案

2014-12-25 17:51:07

2022-09-09 15:49:03

携程火车票组件化管理优化

2023-10-13 09:34:27

算法数据

2021-09-17 12:54:05

AI 数据人工智能

2023-06-09 09:54:36

携程工具

2009-06-03 10:32:36

Oracle性能优化分区技术

2022-03-30 18:39:51

TiDBHTAPCDP

2023-07-07 14:18:57

携程实践

2023-09-10 17:14:42

缓存技术系统架构设计

2017-02-09 11:05:11

大数据用户画像技术

2012-08-09 09:40:38

WAN优化WAN加速虚拟桌面

2022-04-07 17:30:31

Flutter携程火车票渲染

2012-08-10 09:24:00

虚拟化

2010-03-18 20:19:16

2022-10-27 09:42:22

数据库SQL

2014-03-23 08:16:53

点赞
收藏

51CTO技术栈公众号