Hazelcast - 簡介



分散式記憶體資料網格

資料網格是分散式快取的超集。分散式快取通常僅用於儲存和檢索跨快取伺服器分佈的鍵值對。但是,資料網格除了支援儲存鍵值對之外,還支援其他功能,例如:

  • 它支援其他資料結構,如鎖、訊號量、集合、列表和佇列。

  • 它提供了一種透過豐富的查詢語言(例如 SQL)查詢儲存資料的途徑。

  • 它提供了一個分散式執行引擎,有助於並行操作資料。

Hazelcast 的優勢

  • 支援多種資料結構 - Hazelcast 支援除了 Map 之外使用多種資料結構。一些示例包括 Lock、Semaphore、Queue、List 等。

  • 快速讀寫訪問 - 鑑於所有資料都在記憶體中,Hazelcast 提供了非常高速的資料讀寫訪問。

  • 高可用性 - Hazelcast 支援跨機器分佈資料,並額外支援備份。這意味著資料不會儲存在單個機器上。因此,即使機器出現故障(這在分散式環境中經常發生),資料也不會丟失。

  • 高效能 - Hazelcast 提供了可用於在多臺工作機器之間分配工作負載/計算/查詢的構造。這意味著計算/查詢使用來自多臺機器的資源,從而大大減少了執行時間。

  • 易於使用 - Hazelcast 實現並擴充套件了許多 java.util.concurrent 構造,這使得它非常易於使用和整合到程式碼中。在機器上開始使用 Hazelcast 的配置只需將 Hazelcast jar 新增到我們的類路徑中。

Hazelcast 與其他快取和鍵值儲存的比較

將 Hazelcast 與其他快取(如 Ehcache、Guava 和 Caffeine)進行比較可能沒有多大用處。這是因為,與其他快取不同,Hazelcast 是一個分散式快取,也就是說,它將資料分佈在機器/JVM 上。雖然 Hazelcast 也可以在單個 JVM 上很好地工作,但它在分散式環境中更有用。

類似地,將它與 MongoDB 等資料庫進行比較也沒有多大用處。這是因為 Hazelcast 主要將資料儲存在記憶體中(儘管它也支援寫入磁碟)。因此,它提供了高讀寫速度,但資料需要儲存在記憶體中的限制。

Hazelcast 還支援快取/儲存複雜資料型別並提供查詢它們的介面,這與其他資料儲存不同。

但是,可以與Redis進行比較,Redis 也提供了類似的功能。

Hazelcast 與 Redis 的比較

在功能方面,Redis 和 Hazelcast 非常相似。但是,以下是 Hazelcast 在 Redis 上得分更高的幾點:

  • 從一開始就構建用於分散式環境 - 與最初作為單機快取的 Redis 不同,Hazelcast 從一開始就構建用於分散式環境。

  • 簡單的叢集擴充套件/縮容 - 在 Hazelcast 中,維護一個新增或刪除節點的叢集非常簡單,例如,新增節點只需啟動具有所需配置的節點即可。刪除節點需要簡單地關閉節點。Hazelcast 自動處理資料的劃分等。在 Redis 上擁有相同的設定並執行上述操作需要更多預防措施和手動操作。

  • 支援故障轉移所需的資源更少 - Redis 遵循主從方法。為了進行故障轉移,Redis 需要額外的資源來設定Redis Sentinel。這些 Sentinel 節點負責在原始主節點出現故障時將從節點提升為主節點。在 Hazelcast 中,所有節點都被視為平等的,其他節點檢測到節點故障。因此,節點出現故障的情況處理得非常透明,而且無需任何額外的監控伺服器集。

  • 簡單的分散式計算 - Hazelcast 透過其EntryProcessor提供了一個簡單的介面,用於將程式碼傳送到資料以進行並行處理。這減少了網路上的資料傳輸。Redis 也支援這一點,但是實現這一點需要了解 Lua 指令碼,這增加了額外的學習曲線。

廣告