楊曉青:大家好,我是攜程的數(shù)據(jù)架構(gòu)專家我叫楊曉青。剛開始我先自我介紹一下,09-12年的時候,我是在騰訊,參與數(shù)據(jù)平臺TDW的平臺從無到有的建設(shè),2014年是在阿里巴巴CDO數(shù)去平臺部,負責(zé)從無論道路有竇建GOlaxy流計算平臺。去年開始我加入到了攜程,負責(zé)攜程的基礎(chǔ)架構(gòu)的工作。
 
以前我在騰訊和阿里做的時候,從開始做的時候,也沒有太多的歷史的包袱,到了攜程以后,我遇到了很多新的問題,比如是在去年的時候,攜程的一個數(shù)據(jù)處理架構(gòu),是有一個架構(gòu)的,從0開始做的話,可能難度還會小一點。以前是一個混合的數(shù)據(jù)處理體系。在大數(shù)據(jù)的架構(gòu)下,快速躍升的時候,我們要換名字,這是對我們的挑戰(zhàn)。以前在這個架構(gòu)下培養(yǎng)的工程師,我們要進行一個基礎(chǔ)架構(gòu),工程師要進行一個變更,大家要去學(xué)習(xí)新的東西,可能大家已經(jīng)熟悉了一套老的東西,有200多個工程師做的是和數(shù)據(jù)相關(guān)的東西,這個是非常有挑戰(zhàn)的事情。
 
還有在以前的系統(tǒng)下,大家平時做的時候,經(jīng)常會出錯,大家會去管理這些系統(tǒng),然后查詢數(shù)據(jù)的質(zhì)量是不是OK,哪里錯了,定位在哪里,這個是非常的麻煩的。還有我發(fā)現(xiàn)歷史的數(shù)據(jù)有了問題,我怎么樣去糾正對了,還有一些在計算方法上的問題,很多的計算平臺發(fā)現(xiàn)越跑越慢,這是我們當(dāng)時遇到的挑戰(zhàn),在這個挑戰(zhàn)之下,我們開始考慮,怎么樣在不影響前提的情況下,還可以把這個名字換掉。
 
我們剛開始的進行一個數(shù)據(jù)架構(gòu),主要是進行了三個產(chǎn)品,一個是數(shù)據(jù)采集和平臺,這是一個基于數(shù)據(jù)調(diào)度的一站式的處理平臺,下面是一個數(shù)據(jù)分析的平臺。這個架構(gòu)實際上沒有太大的新意,前面也有很多的人來說,大家基本都是這么干的,沒有什么特別的。
 
現(xiàn)在我們大概是分了一個基礎(chǔ)的。比如是做Hadoop,還有一個團隊是做的實時計算的東西,主要是Spark的一些事情,另外一個我們要基于分布式計算集群,變程一套解決方案,讓工程師快速的解決這個事,減少大家的工作量。整個數(shù)據(jù)處理的流程就是這么一張圖,在所有的網(wǎng)站系統(tǒng),或者是電子商務(wù)系統(tǒng),大家的數(shù)據(jù)基本是可以分成三類,第一個是交易相關(guān)的數(shù)據(jù),這些數(shù)據(jù)基本是落數(shù)據(jù)庫里面的,還有一個是用戶的行為數(shù)據(jù),這些數(shù)據(jù)的題量都比較大,還有一些是會在系統(tǒng)里面發(fā)一些消息,比如是系統(tǒng)檢測的難點,會通過系統(tǒng)發(fā)出來。
 
然后我們在解決方案里面,業(yè)務(wù)日志和系統(tǒng)消息是走的消息隊列,對于交易類的系統(tǒng),可能和大多數(shù)的公司是不大類似的,Muise流處理,對我們現(xiàn)在的要實時的采集它,給我們帶來了很大的挑戰(zhàn),完成關(guān)于交易數(shù)據(jù)增量采集的一個方法。
 
