優(yōu)步的任務(wù)是提供“對(duì)每個(gè)人來(lái)說,在任何地方都可以獲得像自來(lái)水一樣可靠的出行服務(wù)”。為了履行這一承諾,優(yōu)步依賴于在每個(gè)層面做出數(shù)據(jù)驅(qū)動(dòng)的決策。大部分的決策都得益于更快的數(shù)據(jù)處理。例如,使用數(shù)據(jù)來(lái)理解一個(gè)地區(qū)以便于增加業(yè)務(wù),或城市運(yùn)營(yíng)團(tuán)隊(duì)對(duì)新數(shù)據(jù)的訪問來(lái)運(yùn)營(yíng)每個(gè)城市。不用說,數(shù)據(jù)處理系統(tǒng)的選擇和必要的服務(wù)水平協(xié)議是數(shù)據(jù)團(tuán)隊(duì)與優(yōu)步用戶之間日常交互的主題。
在本文中,我想基于在優(yōu)步建立數(shù)據(jù)基礎(chǔ)設(shè)施的經(jīng)驗(yàn)和經(jīng)歷,討論準(zhǔn)實(shí)時(shí)案例中數(shù)據(jù)處理系統(tǒng)的選擇。在本文中,我認(rèn)為通過增加新的增量處理原語(yǔ)到現(xiàn)有的Hadoop技術(shù)中,將能以更少的開銷和統(tǒng)一的方式解決很多問題。在優(yōu)步,我們正在構(gòu)建相應(yīng)的系統(tǒng)來(lái)解決這里總結(jié)的問題,并且以開放的態(tài)度,希望與對(duì)這一領(lǐng)域有興趣的、志同道合的組織進(jìn)行合作。
準(zhǔn)實(shí)時(shí)案例
首先,讓我們定義這類案例。在一些場(chǎng)景里,長(zhǎng)達(dá)一小時(shí)的延遲是可容忍的,他們?cè)诖蟛糠智闆r下都可以通過在MapReduce/Spark上用傳統(tǒng)的批處理來(lái)執(zhí)行,同時(shí)數(shù)據(jù)一般會(huì)向Hadoop/S3上增量添加。與之相反的另一個(gè)極端的案例是:需要小于一到兩秒的延遲,通常涉及到將你的數(shù)據(jù)輸送到一個(gè)可擴(kuò)展的鍵值存儲(chǔ)(已經(jīng)在這個(gè)上工作)并且進(jìn)行查詢。諸如Storm、Spark流處理以及Flink之類的流式處理系統(tǒng)已經(jīng)相當(dāng)好地構(gòu)建了實(shí)際可以支持約一到五分鐘延遲的應(yīng)用。流式系統(tǒng)對(duì)于像欺詐檢測(cè)、異常檢測(cè)或者系統(tǒng)監(jiān)控這些需要機(jī)器快速響應(yīng)做出的決策或者以盯著計(jì)算機(jī)屏幕為日常工作的人來(lái)說是非常有用的。
這兩個(gè)極端之間給我們留下了一個(gè)大鴻溝,即從五分鐘到一小時(shí)的端到端的處理延遲。在本文里我將這種情況稱為準(zhǔn)實(shí)時(shí)。大部分準(zhǔn)實(shí)時(shí)案例商業(yè)儀表板,或是一些輔助人工決策的應(yīng)用。下面是一些準(zhǔn)實(shí)時(shí)可能的應(yīng)用場(chǎng)景:
1.觀察過去X分鐘內(nèi)儀表板上是否有任何異常;