HStreamDB v0.6 正式釋出:水平擴充套件性、資料分發實時性提升

EMQX 發表於 2021-11-25

由 EMQ 開源的分散式雲原生流資料庫 HStreamDB v0.6 現已正式釋出!

HStreamDB 是首個專為流資料設計的雲原生流資料庫,致力於大規模資料流的高效儲存和管理。不僅支援在動態變化的資料流上進行復雜的實時分析,還支援對大規模資料流接入、儲存、處理、分發等環節的一站式管理,未來在 IoT、網際網路、金融等領域的實時流資料分析和處理場景將發揮重要作用。

在全新的 v0.6 版本中,我們為 HServer 開啟了叢集模式,可以根據客戶端請求和計算任務的規模對計算層節點進行彈性擴充套件。同時新增共享訂閱功能,允許多個客戶端在同一個訂閱上並行消費,極大提升了實時資料的分發能力。

最新版本下載地址:Docker Hub

新版本功能速覽

支援叢集模式, HServer 水平擴充套件性提升

HStreamDB v0.6 正式支援 HServer 的叢集模式。實現叢集模式後,HServer 可以快速水平擴充套件,支援節點健康檢測和失效恢復,提升了 HStreamDB 的容錯能力和擴充套件能力。與此同時,HServer 支援負載均衡。通過監測叢集中所有節點的實時負載狀態,將計算任務合理分配到不同節點,實現了叢集資源的高效利用。

關於叢集的啟動和部署,可以參考以下文件:

HStream

支援共享訂閱,資料分發實時性增強

在 HStreamDB v0.6 中,我們對之前的訂閱模式進行了重構,推出全新的共享訂閱功能。

在之前的版本中,一個訂閱同一時間只能被一個客戶端消費,這限制了 HStreamDB 對資料的實時分發能力。全新的共享訂閱功能引入了消費者組(Consumer Group)的概念,通過消費者組來統一管理對 stream 的消費。一個 stream 的所有消費者都會加入到同一個消費者組中,客戶端可以在任何時候加入或者退出當前消費者組。

HStreamDB 目前支援 at least once 的消費語義。HServer 將通過 round-robin 的方式向消費者組中的消費者派發資料。所有未收到客戶端 Ack 回覆的訊息都會在超時後被 HServer 自動重發給可用的消費者。同一個消費者組中的所有成員共享消費進度,HServer 負責維護消費者組的消費進度。HStreamDB 的高容錯能力保證了任意節點的崩潰不會影響對 stream 的消費。

與此同時,HSteamDB 的 Java 客戶端 也更新至 v0.6 版本,完整支援 HStreamDB 的叢集和共享訂閱功能。新的 Java 客戶端重構了訂閱部分的 API,增強了客戶端的易用性。關於 HStreamDB Java Client 的使用可參考 hstreamdb-java/examples at main · hstreamdb/hstreamdb-java

新增 HStream Metrics,系統可觀測性增強

在 HStreamDB v0.6 中,新增了基本的指標統計功能,比如 stream 的寫入速率,消費速率等。

使用者可以通過如下方式在 HStream CLI 檢視這些指標:

-- Find the top 5 streams that have had the highest throughput in the last 1 minutes. 
sql>  
SELECT streams.name, sum(append_throughput.throughput_1min) AS total_throughput 
FROM append_throughput 
LEFT JOIN streams ON streams.name = append_throughput.stream_name  
GROUP BY stream_name 
ORDER BY total_throughput DESC 
LIMIT 0, 5;

查詢結果如下圖所示:

查詢結果

新增資料寫入 Rest API,基於 HStreamDB 的更多可能

現在可以使用任何語言通過 Rest API 向 HStreamDB 寫入資料,後續我們計劃將開放更多 Rest API,方便開源使用者圍繞 HStreamDB 進行二次開發,例如:通過 HStream Rest API 結合 EMQ X 開源版的 Webhook 功能,能夠實現 EMQ X 和 HStreamDB 的快速整合。

HStreamDB Rest API

發展規劃

在 HStreamDB 的後續版本,我們將主要圍繞以下目標繼續迭代:

  • 提升叢集的穩定性: 增加更多整合測試,錯誤注入測試,改進程式碼設計和修復 bug
  • 改善可用性和運維能力:改進 CLI tools,配置,Rest API,Java Client
  • 增加 stream 的擴充套件能力:當前 HStreamDB 可以高效支援大量 stream 的同時併發讀寫,但是當單個 stream 成為熱點後會面臨效能瓶頸,後續我們計劃通過透明分割槽的方式解決這一問題,核心原則是盡力保持使用者層面概念的簡單性,將分割槽之類的複雜性封裝在內部實現裡,相比其它現有的解決方案,這將極大提升使用者的使用體驗。

HStreamDB 是資料基礎設施邁向實時資料時代的一次開創性嘗試。隨著研發迭代的不斷推進,相信未來從多種資料來源持續產生的大規模流資料將通過 HStreamDB 得到更加高效的儲存管理和實時分析,從資料獲取洞察、產生價值的過程將被極大加速。 敬請關注 HStreamDB 的後續進展。

相關文章