整個的計算的引擎,離線的部分基本就是機遇Spark的體系去做的,還有做產(chǎn)品驗證的系統(tǒng),還有數(shù)字的API,供推薦交易用,還有一些其他的很多的小系統(tǒng)。前面也提出到了數(shù)據(jù)同步,因為Server給我們帶來了很多麻煩的事,這個是我們基于二次開發(fā)進行的一個包裝,我們現(xiàn)在的MySQL和hive等攜程主流數(shù)據(jù)庫間任意同步,解決多種同步工具混用,效率難以保證,維護負責(zé)問題。在這個產(chǎn)品之上,我們數(shù)據(jù)采集的模式,之支持全量和增量數(shù)據(jù)同步模,通過可線性擴展,這是我們產(chǎn)品的一個頁面,你的任何的數(shù)據(jù)要采集,打開我們的頁面,在上面進行一些配置,那過一會,你的數(shù)據(jù)就會有了,后面就會啟動同步配置,而且和我們的調(diào)度平臺是可以無縫的結(jié)合的。我們來看一下關(guān)于增量計算和增量采集的問題。
 
日志數(shù)據(jù)有一個特點,永遠不會改變,只要它產(chǎn)生了,沒有人會去改它,但是數(shù)據(jù)庫不大一樣,數(shù)據(jù)庫一直是有改動的。我們自己做的一些協(xié)議,比如是線上的線上的數(shù)據(jù)可以通過日志的方式同步到另外的數(shù)據(jù)庫里面去,可以啟動增量的模式,數(shù)據(jù)里面會加一些標(biāo)簽,可以每次采集一部分的數(shù)據(jù),增量預(yù)算比如是今天結(jié)束以后,會啟動一個末點運算,為什么要做增量的計算,第一個解決時時性的問題,以前是一天會做一次,比如是我要看到今天的銷售怎么樣,特別是做活動的時候,大家非常的關(guān)注今天的狀態(tài)是怎么樣,可以提高數(shù)據(jù)的實時性。
 
如果是大家每天都是第二天早上運算,那大家會遇到過同樣的問題每天凌晨計算量非常的高,通過增量計算可以把這個階段拉平了,還有一個好處,很多的數(shù)據(jù)會涉及到跨機房采集,對網(wǎng)絡(luò)會造成比較大的沖擊。 我們到八月的數(shù)據(jù),每天會同步八千多張紙的表,要同步5T左右的數(shù)據(jù)量,同步的行數(shù)是在20億條。
 
數(shù)據(jù)調(diào)度平臺這是我今天要重點說的平臺,這個調(diào)度平臺,我們把它做成了一個產(chǎn)品化的東西,定位成數(shù)據(jù)開發(fā)一站式服務(wù)的結(jié)合的地方,數(shù)據(jù)的采集,計算,管理,運維,都在這個平臺上可以完成。
 
這個系統(tǒng)是整個數(shù)據(jù)處理系統(tǒng),大家也都了解,現(xiàn)在的數(shù)據(jù)處理太多了,而且任何一個公司,都不可能用單獨的一個解決的方案,或者是某一種系統(tǒng)完成所有的問題,肯定是一個多平臺的,多系統(tǒng)的一個組合達到不同的特性。這個調(diào)度系統(tǒng),每天基本上是驅(qū)動了這些,把數(shù)據(jù)同步到計算的平臺,還可以采集負載,采集日志是否到位這些信息,然后進行計算,還會帶來一個好處,我可以看到整個系統(tǒng)的運行趨勢是不是正常。比如是可以看到運行的任務(wù)是怎么樣,可以自動的暴行,運行的速度是不是越來越慢。
 
比如是通過了整個任務(wù)的分布,我們可以給出任務(wù)一些建議,它在運行的時間應(yīng)該進行一些調(diào)整,或者是攜程有多個業(yè)務(wù)線,你可以發(fā)現(xiàn)這個業(yè)務(wù)線和那個業(yè)務(wù)線,你們的計算邏輯是一致的,是可以進行合并的,計算一份就可以了。
 
