騰訊雲專訪滴滴CTO張博:生死戰役,大資料、雲服務助跑

Web開發者發表於2015-06-26

  人稱“博師傅”的滴滴叫車CTO張博這樣描述:“三年來,基本天天都在‘打仗’。每天一睜眼就要想生和死的問題。比誰能最先穩定,能將使用者留住,誰就是勝利者。我們用技術和時間賽跑。而生死時速之後,我們開心地發現沉澱了非常多的寶貴經驗,培養了大批優秀的實戰人才。”

  2012年成立的滴滴叫車,僅用了三年時間就書寫了:覆蓋300個城市,使用者數從2200萬增到1.5億,月活躍使用者增長了600多倍(2014年平安夜當天,全國用滴滴叫車出行人數超過了3000萬人),叫車成功率高於90%……這些永遠會被銘記在移動網際網路歷史中的神奇記錄。而不為人知的是,支撐滴滴叫車如此龐大使用者數量的架構,以及那些曾無數次不眠不休應對挑戰的技術夥伴們。

  三款產品背後的架構變遷

  滴滴叫車成立初衷是為了解決司機與乘客之間的資訊不對稱的問題,通過移動網際網路和智慧手機來打破資訊的壁壘。從叫車到專車再到順風車,滴滴叫車三款產品的背後是架構的挑戰和系統的變遷。

  CSDN:如果從產品角度來看,滴滴叫車發展有幾個階段?作為CTO,你的工作重點有哪些?

  張博:滴滴叫車成立初衷就是為了解決司機與乘客之間的資訊不對稱的問題。乘客和司機通過傳統手段往往無法實現資訊對接,一方是打不到車或被拒載;另一方是空車行駛耗時耗力耗費資源。這是資訊的壁壘,完全可以通過移動網際網路和智慧手機來打破。而在後續運營中,我們發現即使計程車空駛降低到O,也無法滿足早晚高峰乘客出行需求。以北京為例,計程車10.6萬輛,但人口卻有2000萬常住人口,1000萬流動人口。要匹配這樣的需求需要集中社會用力,排程社會資源,這就是滴滴叫車的第二款產品——滴滴專車。目前專車訂單量已經逼近計程車訂單量,而車租車訂單量沒有下降,顯然撬動的是新增量市場。第三款產品是順風車,滿足的場景很有代表性。通過滴滴大資料分析系統,發現很多人居住地和工作地都比較接近,收入水平相當,行業屬性相近,這些人往往都會使用計程車或專車,如果能夠將需求合併,顯然無論是幫助乘客提供低成本出行,還是節省社會資源,都很有價值。更有趣的是,其上增加了社交屬性,人們可以結交新的朋友,出行變得更有意思。作為CTO,我的工作主要有三部分:第一是產品,第二是工程技術,第三是大資料。

  CSDN:三款產品代表了滴滴叫車的不同發展階段。相信每個階段背後的架構都有很明顯的特徵?

  張博:2012年滴滴叫車剛成立時,流量很小,不需要架構,2臺伺服器就能解決所有問題。隨著快速的發展,第一次發現效能瓶頸是在2014年初“補貼大戰”時,我們的訂單量一週之內漲了50倍。而當時的預估是增加10%。500%對10%,結果可想而知。網路、儲存等故障不斷,Webserver和MySQL也頻出問題。團隊所面臨的挑戰非常大。更為緊張的是,靠傳統採購機器來實現擴張,顯然完全無法滿足業務需要。通過分析比較,我們最終決定整體搬到騰訊雲中。這是面對高併發、海量資料挑戰時,架構的第一次非常大的調整。但搬遷也並非一帆風順,程式碼需要做大量重構,來解決技術上的單點問題。

  第二次架構變化是在第二款產品滴滴專車時,因為最初架構設計是為支撐一款產品,而今架構要同時支撐多款產品。產品之間,有相同也有不同。為此,我們特別成立了技術架構部,將通用型服務下沉到架構,避免重複造輪子,將個性化服務放到業務層,實現服務開發。舉個例子,比如支付、賬號體系、計算、儲存等,都是通用型服務,可以放到架構中。這次架構重構是比較成功的,也正是這樣的組織和技術變化,所以在第三款產品順風車的時候,以及我們馬上釋出的更多新產品時,都可以得到很順暢的支撐和服務。

  CSDN:業內對滴滴叫車當時遇到的挑戰印象深刻。當時和騰訊雲在技術方面有哪些合作?

  張博:當時滴滴叫車已經接受了騰訊的投資,和騰訊雲自然比較親近。而且騰訊雲也已經歷了QQ和微信海量使用者高併發的考驗,比如春節紅包,穩定性和經驗是毋庸置疑的。和騰訊雲的合作,在技術方面有三個方向:首先是安全,在滴滴叫車發展過程中,遭受了多次黑客攻擊,所以安全對我們至關重要,而騰訊雲的大禹安全體系可以很好地幫助我們;其次是CDN等網路服務,有些技術是創業公司很難實現的。比如網路層優化,使用者手機傳送訂單時,需要接入最近的基站,需要找到最優質鏈路,這些只有投入巨大人力物力的企業才能實現。而這些服務對使用者體驗極為重要,所以初創企業通過雲服務反而可以走的更快更好;第三是在基礎平臺構建等方面節省大量人力,如硬體採購、硬體運維等,不需要費心費力,而是可以將更多精力集中到應用層和業務層,以及其他更有價值的資料分析等新技術方面。實際上,當時在補貼大戰時,作為一個當時僅1年半的初創企業,在如此大流量面前是根本頂不住的。也正是那時,騰訊高階架構師直接駐場,和我們建立了兄弟般的友誼。

  CSDN:騰訊雲新品釋出速度很快。後續滴滴叫車還會重點用到哪些新服務?

  張博:滴滴叫車和騰訊雲是深度合作的,安全、網路、運維之外,還有優化整體系統,部分調優、新產品實踐等。滴滴叫車甚至會深入到騰訊新業務中,比如徵信系統。通過滴滴叫車平臺收集的乘客/司機的爽約次數、爽約頻率等都會成為一個資料來源。再如未來順風車中,基於大資料分析,如何為一個網際網路的屌絲優先匹配一個網際網路女神,這些有趣的場景在底層都需要資料交換的。需要應用到騰訊雲更多的新技術,新服務。我們雙方都非常開放,希望能夠給社會創造更大價值。

  CSDN:攜程、藝龍事件之後,CTO們更加重視資料安全。滴滴叫車在安全方面如何規劃的?

  張博:目前滴滴叫車大部分服務都在雲上,也有部分服務是通過租賃騰訊機房自己運維的。整體架構是混合雲的模式。安全對每個公司而言都很私密。現在內部有嚴格的安全控制,外部主要是通過騰訊雲,如防黑客攻擊,如DDos攻擊等。安全防護是沒有止境的,我們需要做的工作還有很多。

  開源優化構建技術核心競爭力

  滴滴叫車正在滴米系統、使用者畫像系統、精準營銷、智慧匹配、需求預測系統和運能預測系統等方面構建自己的技術核心競爭力。在研發的路上,大資料、機器學習不僅是滴滴叫車產品的心臟,還是滴滴叫車商業的心臟。

  CSDN:2015年在滴米系統、使用者畫像系統、精準營銷、智慧匹配、需求預測系統和運能預測系統等方面,滴滴大資料技術逐步深入。那麼研發的整體思路是怎麼樣的?

  張博:是的。大資料是滴滴叫車的心臟。不只是滴滴叫車產品的心臟,還是滴滴叫車商業的心臟。我們的研發的基本原則是想辦法撮合乘客和司機,滿足他們的需求,保證他們的體驗。舉個例子,某一個時刻在中關村,同時出現很多訂單,周圍有很多司機。我們要做的決策是:將訂單傳送給合適的司機。因為司機在任何時刻都只能聽到同時爆發訂單中的一個。所以匹配要準確,那麼背後就是推薦演算法要準確,匹配效率要高,計算要快,推送要及時。這還不夠。我們在推送訂單到這位司機之前,應該先預測他對訂單感興趣的程度,廣告領域稱為CTR,我們稱為STR。在後驗過程中,滴滴可以做到80%的準確度。其中,不僅要計算司機的個人特徵,還要結合其決策體系,如喜好,是對小費敏感,長短途敏感,時間敏感,還是對方向敏感等靜態特徵和司機和訂單之間的位置關係、時間關係等動態特徵進行綜合分析。除此以外,還有補貼,給乘客什麼樣的補貼,給司機什麼樣的補貼,誰更敏感,多少金額影響更積極,這些策略的背後都是大資料在起作用。我們希望用有限的資源最大化提升使用者的質量和活躍度,這不可能通過人肉實現,只有技術才能實現這些。而實現的過程中,對架構、運營、產品等挑戰都很大。

  CSDN:滴滴叫車在大資料方面是傾向於開源技術優化還是自主研發?

  張博:我們業務分了幾層。基本都是使用的開源技術。基礎層面是資料平臺,主要是大資料計算和儲存,用的是業內比較成熟的開源系統,Hadoop。基礎層上是自建的資料倉儲,然後是策略架構,通過實驗平臺讓策略迭代更加敏捷,如快速提取特徵完成模型訓練,並通過小流量測試驗證模型,通過後迅速上線。這些都是工程方面的研發。再上面是機器學習,滴滴叫車現在每天湧入的資料接近10TB,通過不斷蒐集使用者標準資料特徵,優化機器學習模型。比如推送給司機訂單,司機是否搶單,這就是一個天然的標註。而通過這些標註,就可以優化學習體系。最上面就是整個大資料體系,支援新產品開發和策略決策。在我看來,目前很多開源專案演化的比較穩定,效能表現也不錯,沒有必要從頭開始搭積木了,儘快將技術服務於應用最重要。而在不斷實踐中,通過對開源技術的改進和優化,在反饋給社群,我們是願意這樣做的。

  CSDN:人工智慧發展速度很快。滴滴在機器學習方面已經到了什麼樣的程度?

  張博:我們馬上會有重量級產品釋出。滴滴大資料領域負責人是機器學習領域世界級頂尖學者何曉飛。我們在機器學習的投入是相當巨大的。

  CSDN:哪些寶貴的經驗可以分享出來?

  張博:第一是如何應對大流量、高併發的挑戰。比如每一個介面可能被訪問頻次如何設計,背後訪問多少次快取,資料庫會讀寫多少次,後端每一個服務,瞬間併發量能到什麼級別,每一層壓力測試要扛住多大讀寫併發,10臺機器能扛住多大讀寫併發等,都要做到心中有數。再比如每一次營銷活動前,要對系統做一次體檢,評估到底可以承接多大的量。第二是要有非常好的運維工具,要能實時監測線上每一個後端服務模組的負載,能夠及時發現問題並報警。第三是設定多套應急預案,當問題發生時,團隊可以儘快反應,做準備好的動作。第四是要有降級策略,在大流量衝擊下,要優先保證主流層。對滴滴而言就是發單,使用者發單、司機搶單是主流程,在這樣的特殊情況中,積分商城等都是非主流層,可以被捨棄。

  “我最開心的是,大家都飛速成長”

  每一次生死戰役,都是拼命在和時間賽跑。而每一次戰役勝利之後,都為滴滴叫車培養了優秀的實戰人才。最讓張博開心的是,團隊成員在飛速的成長的同時,沒有一個流失。

  CSDN:滴滴叫車成立只有三年,但對產業的影響有目共睹。作為技術負責人,你認為最大的挑戰是什麼?

  張博:這三年,基本上每天都在打仗。每天都是一睜眼就要想生和死的問題。就像補貼大戰時,一週資料漲了50倍,但我們完全無法應對。當時甚至出現了這樣一幕,每到高峰,我們就當機。我們當機,對手就當機。因為以使用者都去他們那邊了。當然,他們當機,我們也當機。當時比的是誰先穩定下來,誰能把使用者留住。當時就是拼命在和時間賽跑,我們團隊60多人曾7天7夜沒有睡覺,吃住在公司。走過以後,回頭看看,發現我們沉澱了非常多的寶貴經驗,也用實戰培養了更多的人才。也許,很難說一週之內就好像變了一個人,但三年來,平均每幾個月就要闖一次生死關,過去了迎來新機會,過不去就死了。這樣的壓力下,你自己都會驚訝於自己的成長速度。一個快速成長的行業,一個快速發展的企業,你的快速成長是必然的。很多人都知道,在創業前,我在百度做搜尋技術,那個時候只要在策略方面做好就可以,下面的基礎設施層,如計算儲存層都不要考慮。而在滴滴幾乎負責各個層面,要搭建系統、要應對業務挑戰、要做更多產品設計。基本沒辦法列舉更多了,所以最大的挑戰就是應對挑戰加速成長。

  CSDN:如何評價和你“共生死”的團隊?

  張博:我的團隊非常優秀,正因為經歷了非常多的生死戰役,他們每個人的成長速度會是大公司的2-3倍。也許2-3年前,他們還只是大公司技術團隊的不知名的一員,但現在他們已經是滴滴叫車的頂樑柱,承擔了非常重要的工作。比如曾經一個iOS工程師如今負責滴滴公共產品和技術,已經成為全棧選手。這樣的例子還有很多。我最開心的也是這一點,看到他們飛速的成長,而且從入職開始,沒有一個流失。我們下一步會建立滴滴技術學院,每一個角色都有技術成長路線圖,會有導師輔導,會有定期培訓。我們也會引入高精尖人才,比如何教授等,請這些頂級專家帶領大家走下去。

  CSDN:滴滴快的合併後,實施聯合CEO制度,人員架構不變。但在技術團隊方面是否會有合併?

  張博:技術平臺和相應的架構正在做合併。我們希望變成不同的專業團隊,將所負責領域做深,做精,幫助業務跑的更快。

  CSDN:未來技術規劃是如何考慮的?

  張博:加大在大資料等方面的持續投入,加大在基礎架構層面的投入。我們看到矽谷很多企業在大規模分散式計算、儲存和機器學習的平臺的投入是巨大的。比如谷歌通過對MapReduce的優化,使得其計算要遠勝於其他平臺。我們在這些方面也要繼續學習,完善在技術方面的核心競爭力。

  CSDN:你的轉型很成功。對於從CIO到CTO或者從技術骨幹到CTO,這兩條不同的發展路徑,有什麼好建議麼?

  張博:從CIO到CTO,要清晰認識到技術為產品服務,產品為商業服務。CTO要有商業眼光。倒推回來,CIO要從技術入手,支撐產品發展,進而支撐公司現在和未來的商業計劃。簡單來說就是:從技術骨幹到產品骨幹,要懂網際網路產品、明白使用者需求,知道如何做出一款滿足使用者需求的產品、你要知道這些使用者過來了以後,商業模式是什麼,企業如何創造利潤。而從技術骨幹到CTO,難度更大。技術專家往往在某一領域精深,但要變成全能選手,就需要對每個領域都有所瞭解,找到這個領域真正的頂尖人才,然後組織起你的團隊,駕馭團隊實現目標。

  寫在最後:

  成文之時,恰逢上海變成“海上”,朋友圈一片刷屏,呼喚“滴滴專船”。期待攜手騰訊雲已經完成架構優化的滴滴叫車,能夠更加快速地推出更多滿足細分場景的創新產品。

相關文章