首先Streaming和Storm是同一個東西,Storm是開源版的,Streaming是華為基於開源Storm開發的增強版。
Streaming是一個分布式、實時計算框架。
如果你已經看過之前的文章可能會問,怎麼又是計算框架?之前已經介紹過了MapReduce(高吞吐量離線運算)、Spark(速度更快,支持實時運算)、Hive(支持SQL)。那又有什麼場景能用到Streaming呢?答案就是:實時運算場景。那Spark呢?Spark不是也可以實時運算嗎?那是因為人們對速度的追求是無止境的,Streaming比Spark速度更快。
Spark vs Streaming
Streaming適用於對響應時間有嚴格要求的場景,通常為毫秒級。
Spark 適用於對響應時間要求不高的場景,通常為秒級。
Streaming特點
實時響應,低延遲。數據不存儲,先計算。連續查詢。 事件驅動。Streaming應用場景
實時分析:如實時日誌處理、交通流量分析等。 實時統計:如網站的實時訪問統計、排序等。實時推薦:如實時廣告定位、事件營銷等。所以判斷Streaming的應用場景很簡單就是實時,強調處理速度的場景就可以考慮Streaming。
比如金融相關行業:
系統架構
Client:客戶端向Nimbus提交業務拓撲。
Nimbus:負責接收客戶端提交任務,並在集群中分發任務給Supervisor;同時監聽狀態等。
Supervisor:負責監聽並接受Nimbus分配的任務,根據需要啟動和停止屬於自己管理的Worker進程。
Worker:進程是運行具體處理組件邏輯的進程。每個Worker是一個JVM進程。其中,每個exacutor為一個線程,處理具體業務邏輯。
ZooKeeper:為服務中各進程提供分布式協作服務。Nimbus、Supervisor、Worker將自己的信息註冊到ZooKeeper中,Nimbus據此感知各個角色的健康狀態。
關鍵特性介紹
Nimbus HA:通過主備模式,使用ZooKeeper分布式鎖,實現主備切換,保證高可靠性。
容災能力:節點失效,自動遷移到正常節點,業務不中斷。
消息可靠性:
如果並不要求每個消息必須被處理(允許在處理過程中丟失一些信息),那麼可以關閉消息的可靠處理機制,從而可以獲取較好的性能。