在沒有這個技術(shù)之前,我們整個數(shù)據(jù)系統(tǒng)有很大的運維的成本,我要開發(fā)上線一個新的ETR的流程,我要在測試的環(huán)節(jié)調(diào)試是不是OK的,然后要去上線,走一條完整的上線的流程,然后觀察是不是OK的,整個的流程,除了你自己寫你的業(yè)務(wù)邏輯的時間,你完成這么一套流程上的時間,可能是幾個小時也會有的。
 
還有一個是運維,我們現(xiàn)在有二萬多的ETR的流程,最典型的例子,如果是你的一個數(shù)據(jù)質(zhì)量有問題,特別是一張底層表出了問題,發(fā)現(xiàn)數(shù)據(jù)在報表的時候是錯的,然后把錯的地方恢復(fù)以后,依賴這個標(biāo)的任務(wù)有幾十甚至是一百,挨個的恢復(fù)它,可能一天也做不完。這是之前的一個狀況。
 
我們基本是把開發(fā)上線的時間降到了十幾分鐘,運維都是一鍵的,甚至是系統(tǒng)可以有一些自己的規(guī)則,判定你的流程是不是屬于一個正常的狀態(tài),如果是發(fā)現(xiàn)了錯誤,系統(tǒng)可以自動的幫你重置,或者是某一個系統(tǒng)有問題,檢測到這個系統(tǒng)恢復(fù)了以后,可以自動的啟動。
 
這個系統(tǒng)大概是有四個模塊,一個是開發(fā)IDE,有一個圖形化的界面,專門可以去開發(fā),調(diào)試,甚至是把廠家的數(shù)據(jù)都可以去進行查詢,比如是我突然忘記了這個表的字段是怎么樣的,我可以同時察看關(guān)于任何表的元素的信息,包括這個表里面有一些什么數(shù)據(jù),可以了解一下數(shù)據(jù)的內(nèi)容。另外一個是工作,主要是管理任務(wù)的啟動和停止。比如說我們配置的任務(wù)要早上三點行動,定時的啟動,還有數(shù)據(jù)采集完成,會發(fā)生一連串的計算,整個是一個完整的數(shù)據(jù)流程,要去依賴。
 
還有是事件的出發(fā),比如是人工的觸發(fā)一個實踐,還有人工的觸發(fā),有一個開放的接口,另外可以調(diào)調(diào)度系統(tǒng)的借口。另外一個是運維管理,發(fā)現(xiàn)了錯誤以后,可以以來了城堡,看一下任務(wù)的日志,如果是這個任務(wù)非常的失敗以后,晚上可以自動的給我打電話,告訴我出了什么問題了。
 
還有每天的業(yè)務(wù)報告,比如是很多的人會關(guān)心,我想看一下整體狀況的優(yōu)勢是怎么樣的,錯誤的失敗率有多高,都可以看到,另外一個是智能的管理,現(xiàn)在攜程有300多臺電腦,有很多的開發(fā)的單子,這時候的資源肯定是不夠的,這時候該要根據(jù)優(yōu)先級來判斷,哪一些任務(wù)先跑,哪一些任務(wù)后跑。如果我們發(fā)現(xiàn)集群比較慢的時候,我們就會禁止提交集群。
 
另外一個是分組,在不同的環(huán)境下,可以根據(jù)不同的特性根據(jù)分組。這個是任務(wù)的觸發(fā)方式。這個是整個系統(tǒng)怎么樣運作的,比如是數(shù)據(jù)平臺,會出發(fā)很多的工具,驅(qū)動整個的數(shù)據(jù)流程!是從生產(chǎn)慢慢的流動到通訊系統(tǒng),最終是流動到報告和推薦系統(tǒng)里面去。這是我們和普通的系統(tǒng)不大一樣的地方,我們做了一個資源分組的功能,這個系統(tǒng),大概是去年的10月份上線的,因為我們有很多的業(yè)務(wù)要去做,這個周期的迭代系統(tǒng)大概是二周就要上線,我們上線的時候,因為上面有很多的任務(wù)了,比如是上線以后有問題的話,我們會有很大的壓力,通過分組,我們可以先放到測試組里面,如果是OK的話,客觀恢復(fù)上線,還有一些任務(wù)的話,可能需要一些相關(guān)的環(huán)境,我們可以切換為獨立的集群,在R集群強化管理。
 
