人稱“博師傅”的滴滴打車CTO張博這樣描述:“三年來,基本天天都在‘打仗’。每天一睜眼就要想生和死的問題。比誰能最先穩(wěn)定,能將用戶留住,誰就是勝利者。我們用技術(shù)和時間賽跑。而生死時速之后,我們開心地發(fā)現(xiàn)沉淀了非常多的寶貴經(jīng)驗,培養(yǎng)了大批優(yōu)秀的實戰(zhàn)人才。”
2012年成立的滴滴打車,僅用了三年時間就書寫了:覆蓋300個城市,用戶數(shù)從2200萬增到1.5億,月活躍用戶增長了600多倍(2014年平安夜當(dāng)天,全國用滴滴打車出行人數(shù)超過了3000萬人),打車成功率高于90%……這些永遠(yuǎn)會被銘記在移動互聯(lián)網(wǎng)歷史中的神奇記錄。而不為人知的是,支撐滴滴打車如此龐大用戶數(shù)量的架構(gòu),以及那些曾無數(shù)次不眠不休應(yīng)對挑戰(zhàn)的技術(shù)伙伴們。
三款產(chǎn)品背后的架構(gòu)變遷
滴滴打車成立初衷是為了解決司機(jī)與乘客之間的信息不對稱的問題,通過移動互聯(lián)網(wǎng)和智能手機(jī)來打破信息的壁壘。從打車到專車再到順風(fēng)車,滴滴打車三款產(chǎn)品的背后是架構(gòu)的挑戰(zhàn)和系統(tǒng)的變遷。
CSDN:如果從產(chǎn)品角度來看,滴滴打車發(fā)展有幾個階段?作為CTO,你的工作重點有哪些?
張博:滴滴打車成立初衷就是為了解決司機(jī)與乘客之間的信息不對稱的問題。乘客和司機(jī)通過傳統(tǒng)手段往往無法實現(xiàn)信息對接,一方是打不到車或被拒載;另一方是空車行駛耗時耗力耗費資源。這是信息的壁壘,完全可以通過移動互聯(lián)網(wǎng)和智能手機(jī)來打破。而在后續(xù)運營中,我們發(fā)現(xiàn)即使出租車空駛降低到O,也無法滿足早晚高峰乘客出行需求。以北京為例,出租車10.6萬輛,但人口卻有2000萬常住人口,1000萬流動人口。要匹配這樣的需求需要集中社會用力,調(diào)度社會資源,這就是滴滴打車的第二款產(chǎn)品——滴滴專車。目前專車訂單量已經(jīng)逼近出租車訂單量,而車租車訂單量沒有下降,顯然撬動的是新增量市場。第三款產(chǎn)品是順風(fēng)車,滿足的場景很有代表性。通過滴滴大數(shù)據(jù)分析系統(tǒng),發(fā)現(xiàn)很多人居住地和工作地都比較接近,收入水平相當(dāng),行業(yè)屬性相近,這些人往往都會使用出租車或?qū)\?,如果能夠?qū)⑿枨蠛喜ⅲ@然無論是幫助乘客提供低成本出行,還是節(jié)省社會資源,都很有價值。更有趣的是,其上增加了社交屬性,人們可以結(jié)交新的朋友,出行變得更有意思。作為CTO,我的工作主要有三部分:第一是產(chǎn)品,第二是工程技術(shù),第三是大數(shù)據(jù)。
CSDN:三款產(chǎn)品代表了滴滴打車的不同發(fā)展階段。相信每個階段背后的架構(gòu)都有很明顯的特征?
張博:2012年滴滴打車剛成立時,流量很小,不需要架構(gòu),2臺服務(wù)器就能解決所有問題。隨著快速的發(fā)展,第一次發(fā)現(xiàn)性能瓶頸是在2014年初“補(bǔ)貼大戰(zhàn)”時,我們的訂單量一周之內(nèi)漲了50倍。而當(dāng)時的預(yù)估是增加10%。500%對10%,結(jié)果可想而知。網(wǎng)絡(luò)、存儲等故障不斷,Webserver和MySQL也頻出問題。團(tuán)隊所面臨的挑戰(zhàn)非常大。更為緊張的是,靠傳統(tǒng)采購機(jī)器來實現(xiàn)擴(kuò)張,顯然完全無法滿足業(yè)務(wù)需要。通過分析比較,我們最終決定整體搬到騰訊云中。這是面對高并發(fā)、海量數(shù)據(jù)挑戰(zhàn)時,架構(gòu)的第一次非常大的調(diào)整。但搬遷也并非一帆風(fēng)順,代碼需要做大量重構(gòu),來解決技術(shù)上的單點問題。
第二次架構(gòu)變化是在第二款產(chǎn)品滴滴專車時,因為最初架構(gòu)設(shè)計是為支撐一款產(chǎn)品,而今架構(gòu)要同時支撐多款產(chǎn)品。產(chǎn)品之間,有相同也有不同。為此,我們特別成立了技術(shù)架構(gòu)部,將通用型服務(wù)下沉到架構(gòu),避免重復(fù)造輪子,將個性化服務(wù)放到業(yè)務(wù)層,實現(xiàn)服務(wù)開發(fā)。舉個例子,比如支付、賬號體系、計算、存儲等,都是通用型服務(wù),可以放到架構(gòu)中。這次架構(gòu)重構(gòu)是比較成功的,也正是這樣的組織和技術(shù)變化,所以在第三款產(chǎn)品順風(fēng)車的時候,以及我們馬上發(fā)布的更多新產(chǎn)品時,都可以得到很順暢的支撐和服務(wù)。
CSDN:業(yè)內(nèi)對滴滴打車當(dāng)時遇到的挑戰(zhàn)印象深刻。當(dāng)時和騰訊云在技術(shù)方面有哪些合作?
張博:當(dāng)時滴滴打車已經(jīng)接受了騰訊的投資,和騰訊云自然比較親近。而且騰訊云也已經(jīng)歷了Q Q和微信海量用戶高并發(fā)的考驗,比如春節(jié)紅包,穩(wěn)定性和經(jīng)驗是毋庸置疑的。和騰訊云的合作,在技術(shù)方面有三個方向:首先是安全,在滴滴打車發(fā)展過程中,遭受了多次黑客攻擊,所以安全對我們至關(guān)重要,而騰訊云的大禹安全體系可以很好地幫助我們;其次是CDN等網(wǎng)絡(luò)服務(wù),有些技術(shù)是創(chuàng)業(yè)公司很難實現(xiàn)的。比如網(wǎng)絡(luò)層優(yōu)化,用戶手機(jī)發(fā)送訂單時,需要接入最近的基站,需要找到最優(yōu)質(zhì)鏈路,這些只有投入巨大人力物力的企業(yè)才能實現(xiàn)。而這些服務(wù)對用戶體驗極為重要,所以初創(chuàng)企業(yè)通過云服務(wù)反而可以走的更快更好;第三是在基礎(chǔ)平臺構(gòu)建等方面節(jié)省大量人力,如硬件采購、硬件運維等,不需要費心費力,而是可以將更多精力集中到應(yīng)用層和業(yè)務(wù)層,以及其他更有價值的數(shù)據(jù)分析等新技術(shù)方面。實際上,當(dāng)時在補(bǔ)貼大戰(zhàn)時,作為一個當(dāng)時僅1年半的初創(chuàng)企業(yè),在如此大流量面前是根本頂不住的。也正是那時,騰訊高級架構(gòu)師直接駐場,和我們建立了兄弟般的友誼。
CSDN:騰訊云新品發(fā)布速度很快。后續(xù)滴滴打車還會重點用到哪些新服務(wù)?
張博:滴滴打車和騰訊云是深度合作的,安全、網(wǎng)絡(luò)、運維之外,還有優(yōu)化整體系統(tǒng),部分調(diào)優(yōu)、新產(chǎn)品實踐等。滴滴打車甚至?xí)钊氲津v訊新業(yè)務(wù)中,比如征信系統(tǒng)。通過滴滴打車平臺收集的乘客/司機(jī)的爽約次數(shù)、爽約頻率等都會成為一個數(shù)據(jù)源。再如未來順風(fēng)車中,基于大數(shù)據(jù)分析,如何為一個互聯(lián)網(wǎng)的屌絲優(yōu)先匹配一個互聯(lián)網(wǎng)女神,這些有趣的場景在底層都需要數(shù)據(jù)交換的。需要應(yīng)用到騰訊云更多的新技術(shù),新服務(wù)。我們雙方都非常開放,希望能夠給社會創(chuàng)造更大價值。
CSDN:攜程、藝龍事件之后,CTO們更加重視數(shù)據(jù)安全。滴滴打車在安全方面如何規(guī)劃的?
張博:目前滴滴打車大部分服務(wù)都在云上,也有部分服務(wù)是通過租賃騰訊機(jī)房自己運維的。整體架構(gòu)是混合云的模式。安全對每個公司而言都很私密?,F(xiàn)在內(nèi)部有嚴(yán)格的安全控制,外部主要是通過騰訊云,如防黑客攻擊,如DDos攻擊等。安全防護(hù)是沒有止境的,我們需要做的工作還有很多。
開源優(yōu)化構(gòu)建技術(shù)核心競爭力
滴滴打車正在滴米系統(tǒng)、用戶畫像系統(tǒng)、精準(zhǔn)營銷、智能匹配、需求預(yù)測系統(tǒng)和運能預(yù)測系統(tǒng)等方面構(gòu)建自己的技術(shù)核心競爭力。在研發(fā)的路上,大數(shù)據(jù)、機(jī)器學(xué)習(xí)不僅是滴滴打車產(chǎn)品的心臟,還是滴滴打車商業(yè)的心臟。
CSDN:2015年在滴米系統(tǒng)、用戶畫像系統(tǒng)、精準(zhǔn)營銷、智能匹配、需求預(yù)測系統(tǒng)和運能預(yù)測系統(tǒng)等方面,滴滴大數(shù)據(jù)技術(shù)逐步深入。那么研發(fā)的整體思路是怎么樣的?
張博:是的。大數(shù)據(jù)是滴滴打車的心臟。不只是滴滴打車產(chǎn)品的心臟,還是滴滴打車商業(yè)的心臟。我們的研發(fā)的基本原則是想辦法撮合乘客和司機(jī),滿足他們的需求,保證他們的體驗。舉個例子,某一個時刻在中關(guān)村,同時出現(xiàn)很多訂單,周圍有很多司機(jī)。我們要做的決策是:將訂單發(fā)送給合適的司機(jī)。因為司機(jī)在任何時刻都只能聽到同時爆發(fā)訂單中的一個。所以匹配要準(zhǔn)確,那么背后就是推薦算法要準(zhǔn)確,匹配效率要高,計算要快,推送要及時。這還不夠。我們在推送訂單到這位司機(jī)之前,應(yīng)該先預(yù)測他對訂單感興趣的程度,廣告領(lǐng)域稱為CTR,我們稱為STR。在后驗過程中,滴滴可以做到80%的準(zhǔn)確度。其中,不僅要計算司機(jī)的個人特征,還要結(jié)合其決策體系,如喜好,是對小費敏感,長短途敏感,時間敏感,還是對方向敏感等靜態(tài)特征和司機(jī)和訂單之間的位置關(guān)系、時間關(guān)系等動態(tài)特征進(jìn)行綜合分析。除此以外,還有補(bǔ)貼,給乘客什么樣的補(bǔ)貼,給司機(jī)什么樣的補(bǔ)貼,誰更敏感,多少金額影響更積極,這些策略的背后都是大數(shù)據(jù)在起作用。我們希望用有限的資源最大化提升用戶的質(zhì)量和活躍度,這不可能通過人肉實現(xiàn),只有技術(shù)才能實現(xiàn)這些。而實現(xiàn)的過程中,對架構(gòu)、運營、產(chǎn)品等挑戰(zhàn)都很大。
CSDN:滴滴打車在大數(shù)據(jù)方面是傾向于開源技術(shù)優(yōu)化還是自主研發(fā)?
張博:我們業(yè)務(wù)分了幾層?;径际鞘褂玫拈_源技術(shù)?;A(chǔ)層面是數(shù)據(jù)平臺,主要是大數(shù)據(jù)計算和存儲,用的是業(yè)內(nèi)比較成熟的開源系統(tǒng),Hadoop。基礎(chǔ)層上是自建的數(shù)據(jù)倉庫,然后是策略架構(gòu),通過實驗平臺讓策略迭代更加敏捷,如快速提取特征完成模型訓(xùn)練,并通過小流量測試驗證模型,通過后迅速上線。這些都是工程方面的研發(fā)。再上面是機(jī)器學(xué)習(xí),滴滴打車現(xiàn)在每天涌入的數(shù)據(jù)接近10TB,通過不斷搜集用戶標(biāo)準(zhǔn)數(shù)據(jù)特征,優(yōu)化機(jī)器學(xué)習(xí)模型。比如推送給司機(jī)訂單,司機(jī)是否搶單,這就是一個天然的標(biāo)注。而通過這些標(biāo)注,就可以優(yōu)化學(xué)習(xí)體系。最上面就是整個大數(shù)據(jù)體系,支持新產(chǎn)品開發(fā)和策略決策。在我看來,目前很多開源項目演化的比較穩(wěn)定,性能表現(xiàn)也不錯,沒有必要從頭開始搭積木了,盡快將技術(shù)服務(wù)于應(yīng)用最重要。而在不斷實踐中,通過對開源技術(shù)的改進(jìn)和優(yōu)化,在反饋給社區(qū),我們是愿意這樣做的。
CSDN:人工智能發(fā)展速度很快。滴滴在機(jī)器學(xué)習(xí)方面已經(jīng)到了什么樣的程度?
張博:我們馬上會有重量級產(chǎn)品發(fā)布。滴滴大數(shù)據(jù)領(lǐng)域負(fù)責(zé)人是機(jī)器學(xué)習(xí)領(lǐng)域世界級頂尖學(xué)者何曉飛。我們在機(jī)器學(xué)習(xí)的投入是相當(dāng)巨大的。
CSDN:哪些寶貴的經(jīng)驗可以分享出來?
張博:第一是如何應(yīng)對大流量、高并發(fā)的挑戰(zhàn)。比如每一個接口可能被訪問頻次如何設(shè)計,背后訪問多少次緩存,數(shù)據(jù)庫會讀寫多少次,后端每一個服務(wù),瞬間并發(fā)量能到什么級別,每一層壓力測試要扛住多大讀寫并發(fā),10臺機(jī)器能扛住多大讀寫并發(fā)等,都要做到心中有數(shù)。再比如每一次營銷活動前,要對系統(tǒng)做一次體檢,評估到底可以承接多大的量。第二是要有非常好的運維工具,要能實時監(jiān)測線上每一個后端服務(wù)模塊的負(fù)載,能夠及時發(fā)現(xiàn)問題并報警。第三是設(shè)定多套應(yīng)急預(yù)案,當(dāng)問題發(fā)生時,團(tuán)隊可以盡快反應(yīng),做準(zhǔn)備好的動作。第四是要有降級策略,在大流量沖擊下,要優(yōu)先保證主流層。對滴滴而言就是發(fā)單,用戶發(fā)單、司機(jī)搶單是主流程,在這樣的特殊情況中,積分商城等都是非主流層,可以被舍棄。
“我最開心的是,大家都飛速成長”
每一次生死戰(zhàn)役,都是拼命在和時間賽跑。而每一次戰(zhàn)役勝利之后,都為滴滴打車培養(yǎng)了優(yōu)秀的實戰(zhàn)人才。最讓張博開心的是,團(tuán)隊成員在飛速的成長的同時,沒有一個流失。
CSDN:滴滴打車成立只有三年,但對產(chǎn)業(yè)的影響有目共睹。作為技術(shù)負(fù)責(zé)人,你認(rèn)為最大的挑戰(zhàn)是什么?
張博:這三年,基本上每天都在打仗。每天都是一睜眼就要想生和死的問題。就像補(bǔ)貼大戰(zhàn)時,一周數(shù)據(jù)漲了50倍,但我們完全無法應(yīng)對。當(dāng)時甚至出現(xiàn)了這樣一幕,每到高峰,我們就宕機(jī)。我們宕機(jī),對手就宕機(jī)。因為以用戶都去他們那邊了。當(dāng)然,他們宕機(jī),我們也宕機(jī)。當(dāng)時比的是誰先穩(wěn)定下來,誰能把用戶留住。當(dāng)時就是拼命在和時間賽跑,我們團(tuán)隊60多人曾7天7夜沒有睡覺,吃住在公司。走過以后,回頭看看,發(fā)現(xiàn)我們沉淀了非常多的寶貴經(jīng)驗,也用實戰(zhàn)培養(yǎng)了更多的人才。也許,很難說一周之內(nèi)就好像變了一個人,但三年來,平均每幾個月就要闖一次生死關(guān),過去了迎來新機(jī)會,過不去就死了。這樣的壓力下,你自己都會驚訝于自己的成長速度。一個快速成長的行業(yè),一個快速發(fā)展的企業(yè),你的快速成長是必然的。很多人都知道,在創(chuàng)業(yè)前,我在百度做搜索技術(shù),那個時候只要在策略方面做好就可以,下面的基礎(chǔ)設(shè)施層,如計算存儲層都不要考慮。而在滴滴幾乎負(fù)責(zé)各個層面,要搭建系統(tǒng)、要應(yīng)對業(yè)務(wù)挑戰(zhàn)、要做更多產(chǎn)品設(shè)計?;緵]辦法枚舉更多了,所以最大的挑戰(zhàn)就是應(yīng)對挑戰(zhàn)加速成長。
CSDN:如何評價和你“共生死”的團(tuán)隊?
張博:我的團(tuán)隊非常優(yōu)秀,正因為經(jīng)歷了非常多的生死戰(zhàn)役,他們每個人的成長速度會是大公司的2-3倍。也許2-3年前,他們還只是大公司技術(shù)團(tuán)隊的不知名的一員,但現(xiàn)在他們已經(jīng)是滴滴打車的頂梁柱,承擔(dān)了非常重要的工作。比如曾經(jīng)一個iOS工程師如今負(fù)責(zé)滴滴公共產(chǎn)品和技術(shù),已經(jīng)成為全棧選手。這樣的例子還有很多。我最開心的也是這一點,看到他們飛速的成長,而且從入職開始,沒有一個流失。我們下一步會建立滴滴技術(shù)學(xué)院,每一個角色都有技術(shù)成長路線圖,會有導(dǎo)師輔導(dǎo),會有定期培訓(xùn)。我們也會引入高精尖人才,比如何教授等,請這些頂級專家?guī)ьI(lǐng)大家走下去。
CSDN:滴滴快的合并后,實施聯(lián)合CEO制度,人員架構(gòu)不變。但在技術(shù)團(tuán)隊方面是否會有合并?
張博:技術(shù)平臺和相應(yīng)的架構(gòu)正在做合并。我們希望變成不同的專業(yè)團(tuán)隊,將所負(fù)責(zé)領(lǐng)域做深,做精,幫助業(yè)務(wù)跑的更快。
CSDN:未來技術(shù)規(guī)劃是如何考慮的?
張博:加大在大數(shù)據(jù)等方面的持續(xù)投入,加大在基礎(chǔ)架構(gòu)層面的投入。我們看到硅谷很多企業(yè)在大規(guī)模分布式計算、存儲和機(jī)器學(xué)習(xí)的平臺的投入是巨大的。比如谷歌通過對MapReduce的優(yōu)化,使得其計算要遠(yuǎn)勝于其他平臺。我們在這些方面也要繼續(xù)學(xué)習(xí),完善在技術(shù)方面的核心競爭力。
CSDN:你的轉(zhuǎn)型很成功。對于從CIO到CTO或者從技術(shù)骨干到CTO,這兩條不同的發(fā)展路徑,有什么好建議么?
張博:從CIO到CTO,要清晰認(rèn)識到技術(shù)為產(chǎn)品服務(wù),產(chǎn)品為商業(yè)服務(wù)。CTO要有商業(yè)眼光。倒推回來,CIO要從技術(shù)入手,支撐產(chǎn)品發(fā)展,進(jìn)而支撐公司現(xiàn)在和未來的商業(yè)計劃。簡單來說就是:從技術(shù)骨干到產(chǎn)品骨干,要懂互聯(lián)網(wǎng)產(chǎn)品、明白用戶需求,知道如何做出一款滿足用戶需求的產(chǎn)品、你要知道這些用戶過來了以后,商業(yè)模式是什么,企業(yè)如何創(chuàng)造利潤。而從技術(shù)骨干到CTO,難度更大。技術(shù)專家往往在某一領(lǐng)域精深,但要變成全能選手,就需要對每個領(lǐng)域都有所了解,找到這個領(lǐng)域真正的頂尖人才,然后組織起你的團(tuán)隊,駕馭團(tuán)隊實現(xiàn)目標(biāo)。
寫在最后:
成文之時,恰逢上海變成“海上”,朋友圈一片刷屏,呼喚“滴滴專船”。期待攜手騰訊云已經(jīng)完成架構(gòu)優(yōu)化的滴滴打車,能夠更加快速地推出更多滿足細(xì)分場景的創(chuàng)新產(chǎn)品。