電子信箱 service [at] bituzi.com
幣圖誌首頁 facebook粉絲團 google plus google plus


現正火紅的分散式運算框架:Storm,初探!



各位好,我是貓大。先前在「光速世界的礦工──高頻交易上的資料挖礦」中曾經提到,由於高頻交易變化多端的趨勢波動,我們必須在數十毫秒內算出兩千多種自定義的市場狀態規則,以供人工智慧演算法即時建模。究竟如何辦到?關鍵之一是開源的分散式運算框架:Storm。

大家一起算,比較快!

Storm是一個免費且開源的分散式即時運算框架,我們可以運用Storm接收源源不斷的資料流(在本系統中是市場即時報價,Tick Data)可以在非常短的時間內,處理並運算出所有市場狀態規則。

資料處理技術可說是後浪推前浪,各種新技術不斷推陳出新。Storm其實已經發展得越來越成熟,有許多大公司都用他們,社群也非常活躍。比較有名的使用者有:國外紅極一時的社交媒體Twitter、對岸快速崛起的阿里巴巴與旗下淘寶網,及對岸搜尋引擎龍頭百度等等。在最一開始,Twitter以Storm作為他們的Twit處理架構,而後才將其發布為Open Source(開源)軟體。

Storm應用相當廣泛,可以運用在即時分析、線上機器學習及分散式遠端程序呼叫等等。而且速度非常快,每一個節點每秒可以處理上百萬個資料組(tuple),效能非常好。當然,也可以應用在高頻交易系統上。

選用Storm除了因為效能很好以外,也考慮到它的可擴充性,可以非常容易的依據負載量增加節點。另外它的可靠性也很不錯,內建的訊息確認機制可以確保每一筆訊息都被處理。


即時運算,即時建模

在一個Storm Job(Topology)中,有兩個主要組件:
Spout:接收資料源,將資料組(Tuple)源源不絕傳給後續節點。
Bolt:接收Spout傳來的資料流,使用者可在此自訂邏輯,Bolt將會處理並執行所有經過的資料。
具體我們怎麼做呢?我們運用Spout接收市場上的即時報價源(Tick Data),由一個Spout專責接收每秒數筆的即時報價。同時,也定義了多個Bolt,每個Bolt負責一百到兩百不等的市場規則計算。
以現存的系統架構來說,一共有十八個Bolt,當一根KBar傳入,將會分散給十八個Bolt,在每個Bolt運算完各自的市場規則後,再匯總起來建模。
借助這套架構,系統可在數十毫秒內計算出兩千多種的市場狀態規則,並交給後續之規則模擬,做即時信號判斷及人工智慧建模。

在高頻交易系統中,速度非常重要,因此我們採用了Storm將運算量分散至多個節點,以加快運算速度,大幅縮短了建模週期。Storm Topology包含了兩個角色:Spout及Bolt,Spout接收資料、Bolt運算資料。借助Storm的分散式運算技術,我們將大量的市場狀態計算工作切分成多個節點做分散式運算。如果對Storm或分散式運算有興趣,歡迎在下方留言,貓大很願意與大家討論這方面的問題喔!

0 意見: