? ? ? ? 歡迎來到cep-china!以下文章翻譯
https://wso2.com/library/article/2018/01/making-real-time-applications-simpler-with-wso2-stream-processor/
? ? ? ? 僅供學(xué)習(xí)參考,未經(jīng)許可不得轉(zhuǎn)載。
????????隨著快速變化的商業(yè)環(huán)境,對于任何組織來說即時處理業(yè)務(wù)事件都是保持競爭力的至關(guān)重要的環(huán)境。目前,代碼、多節(jié)點部署、系統(tǒng)快速更新的復(fù)雜性都阻礙了企業(yè)實現(xiàn)實時流處理的潛力。WSO2通過其下一代分析產(chǎn)品——WSO2流處理引擎使其更加簡單,將實時流處理提升到了一個新的水平。
????????本文討論了第一代流處理解決方案中遇到的挑戰(zhàn),并進(jìn)一步介紹了WSO2流處理引擎的實現(xiàn)方式,以及其解決的問題以及它為什么應(yīng)該成為實時流處理引擎的首選。
簡介
????????在當(dāng)今競爭激烈的環(huán)境中,業(yè)務(wù)創(chuàng)新的步伐正在加快。為了獲得競爭優(yōu)勢并贏得客戶,公司需要對新市場趨勢、客戶行為和環(huán)境格局迅速進(jìn)行反饋和響應(yīng),因此具有數(shù)據(jù)處理并能在短暫的時間內(nèi)做出決策的能力是非常重要的。流處理(流分析)提供了進(jìn)行實時決策的能力,是敏捷業(yè)務(wù)的重要組成部分。
????????流處理系統(tǒng)允許通過實時接受事件,處理事件,形成摘要、生成報警來了解當(dāng)前環(huán)境。這有助于對各種市場事件快速作出反應(yīng),為他們提供競爭優(yōu)勢來保持領(lǐng)先。
為什么建立一個流處理引擎這么困難
????????第一代流式分析產(chǎn)品(如Apache Storm)旨在幫助開發(fā)人員在通用的編程語言中實現(xiàn)流處理管道。這使開發(fā)人員可以靈活地實現(xiàn)任何需求。它還提供了以分布式方式部署實現(xiàn)代碼的平臺,這樣他們可以大規(guī)模地運行流處理。
????????然而,第一代流處理引擎存在兩個挑戰(zhàn):
? ? ? ? ?1.當(dāng)今企業(yè)有不斷變化的要求適應(yīng)。因此,用傳統(tǒng)語言編寫流處理邏輯很困難。需求變更會更改相關(guān)功能和代碼修改,這是一項耗時的任務(wù)。
? ? ? ? ?2.為了流暢的運行流應(yīng)用,市場上現(xiàn)有的大多數(shù)流處理引擎需要多到5至6個節(jié)點來設(shè)置生產(chǎn)環(huán)境。這是一個復(fù)雜且不便于維護(hù)的過程。
為什么WSO2流處理使得流處理更加簡單
????????WSO2目標(biāo)就是解決快速開發(fā)、快速需求變更帶來的挑戰(zhàn)。我們盡可能的把控制權(quán)交給業(yè)務(wù)員用戶,來幫助他們獨立的微調(diào)他們的系統(tǒng),例如管理一些規(guī)則,從而通過無縫的敏捷流程優(yōu)化日常業(yè)務(wù)運營。
????????WSO2流處理引擎通過多種傳輸方式來收集多種消息格式的事件。它使用流式 SQL來處理數(shù)據(jù)流、檢測復(fù)雜事件模式并使用機器學(xué)習(xí)模型進(jìn)行預(yù)測。它還可以即時生成處理的結(jié)果并作為警報進(jìn)行通知,并通過實時交互多維度展現(xiàn)的Dashboard對其進(jìn)行可視化。
????????WSO2通過僅以2個節(jié)點部署,降低了部署的復(fù)雜程度,并提供了高可用性的流處理來使得企業(yè)更具有競爭性。
????????WSO2流處理引擎是一個輕量級、開源、高性能的流處理平臺,其能夠支撐流式SQL查詢,以便支持實時抓取、分析、處理和操作。這有助于實時的、智能的、洞察業(yè)務(wù)和數(shù)據(jù)的產(chǎn)品,憑借WSO2流處理引擎的簡單部署來適應(yīng)快速變化的能力,企業(yè)現(xiàn)在可以更快的進(jìn)入市場并獲得更高的投資回報率。
????????WSO2流處理引擎以三種方式簡化了流處理應(yīng)用的生命周期:
? ? ?1.快速部署
????????開發(fā)者現(xiàn)在可以更快地構(gòu)建可靠且高性能的流應(yīng)用程序。這是通過Siddhi流處理引擎和復(fù)雜事件處理引擎實現(xiàn)的,該引擎是WSO2 流處理的核心。它還包括:
? ? ? ? a.易于使用流式 SQL語言,因為開發(fā)者已經(jīng)非常熟悉SQL語言及數(shù)據(jù)庫
? ? ? ? b.通過Siddhi實現(xiàn)流處理運算操作的強大工具包,例如過濾、窗口、聚類、摘要、狀態(tài)機和事件關(guān)聯(lián)。
? ? ? ? c.支持50種算法擴展,支持更復(fù)雜的用例,例如地理位置處理、自然語言處理、機器學(xué)習(xí)、異常檢測等等。
? ? ? ? d.支持處理事件,并通過常用的協(xié)議,如HTTP、Email、Kafka、MQTT、JMS、TCP發(fā)出警告,并支持文件類型如XML、JSON、文本、二進(jìn)制和Key-Value的消息。
? ? ? ? e.開箱即用的集成了流行的數(shù)據(jù)存儲系統(tǒng),如RDBMS數(shù)據(jù)庫、Apache Solr、MongoDB、Apache HBase、Hazelcast等。
????????下面代碼段說明了如何計算每個cookie生產(chǎn)線上每個事件到達(dá)時每個小時生產(chǎn)總量,并在過去30分鐘內(nèi)生產(chǎn)總量降低5%以下發(fā)出報警。

