微信号:infoqchina

介绍:有内容的技术社区媒体

中国技术力量:携程的技术演进之路

2015-11-04 08:15 杜小芳

导语

携程今年动作不断,继5月份收购艺龙后,前不久又宣布了与去哪儿合并,成为国内在线旅游领域当之无愧的霸主。那么一路走来,技术是如何支撑携程成长到今天的地位,我们基于过去三年携程在QCon会议中分享的十几篇技术主题内容,从一个独特视角来下分析下携程技术的演进之路。


在今年11月17日QCon旧金山的中国技术开放日专场上,携程旅行网CTO叶亚明(Eric Ye)先生也将上台与大家分享携程的技术演化进程。

基础架构



携程在多年的发展中不断进行架构优化,逐步采用分布式架构,解耦业务和架构,提高可扩展性,现在已逐步进化到大量采用开源技术的Java+.Net (.Net主要是为了兼容历史业务)混合技术栈。


携程从2013年开始使用OpenStack将基础设施标准化,实现快速部署,帮助减少运维成本。携程曾在QCon上分享过使用OpenStack打造携程私有云的经验,基于OpenStack进行二次开发,综合了KVM,VMware和Docker,网络虚拟化使用了Neutron OpenVSwitch + VLan以及VMware的Nova-VMware-Drive,打造了携程私有云。


携程目前拥有网页Online业务,呼叫中心Offline业务和移动Mobile业务。而在几年前,携程曾有相当比重业务集中在Offline,实施云架构后,以虚拟桌面云替代PC桌面。呼叫中心虚拟云桌面是一个独特的OpenStack应用场景。所有呼叫中心员工办公只需一个云客户端和一个显示器,桌面都运行在云端。虚拟桌面云的整个平台,包括后端对桌面、云终端运维管理、资源分配调度、动态伸缩等功能。经过这样的技术变革后,携程拥有了在线旅游业界规模最大的多呼叫中心。


为了保证后端业务处理的实时性,降低系统耦合度,增加吞吐量和提高可靠性,携程研发了新一代异步消息队列系统Hermes,可实现消息追踪和全面的监控治理。携程在2015年QCon上分享了异步消息队列系统的开发实践经验。


携程拥有多个数据中心,一方面支撑业务的高速成长,另一方面提高网站的高可用性,这些离不开高效的发布和监控体系。在线交易增长背后伴随着应用发布数量、服务器数量、网站流量的不断上升,而运维伴随着携程的发展成为一个新的挑战。携程构建了自己的自动化发布和监控体系,不断在人员组织、发布监控工具和流程定义上进行探索和磨合,形成的监控体系能先于人工及时发现网站问题。

搜索技术


携程需要在大量的旅游产品线中快速帮用户找到合适的产品,携程利用后台大规模数据挖掘和实时索引功能不断完善自己的搜索引擎,在Lucene API的基础上,设计开发易扩展的搜索架构,快速支持例如全站搜索等全新产品线。在2014年QCon大会上携程介绍了他们在垂直搜索架构上所做的探索工作。

安全


携程也会经常遇到一些常见的恶意请求和攻击,如抓数据、恶意扫描、发垃圾信息等等,对用户、服务器、带宽造成损失。携程通过自身摸索,建立了一系列基于大规模日志分析的规则引擎、实时计算的安全分析产品(2014年QCon会议分享)。

移动技术


目前携程无线App上的业务量在携程总业务量所占比重已超过70%,移动技术无疑是重点。携程2014年便在QCon上分享了他们的全新无线系统架构,介绍了H5/Hybrid/Native客户端和服务端(H5/Mobile Service)的架构调整和技术变迁,通过这些技术升级来满足业务发展需求并提高系统稳定性。

为了增强无线服务的稳定性,携程基于Netflix的开源项目Zuul开发了无线Gateway。无线解耦是携程一次里程碑式的技术和业务变迁,无线Gateway为这次变迁提供了重要的支撑。Gateway的职能是负责接收来自无线端的所有API请求,并将他们路由到正确的目标应用服务器,并且提供限流、隔离、熔断等功能,保证了无线服务的长期稳定运行,拥有的弹性容错机制也减少了日常运维工作。同时该Gateway提供了多维度的监控数据,并与报警系统对接,实时监控线上情况,达到运维自动化。


在网络方面,为了优化网络性能,实现连得上,连得快,传输时间短的目标,经过了一系列App端网络性能优化探索,采用了如优化DNS解析和缓存、提供网络服务优先级和依赖机制、优化海外网络性能等手段优化网络性能,并且基于Elastic Search开发了网络实时监控Portal,实时监控所有的网络服务。经过优化后,用户感知到的端到端网络服务成功率达到99.7%以上。


由于携程App下载量已达8亿多,涉及各类机型几十种,对于测试的要求相应提高,需要通过自动化测试提高效率。从2014年开始,携程便开始摸索自己的移动App自动化测试方案,覆盖主流机型,实现无线App持续集成和自动化测试。


移动产品方面,携程从2014年就成立团队研究如何通过可穿戴设备提供旅行相关服务,曾开发过基于Android Wear的Moto360智能手表应用。Apple Watch发布后,旅行作为与Apple Watch时间管理特性契合度较高的场景,携程很快对Apple Watch进行了适配开发,提供了诸如旅行日程、航班动态的通知、待入住酒店地图和导航、发现周边等功能,成为被苹果App Store多次推荐的应用。


总结


携程从线下到线上的成功转变,离不开技术在背后的强力支撑。从携程的转型之路上我们可以看到,它的技术路线并不激进,在恰当的时机引入合适的技术,是携程的成功之道,携程的技术演进案例,对那些急于技术转型的企业也是很好的启示。



ChinaTech Day

输出中国技术力量到国际舞台,促进中美技术交流,展示中国技术实力,百名CTO为中国技术力量代言,让世界为中国技术人骄傲!


戳“阅读原文”了解百名CTO代言中国技术力量
 
InfoQ 更多文章 Facebook如何实现PB级别数据库自动化备份 学术派Google软件工程师Matt Welsh谈移动开发趋势 Spotify为什么要使用一些“无聊”的技术? 妹纸们放假了,汉纸们做啥? 大多数重构可以避免
猜您喜欢 性能和可读性 2016商业趋势:电商的未来是小众市场 Mysql max_allowed_packet 被修改设置为1GB或者1024B原因 五分钟读懂UML类图