導(dǎo)語:攜程今年動作不斷,繼5月份收購藝龍后,前不久又宣布了與去哪兒合并,成為國內(nèi)在線旅游領(lǐng)域當(dāng)之無愧的霸主。那么一路走來,技術(shù)是如何支撐攜程成長到今天的地位,我們基于過去三年攜程在QCon會議中分享的十幾篇技術(shù)主題內(nèi)容,從一個獨(dú)特視角來下分析下攜程技術(shù)的演進(jìn)之路。
在今年11月17日QCon舊金山的中國技術(shù)開放日專場上,攜程旅行網(wǎng)CTO葉亞明(Eric Ye)先生也將上臺與大家分享攜程的技術(shù)演化進(jìn)程。
基礎(chǔ)架構(gòu):
攜程在多年的發(fā)展中不斷進(jìn)行架構(gòu)優(yōu)化,逐步采用分布式架構(gòu),解耦業(yè)務(wù)和架構(gòu),提高可擴(kuò)展性,現(xiàn)在已逐步進(jìn)化到大量采用開源技術(shù)的Java+.Net (.Net主要是為了兼容歷史業(yè)務(wù))混合技術(shù)棧。
攜程從2013年開始使用OpenStack將基礎(chǔ)設(shè)施標(biāo)準(zhǔn)化,實(shí)現(xiàn)快速部署,幫助減少運(yùn)維成本。攜程曾在QCon上分享過使用OpenStack打造攜程私有云的經(jīng)驗(yàn),基于OpenStack進(jìn)行二次開發(fā),綜合了KVM,VMware和Docker,網(wǎng)絡(luò)虛擬化使用了Neutron OpenVSwitch + VLan以及VMware的Nova-VMware-Drive,打造了攜程私有云。
攜程目前擁有網(wǎng)頁Online業(yè)務(wù),呼叫中心Offline業(yè)務(wù)和移動Mobile業(yè)務(wù)。而在幾年前,攜程曾有相當(dāng)比重業(yè)務(wù)集中在Offline,實(shí)施云架構(gòu)后,以虛擬桌面云替代PC桌面。呼叫中心虛擬云桌面是一個獨(dú)特的OpenStack應(yīng)用場景。所有呼叫中心員工辦公只需一個云客戶端和一個顯示器,桌面都運(yùn)行在云端。虛擬桌面云的整個平臺,包括后端對桌面、云終端運(yùn)維管理、資源分配調(diào)度、動態(tài)伸縮等功能。經(jīng)過這樣的技術(shù)變革后,攜程擁有了在線旅游業(yè)界規(guī)模最大的多呼叫中心。
為了保證后端業(yè)務(wù)處理的實(shí)時性,降低系統(tǒng)耦合度,增加吞吐量和提高可靠性,攜程研發(fā)了新一代異步消息隊(duì)列系統(tǒng)Hermes,可實(shí)現(xiàn)消息追蹤和全面的監(jiān)控治理。攜程在2015年QCon上分享了異步消息隊(duì)列系統(tǒng)的開發(fā)實(shí)踐經(jīng)驗(yàn)。
攜程擁有多個數(shù)據(jù)中心,一方面支撐業(yè)務(wù)的高速成長,另一方面提高網(wǎng)站的高可用性,這些離不開高效的發(fā)布和監(jiān)控體系。在線交易增長背后伴隨著應(yīng)用發(fā)布數(shù)量、服務(wù)器數(shù)量、網(wǎng)站流量的不斷上升,而運(yùn)維伴隨著攜程的發(fā)展成為一個新的挑戰(zhàn)。攜程構(gòu)建了自己的自動化發(fā)布和監(jiān)控體系,不斷在人員組織、發(fā)布監(jiān)控工具和流程定義上進(jìn)行探索和磨合,形成的監(jiān)控體系能先于人工及時發(fā)現(xiàn)網(wǎng)站問題。
搜索技術(shù):
攜程需要在大量的旅游產(chǎn)品線中快速幫用戶找到合適的產(chǎn)品,攜程利用后臺大規(guī)模數(shù)據(jù)挖掘和實(shí)時索引功能不斷完善自己的搜索引擎,在Lucene API的基礎(chǔ)上,設(shè)計(jì)開發(fā)易擴(kuò)展的搜索架構(gòu),快速支持例如全站搜索等全新產(chǎn)品線。在2014年QCon大會上攜程介紹了他們在垂直搜索架構(gòu)上所做的探索工作。
安全:
攜程也會經(jīng)常遇到一些常見的惡意請求和攻擊,如抓數(shù)據(jù)、惡意掃描、發(fā)垃圾信息等等,對用戶、服務(wù)器、帶寬造成損失。攜程通過自身摸索,建立了一系列基于大規(guī)模日志分析的規(guī)則引擎、實(shí)時計(jì)算的安全分析產(chǎn)品(2014年QCon會議分享)。
移動技術(shù):
目前攜程無線App上的業(yè)務(wù)量在攜程總業(yè)務(wù)量所占比重已超過70%,移動技術(shù)無疑是重點(diǎn)。攜程2014年便在QCon上分享了他們的全新無線系統(tǒng)架構(gòu),介紹了H5/Hybrid/Native客戶端和服務(wù)端(H5/Mobile Service)的架構(gòu)調(diào)整和技術(shù)變遷,通過這些技術(shù)升級來滿足業(yè)務(wù)發(fā)展需求并提高系統(tǒng)穩(wěn)定性。
為了增強(qiáng)無線服務(wù)的穩(wěn)定性,攜程基于Netflix的開源項(xiàng)目Zuul開發(fā)了無線Gateway。無線解耦是攜程一次里程碑式的技術(shù)和業(yè)務(wù)變遷,無線Gateway為這次變遷提供了重要的支撐。Gateway的職能是負(fù)責(zé)接收來自無線端的所有API請求,并將他們路由到正確的目標(biāo)應(yīng)用服務(wù)器,并且提供限流、隔離、熔斷等功能,保證了無線服務(wù)的長期穩(wěn)定運(yùn)行,擁有的彈性容錯機(jī)制也減少了日常運(yùn)維工作。同時該Gateway提供了多維度的監(jiān)控?cái)?shù)據(jù),并與報(bào)警系統(tǒng)對接,實(shí)時監(jiān)控線上情況,達(dá)到運(yùn)維自動化。
在網(wǎng)絡(luò)方面,為了優(yōu)化網(wǎng)絡(luò)性能,實(shí)現(xiàn)連得上,連得快,傳輸時間短的目標(biāo),經(jīng)過了一系列App端網(wǎng)絡(luò)性能優(yōu)化探索,采用了如優(yōu)化DNS解析和緩存、提供網(wǎng)絡(luò)服務(wù)優(yōu)先級和依賴機(jī)制、優(yōu)化海外網(wǎng)絡(luò)性能等手段優(yōu)化網(wǎng)絡(luò)性能,并且基于Elastic Search開發(fā)了網(wǎng)絡(luò)實(shí)時監(jiān)控Portal,實(shí)時監(jiān)控所有的網(wǎng)絡(luò)服務(wù)。經(jīng)過優(yōu)化后,用戶感知到的端到端網(wǎng)絡(luò)服務(wù)成功率達(dá)到99.7%以上。
由于攜程App下載量已達(dá)8億多,涉及各類機(jī)型幾十種,對于測試的要求相應(yīng)提高,需要通過自動化測試提高效率。從2014年開始,攜程便開始摸索自己的移動App自動化測試方案,覆蓋主流機(jī)型,實(shí)現(xiàn)無線App持續(xù)集成和自動化測試。
移動產(chǎn)品方面,攜程從2014年就成立團(tuán)隊(duì)研究如何通過可穿戴設(shè)備提供旅行相關(guān)服務(wù),曾開發(fā)過基于Android Wear的Moto360智能手表應(yīng)用。Apple Watch發(fā)布后,旅行作為與Apple Watch時間管理特性契合度較高的場景,攜程很快對Apple Watch進(jìn)行了適配開發(fā),提供了諸如旅行日程、航班動態(tài)的通知、待入住酒店地圖和導(dǎo)航、發(fā)現(xiàn)周邊等功能,成為被蘋果App Store多次推薦的應(yīng)用。
總結(jié):
攜程從線下到線上的成功轉(zhuǎn)變,離不開技術(shù)在背后的強(qiáng)力支撐。從攜程的轉(zhuǎn)型之路上我們可以看到,它的技術(shù)路線并不激進(jìn),在恰當(dāng)?shù)臅r機(jī)引入合適的技術(shù),是攜程的成功之道,攜程的技術(shù)演進(jìn)案例,對那些急于技術(shù)轉(zhuǎn)型的企業(yè)也是很好的啟示。