????????為了開發(fā)者使用起來更簡單,Stream Processing Studio具有自動編譯,語法高亮,并在創(chuàng)建流應(yīng)用程序時提供集成的文檔幫助。當(dāng)開發(fā)者開發(fā)程序時,通過提供隨機數(shù)、CSV、數(shù)據(jù)庫數(shù)據(jù)回放的方式來支持模擬。同時提供了調(diào)試功能,以便幫助開發(fā)人員在開發(fā)期間發(fā)生邏輯錯誤時進(jìn)行調(diào)試。

????????2.簡易部署
????????應(yīng)用生命周期最重要的一個方面就是部署。WSO2僅需要2個節(jié)點即可作為流處理所需要的最少節(jié)點數(shù),因此部署變得非常簡單。因為生產(chǎn)部署至少需要兩個節(jié)點才能保證高可用性。然而,這種簡化的部署方式并不能以犧牲性能為代價。為了確保達(dá)到最好的性能,WSO2嵌入了Siddhi流處理引擎。這樣,在JVM內(nèi)每秒能夠處理超過2M個事件,在網(wǎng)絡(luò)情況下支持每秒900K個事件支持簡單的流式查詢。對于復(fù)雜的事件處理場景,它可以輕松地處理每秒超過100K個事件。
????????當(dāng)然,在物聯(lián)網(wǎng)分析或設(shè)備監(jiān)控等場景中,有一些用力超出了每秒100K事件的基準(zhǔn)測試。對于這樣的用例,可以使用Apache Kafka將多個流處理節(jié)點連接到一個集群中,這樣,WSO2流處理提供了一個平臺可以讓你實現(xiàn)低延遲、零宕機的事件處理,每天處理事件超過30億。
????????由于流處理系統(tǒng)是有狀態(tài)的,傳統(tǒng)的流處理系統(tǒng)強制開發(fā)者重做應(yīng)用以實現(xiàn)可伸縮性。為了解決這個問題,WSO2流處理可以智能的決定是否以擴展的方式進(jìn)行部署。對于熟悉系統(tǒng)并希望獲取控制擴展的用戶,他們可以對Siddhi應(yīng)用進(jìn)行注釋,以便提供擴展的一些更加簡潔的信息而無需重寫應(yīng)用程序。
DevOps遇到的一個挑戰(zhàn)就是在一些為了新功能或修正bug而進(jìn)行的升級系統(tǒng)時必須修改一些配置,通過使用WSO2更新管理(WUM)和WSO2流處理的單一配置文件就可以解決這個問題,需要做的就是使用WUM更新包并替換單個配置文件。

