在2013年由LinkedIn開源釋出的分散式處理框架Samza,在2014年成為頂級Apache專案後,現在正式邁入1.0版。該公司表示,內部有超過3,000個在正式環境執行的應用程式,皆有使用Samza。而根據Apache基金會釋出的資料,目前導入該開源專案的公司,包含eBay、Slack、TripAdvisor等,用於基礎架構效能監控、即時分析、偵測異常系統行為等情境。

LinkedIn主管工程師Jagadish Venkatraman表示,Samza 1.0版的關鍵功能在於,提供更高層次的API、整合Apache Beam、Samza SQL,並且推出專用的Samza應用測試框架等。

LinkedIn表示,雖然穩定性是Samza的核心優勢,但是工程團隊開始意識到,該工具的API層次相對低,僅有提供基本的Callback-based API,開發者必須在底層API上進行複雜實作功能,同時,多組Samza任務得仰賴Kafka連結,導致應用程式開發緩慢、易於出錯。

因此,在此版本中,LinkedIn在Samza內建了更多高層次API,提供許多直接可用的運算子,像是map、filter、join、window等,讓開發者可以組合這些運算子,表達複雜的資料串流分析流程。同時,這些高層次API亦可整合相依性管理工具YARN使用,完成程式碼開發後,就可以在各類環境執行。

第二個重要特色是整合Apache Beam,提供Samza應用程式的可攜帶性。LinkedIn解釋,由於Samza是使用Java、Scala語言開發,串流分析應用仍受限於採用JVM家族之語言。但是Beam專案的特色在於,提供一套統一API,讓工作流程可以移植到不同之大數據引擎運作,如Samza、Spark、Flink,如此開發者就可用Python這款廣泛受資料科學應用的語言,處理資料串流任務。因此,在Samza 1.0版,採用Beam API的應用程式,亦可使用Samza執行,「整合Beam可攜性及Samza引擎擴充性的優點。」

再者是推出Samza SQL指令,讓開發者能使用宣告式語法,開發即時串流應用程式。LinkedIn解釋,使用宣告式語法的好處在於,可以專注高層應用的開發,不需擔心底層細節,如資源管理、程式可攜性。

而在Samza應用程式後續的維運、測試工作也有進行改善。首先,在此版本中擴大Samza可以執行的環境,原先系統維運者必須先在基礎架構環境中,建立獨立YARN叢集,提供Samza執行串流分析任務。但LinkedIn表示,隨著Samza的採用率增加,也有社群使用者反應,希望Samza可以支援更多元環境,如Kubernetes、Mesos,或者其他公有雲環境。因此,在Samza 1.0版本中,該專案開始內建了Standalone部署模式,使用者可以將Samza視為單一函式庫,嵌入在應用程式內執行,同時也可自由選擇要使用哪些資源管理工具。

再者是提高Samza應用程式的可測性。原先使用者多半需要重啟一個新Kafka本地叢集,並且匯入部分數據,檢驗最後產出結果是否正確,讓整體工作時間拉長。現在LinkedIn則是出了原生的單元測試框架,提高開發者的工作效率。


熱門新聞

Advertisement