使用Storm處理事務(wù)型實時計算需求時的幾處難點

比流量或者訂單淘寶可以把我們甩出幾條大街搞挣。淘寶的兄弟可以自豪地說他們的實時應(yīng)用已經(jīng)承受住了雙十一全世界范圍內(nèi)最大的單日數(shù)據(jù)流的沖擊。而阿里巴巴中文站的流量和訂單與淘寶相比則少的可憐。同時B2B自身業(yè)務(wù)又存在不同的特點双泪,我們的客單價和筆單價要高得多坞古,因此對于實時數(shù)據(jù)的誤差是零容忍的(比如丟了一個幾百萬的單子,那實時數(shù)據(jù)就沒有參考價值了)酱鸭。
所以中文站的實時應(yīng)用的特點是零誤差吗垮,事務(wù)性,故障可恢復(fù)凹髓。
在開發(fā)實時應(yīng)用的過程中烁登,我發(fā)現(xiàn)當實時計算需要保證數(shù)據(jù)完全不出錯的時候,邏輯就變得復(fù)雜起來蔚舀。效率和精度本身就是不可兼得的饵沧。
1、假設(shè)實時應(yīng)用在運行的過程中服務(wù)器突然宕機赌躺,或者應(yīng)用需要重啟狼牺。當應(yīng)用重新啟動時要能夠載入應(yīng)用停掉時刻的狀態(tài)。雖然我使用的Storm框架可以保證數(shù)據(jù)流的失敗重發(fā)礼患,但是數(shù)據(jù)計算的一些中間狀態(tài)還是必須要持久化下來是钥。例如計算UV,如果不持久化保存會員ID或cookie ID讶泰,就無法做去重處理并得到最終的UV咏瑟。而流計算一旦要做涉及到磁盤I/0的持久化操作,效率必然會大打折扣痪署。
2码泞、持久化操作帶來的另一個難點是保證事務(wù)性。例如我們要將數(shù)據(jù)寫入到數(shù)據(jù)庫狼犯,當寫入多個表時一定要保證多表的數(shù)據(jù)同時commit余寥,否則當應(yīng)用異常中斷重新從數(shù)據(jù)庫中載入中間狀態(tài)數(shù)據(jù)時,由于數(shù)據(jù)庫中的數(shù)據(jù)不一致就會導(dǎo)致最終計算結(jié)果的錯誤悯森。當然宋舷,對于傳統(tǒng)關(guān)系型數(shù)據(jù)庫來說保證事務(wù)性是小菜一碟,但是對于一些分布式數(shù)據(jù)庫或者NOSQL數(shù)據(jù)庫(例如Hbase)來說保證事務(wù)性并非易事甚至是做不到的瓢姻。
3祝蝠、當數(shù)據(jù)量大到一定程度時就要使用并發(fā),當并發(fā)需要考慮容錯與事務(wù)性時處理邏輯又會變得復(fù)雜起來。在Storm中绎狭,每個bolt可以啟動多個task细溅,每一個task會有一個唯一的task ID。當需要持久化操作時儡嘶,每個task必須把自己的中間狀態(tài)連帶自己的task ID一起持久化下來喇聊,而在故障恢復(fù)時,每個task只從數(shù)據(jù)庫中讀取屬于自己的狀態(tài)數(shù)據(jù)蹦狂,否則很容易導(dǎo)致內(nèi)存溢出誓篱。再加上有些業(yè)務(wù)邏輯要求多個task的數(shù)據(jù)必須在數(shù)據(jù)庫中一起commit,這又增加了復(fù)雜性凯楔。
4窜骄、如果在使用并發(fā)時想動態(tài)地調(diào)整并發(fā)數(shù),那需要增加很多額外的處理邏輯啼辣。因為Storm默認的fieldsGrouping是根據(jù)并發(fā)數(shù)進行Hash計算取模啊研。如果并發(fā)數(shù)變動御滩,那么每個數(shù)據(jù)流應(yīng)該分配到哪個task中也就發(fā)生了變動鸥拧。在故障恢復(fù)時,如果并發(fā)數(shù)發(fā)生了變化削解,每個task的task ID也會發(fā)生變化富弦,這會導(dǎo)致一個task從數(shù)據(jù)庫中讀取不到本來屬于自己的那部分中間狀態(tài)數(shù)據(jù)。這時需要采用一致性Hash策略來解決該問題氛驮。
5腕柜、Storm處理事務(wù)性應(yīng)用時是按照batch來接收和處理數(shù)據(jù)的。當一批數(shù)據(jù)跨在兩天的交界處時矫废,一批數(shù)據(jù)中既有前一天的數(shù)據(jù)盏缤,又有后一天的數(shù)據(jù)。如果應(yīng)用是按天為維度來計算的蓖扑,就要保證不能把前一天的數(shù)據(jù)算在后一天里面唉铜,也不能把后一天的數(shù)據(jù)算在前一天里。例如計算一天的GMV律杠,理論上講潭流,因為數(shù)據(jù)存在延遲,當bolt接收到第二天的訂單數(shù)據(jù)時柜去,自己的服務(wù)器時間也應(yīng)該是第二天灰嫉。但是有可能不同的服務(wù)器時間存在誤差,一個bolt有可能接收到在自己看來不是當天而實際上是當天的訂單嗓奢,這在程序處理時也應(yīng)該考慮讼撒,否則就無法保證數(shù)據(jù)零誤差。

