實時計算那些事

一段時間來都沒有寫blog了,感覺東西不寫出來更加容易忘記了,寫寫更紮實!不過,最近確實集中了一些業餘時間在看實時計算相關的東西,尤其是kafka、storm這兩個東西框架。


kafka的優點:

kafka的思路很好,充分利用了磁盤順序寫入數據,數據讀取也是走順序讀的路子,存儲的性能超級好,只要幾個節點就能處理大量的消息了;

另外,它突破了常規的一些消息中間件由服務端來記錄消息消費狀態的傳統,徹底由客戶端自己來記錄究竟處理到哪裏了,失敗也罷成功也罷,客戶端本來是最清楚的了,由它來記錄消費狀態是最適合不過了;

kafka的缺點:

同一個話題的消息,可以按照業務鍵來分散到不同的節點,同一節點內可以實現消息消費有序,不過你也別指望由kafka來實現消息全局有序了,又要可擴展又要有序簡直就是一個神話了,還有也別指望kafka可以不重複的處理消息,不重複不遺漏的處理消息也是所有消息隊列遙不可及的夢想了,不過好歹是不會遺漏消息的了;

kafka的0.7版本對可用性和容錯性幾乎沒有任何處理,節點失敗了,消息的存儲和消費都玩完了,如果機器硬盤徹底掛了,那對不起,消息數據徹底丟了。

上面說了kafka一堆的缺點,但是kafka就憑藉它那幾個優點就足夠行走江湖了。非正常狀態下有可能重複處理消息、不能全局有序這些缺點,基本上永遠不可能找到辦法的了,至於容錯方面那在0.8版本中就主要是修復這了,0.8版本穩定之日就是它大行其道之時。看了kafka的實現原理之後,我有一個衝動就是用Java去把它實現一把,再一細看早有人做了這個了,已經離開淘寶的庒曉丹、無花兩位連袂用Java實現了一個類kafka的metaq,並且已經在淘寶得到大量的應用,最難得的是它開源了。

至於kafka可以用在那裏,且看下面會細說。


話說storm

storm絕對是一個好東西,無論你用與不用都值得去研究一把,看着看着就覺得這個作者真是妙不可言,能把那麼複雜的事情抽象得這麼好,能把數學用到極致,反正我看完它實現消息確保被執行一次的方式之後有這樣的感覺。

就拿推薦來說事吧,大量的用戶、大量的數據、實時的推薦,想想頭都要痛,怎麼辦纔好呢?

storm就有辦法了,Spout從數據源取得數據,Bolt爲一個一個的業務邏輯處理節點,Bolt可以merge也可以split起來處理數據,最終完成整個業務邏輯處理,輸出結果。總之分分合合,就像河水從曲曲折折的河道一直流向大海一樣,所以說這種數據處理方式叫做流式計算。


今次就到這裏吧,明天補上。


發佈了94 篇原創文章 · 獲贊 20 · 訪問量 73萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章