@tinadu
2015-11-03T10:23:55.000000Z
字数 2806
阅读 2081
未分类
导语
携程今年动作不断,继5月份收购艺龙后,前不久又宣布了与去哪儿合并,在国内在线旅游这个领域成为当之无愧的霸主。那么一路走来,技术是如何支撑携程成长到今天的地步,让我们以携程的业务为线索分析一下他的技术演进。
在11月17日QCon旧金山的中国技术开放日专场上,携程旅行网CTO叶亚明(Eric Ye)将上台与大家分享OTA的技术特点。
基础架构
携程自1999年创立以来,在多年的发展中不断的进行架构优化,后采用分布式架构,解耦业务和架构,提高可扩展性。大概在2013年开始使用OpenStack来将基础设施标准化,实现快速部署,帮助减少运维成本。
在其后的发展中携程基于OpenStack做了大量的二次开发,打造了携程私有云。携程私有云主要功能是监控,配置管理和日志操作。携程云综合了KVM,VMware和Docker,网络虚拟化使用了Neutron OpenVSwitch + VLan以及VMware的Nova-VMware-Driver。
携程拥有网页业务,呼叫中心业务和移动业务。而在几年前,携程的业务主要集中在offline呼叫中心,实施云架构后,由offline转变为online,以虚拟桌面云替代PC桌面。呼叫中心虚拟云桌面是一个比较独特的OpenStack应用场景。所有的呼叫中心不需要台式机,呼叫中心员工办公只需一个云客户端和一个显示器,真正的桌面都运行在云端。虚拟桌面云的整个平台,包括后端对桌面、云终端运维管理、资源分配调度、动态伸缩等功能。经过这样的技术变革后,携程拥有了OTA业界规模最大的多呼叫中心,总人数超过万人;并且由于业务的高速增长,呼叫中心人员也在不断扩容。携程曾在2015年3月份在QCon上和大家分享了用OpenStack打造携程私有云的经验。
携程具有多个数据中心,一方面支持业务的高速成长,另一方面提高网站的高可用性。并在此基础上进行大数据分析。携程需要在大量的旅游产品线中快速帮用户找到合适的服务。他利用后台大规模数据挖掘和实时索引功能不断完善自己的搜索引擎。 在lucene API的基础上,做大量二次开发。并形成易扩展的架构,快速支持新的产品线。在2014年的QCon大会上携程介绍了他们在垂直搜索架构上所做的探索工作。
另外为了保证搜索实时更新,降低系统耦合度,增加吞吐量,提高可靠性,携程研发了新一代的Hermes异步消息队列系统,可实现消息追踪和全面的监控治理。携程在2015年的QCon上分享了异步消息队列系统的构建要点。
同时一个好的基础架构也离不开监控和安全体系。海量的在线交易背后伴随着代码发布数量,服务器数量,网站流量的不断上升,而运维伴随着携程的发展成为一个新的挑战。携程形成了自己的监控体系,不断在人员组织,开发工具,流程定义上进行探索和磨合,形成的监控体系能先于人发现网站问题。
携程经常遇到一些常见的恶意请求和攻击,如抓数据、恶意扫描、发垃圾信息等等,对用户、服务器、带宽造成损失。携程在发展期间,也算摸着石头过河。如何保证系统的稳定和实时,携程建立了一款基于大规模日志分析的规则引擎、实时计算的安全分析产品。
图1:安全规则产品
http://img2.ph.126.net/b0kmZIQUcBftBjzBgNCggQ==/6631270075839909701.png
前端开发
前端的设计一样也经历过了offline到online的转变。在这个技术转变中首先就是对携程网站的改版和页面提速。经过改版后,页面的设计风格也和以前不同。WEB页面使用HTML完成静态页面制作并用CSS提炼出统一规格的样式表,实现交互效果为动态JS做好铺垫,完成页面并对网站前端性能不断优化。
同时携程提出“Open API Everywhere”战略,提供公开的API的方式,形成一站式的平台;早在2010年,携程就组建了专门的团队,从一开始最简单的形式到分销广告的形式,经过一年多的研究和开发,于2012年才第一次发布了开放API正式版本,团队也发展到近百人。
无线App
在了解携程的基础架构和前端服务后,我们来看看移动端业务的发展概况。目前携程的无线App在携程的业务里所占比重超过70%。携程在2015年初在QCon上讲解了他们的无线系统架构。介绍了在Mobile 2.0下客户端H5/Hybrid/Native和服务端(H5 Service & Moblie Service)的架构调整和技术变迁,通过这些调整满足业务发展的需求并提高系统的稳定性。
图2:无线架构
http://img2.ph.126.net/afxotrJsgD5ZdSo1WLTV-g==/6631305260212002449.png
在网络方面,为了优化网络性能,实现连得上,连得快,传输时间短的目标,经过了一系列优化网络探索,如:优化DNS解析和缓存;提供网络服务优先级和依赖机制;优化海外网络性能等。并基于Elastic Search开发了网络实时监控Portal,能够实时监控所有的网络服务。经过优化后,用户感知的核心服务成功率达到99%。 另一方面为了增强携程网的稳定性,携程基于Netflix公司的开源项目Zuul开发了携程无线Gateway。无线解耦是携程一次里程碑式的架构变迁,无线Gateway为这次变迁提供了重要的支撑。Gateway的职能是负责接收来自无线端的所有API请求,并把他们路由到正确的地方。提供限流、隔离、熔断策略,保证长期稳定运行,拥有弹性容错机制减少了日常运维工作。同时提供了多维度的监控数据,并与报警系统对接,实时监控线上情况,尽可能实现了运维自动化。
携程在2014年开始就成立团队研究如何通过可穿戴设备提供用户旅行相关服务。最开始基于Android Wear的Moto360圆盘手表,开发了接近传统手表的智能手表。在Apple Watch发布之后,很多App都针对它设计了相应的版本。旅行作为与Apple Watch时间管理特性契合度较高的场景,携程也于2014年开始对Apple Watch进行了适配开发,并成为App Store推荐的应用之一。携程在Apple Watch上提供的主要服务有:旅行日程,航班动态的通知,待入住酒店地图和导航,发现周边好玩等。
由于无线业务占总体业务的70%,App下载量多达8亿,同时机型几十种,对于测试的要求相应提高,需要通过自动化测试提高效率。从2014年开始,携程就开始慢慢摸索出自己的自动化测试方案。覆盖主流机型,实现了无线持续集成。开发阶段引入测试,发现代码隐患,后期进行自动化回归测试来保证App质量。
总结
携程从线下到线上的成功转变,离不开技术在背后的默默支撑。从携程的转型之路上我们可以看到,它的技术路线并不十分激进,在恰当的时机引入适合的技术,是携程的成功之道,携程的案例,对那些急于转型的传统企业也是很好的启示。