總之,阿里巴巴中文站的特點是流量與訂單量小根盒,但是客單價與筆單價大瞻颂,實時計算如果不能保證數(shù)據(jù)準確性,計算結(jié)果與實際結(jié)果將產(chǎn)生比較大的誤差郑象,失去應(yīng)用價值贡这。為了保證數(shù)據(jù)準確性,就要犧牲一定的性能厂榛。同時盖矫,B2B的業(yè)務(wù)與市場正在迅速地發(fā)展,流計算所需要處理的數(shù)據(jù)流也會成倍地增長击奶,因此我們必須不斷尋求與優(yōu)化算法與策略辈双,在精度與性能兩方面把握平衡。

劉健男的博客
http://blog.sina.com.cn/liujiannan2010

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末柜砾,一起剝皮案震驚了整個濱河市湃望,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌痰驱,老刑警劉巖证芭,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異担映,居然都是意外死亡废士,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門蝇完,熙熙樓的掌柜王于貴愁眉苦臉地迎上來官硝,“玉大人,你說我怎么就攤上這事短蜕∏饧埽” “怎么了?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵朋魔,是天一觀的道長岖研。 經(jīng)常有香客問我,道長铺厨,這世上最難降的妖魔是什么缎玫? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮解滓,結(jié)果婚禮上赃磨,老公的妹妹穿的比我還像新娘。我一直安慰自己洼裤,他們只是感情好邻辉,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般值骇。 火紅的嫁衣襯著肌膚如雪莹菱。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天吱瘩,我揣著相機與錄音道伟,去河邊找鬼。 笑死使碾,一個胖子當著我的面吹牛蜜徽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播票摇,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼拘鞋,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了矢门?” 一聲冷哼從身側(cè)響起盆色,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎祟剔,沒想到半個月后隔躲,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡峡扩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年蹭越,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片教届。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖驾霜,靈堂內(nèi)的尸體忽然破棺而出案训,到底是詐尸還是另有隱情,我是刑警寧澤粪糙,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布强霎,位于F島的核電站,受9級特大地震影響蓉冈,放射性物質(zhì)發(fā)生泄漏城舞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一寞酿、第九天 我趴在偏房一處隱蔽的房頂上張望家夺。 院中可真熱鬧,春花似錦伐弹、人聲如沸拉馋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽煌茴。三九已至随闺,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蔓腐,已是汗流浹背矩乐。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留回论,地道東北人绰精。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像透葛,于是被迫代替她去往敵國和親笨使。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容