這個就是剛才說到的優(yōu)先級,沒有優(yōu)先級的話,比如是大家都有錢打水,那都接受不了,都會非常的憤怒。一些不重要的信息,大家也不是這么的在意了,還OK的。
 
現(xiàn)在我們每天集群的規(guī)模有33萬的樣子,這是我們做的功能的演示,可以看出計算的結(jié)果,這里應(yīng)該是我的左邊,這里有一個原數(shù)字的管理系統(tǒng),你輸入任何的標(biāo),會彈出含義,包括預(yù)覽的數(shù)據(jù)是什么。右邊這里是整個的任務(wù)數(shù),大家可以看到很多的業(yè)務(wù)是發(fā)郵件的。我可以看多自己的業(yè)務(wù)類型,但是如果是你不想讓別人看到的話,可以是加秘的。也有一些自動存款的策略給大家配置。這個是每天寫的日志,大家都可以在頁面上進行探討。
 
這個是大家只能看到自己的任務(wù),這是每天的一些趨勢,比如是多少的成功,多少的失敗。這是我們的管理系統(tǒng),每一個機器上有一些什么內(nèi)務(wù)都可以砍掉。整個集群的負債都比較高的時候,我們會負責(zé)到等一下,免得把機器拖死了,這是整個Maart的志,現(xiàn)在我們的數(shù)據(jù)進行管理預(yù)算,最通用的是有一些是簡單的出一張報表,簡單的看一下運營數(shù)據(jù)就可以了,如果是用的詳細時候,比如是我想象一下業(yè)務(wù)線是多少比如是左邊的交易額是多少,右邊這里定單是自動化的,甚至是很明細的一個指標(biāo)。
 
在相當(dāng)于展示和報表的平臺之上,我們主要是有二個產(chǎn)品,一個是展品寶寶,一個是多個分娩引擎。簡單報表引擎,因為它非常的簡單,而且非常的好用,支持多種數(shù)據(jù)庫,支持發(fā)送郵件,支持附加Fdfipang,你只要任何的一搜索,就可以出來各種的線索和餅圖,你可以讓你看到的東西,可調(diào)這么一些圖形。而且是可以定時的,比是是每天早上通過這個系統(tǒng)。以確認整個系統(tǒng)的人員是不是成功的。
 
這個產(chǎn)品是我們批評成功的產(chǎn)品,有700多個UV操作參加,這是我們的一個操作臺,你只要是把人添到這個框里面去,根據(jù)時間會有一個特殊的標(biāo)簽,你達到了這個標(biāo)簽,時間就會多,你只要點了,就會出來這么多,你沒有什么不需要看到的,只要是數(shù)據(jù)分析人,把你的數(shù)據(jù)輸進去,就可以出來更多的了。
 
這個是相對來說專業(yè)的要求稍微的高一點,這是一個多維分析引擎,我們對它進行二次開發(fā)。這個產(chǎn)品主要是大數(shù)據(jù)量的分析,另外一個小數(shù)據(jù)量的刻劃,可以通過搜搜網(wǎng),你在做報表和模型的時候,不需要關(guān)心是在什么網(wǎng)站上,后面會自動的發(fā)到你的電腦里做支持。這個是分的更細的,這個是支持多種圖影,比如是各種組合,這個是我們分析的火車票定單的狀況。
 
我要說的就這么多,我們整體做的時候,我們分了三個層次,數(shù)據(jù)采集一個系統(tǒng),整個一站式的數(shù)據(jù)管理系統(tǒng),同時一個數(shù)據(jù)的展出,如果你是一個數(shù)據(jù)分析師,你進來了以后,都是在頁面上,你只要經(jīng)過了一些技能,其他的東西都是數(shù)據(jù)點擊就可以了,就說這么多,謝謝大家。

分享到

zhoub

相關(guān)推薦