????????分布式系統(tǒng)本質(zhì)上容易出現(xiàn)故障,WSO2流處理引擎也不例外。當(dāng)節(jié)點加入或離開集群,就容易發(fā)生自動恢復(fù)或重新部署的邏輯問題。如果沒有適當(dāng)?shù)募焊庞[并了解細(xì)節(jié),DevOps將無法隔離出現(xiàn)問題的組件并采取主動措施。系統(tǒng)的可由Dashboard進(jìn)行觀察,Dashboard不僅監(jiān)視其JVM運行狀況,還通過深入分析部署的每一個查詢元素的性能來監(jiān)視流處理節(jié)點。
????3.業(yè)務(wù)人員自主控制與數(shù)據(jù)全知
????????業(yè)務(wù)員人員討厭提出需求變更并等待著開發(fā)人員交付解決這些問題。為了解決這個痛點,WSO2流處理有效的促進(jìn)了協(xié)作,構(gòu)建需求變更的開發(fā)人員可以通過預(yù)先達(dá)成共識的配置、參數(shù)、簡單條件作為約束,允許業(yè)務(wù)員用戶修改業(yè)務(wù)邏輯。這樣,開發(fā)人員和業(yè)務(wù)員經(jīng)歷的生活變得更加簡單,因為現(xiàn)在他們的系統(tǒng)可以由業(yè)務(wù)經(jīng)理直接訪問并自己更改執(zhí)行邏輯,而不需要等待漫長的交付。通過業(yè)務(wù)用戶配置規(guī)則時自動部署托管規(guī)則,從而將開發(fā)簡潔性提升到新水平。

????????一個分析系統(tǒng)如果不能多維度展現(xiàn)分析內(nèi)容,則是不完整的。WSO2流處理包含了一個可自定義的Dashboard,允許業(yè)務(wù)員用戶編寫自己的的視圖。它還配備了一個生成向?qū)椭麄儤?gòu)建自己的圖標(biāo),以便更好的幫助他們了解數(shù)據(jù)。在訪問數(shù)據(jù)時,所有的組織機構(gòu)都有自己的隱私規(guī)則,WSO2的Dashboard強制要求基于角色權(quán)限來訪問dashboard。


????????不同的組織結(jié)構(gòu)對于數(shù)據(jù)可視化有著自己的偏好,也需要訪問原始數(shù)據(jù)來與他們已有的系統(tǒng)進(jìn)行深度的融合。WSO2流處理提供豐富的REST API構(gòu)建方式來支持開箱即用的數(shù)據(jù)和系統(tǒng)集成。
讓我們開始吧!
使用WSO2流處理引擎,您可以在不到10分鐘的時間內(nèi)開始使用并創(chuàng)建實時流應(yīng)用程序。請參閱快速入門指南以開始使用。
WSO2流處理器可以更快的構(gòu)建復(fù)雜的、企業(yè)級的流處理分析解決方案,以及輕松的部署管理。有關(guān)更多的詳細(xì)信息,或嘗試其他功能,請嘗試教程。