Apache Ignite—不僅僅是數據網格

聞數起舞 發佈 2020-05-17T04:41:54+00:00

Oracle Coherence,Gigaspaces,Hazelcast,Apache Geode —這些都是很好的例子。


我們中的許多人都熟悉數據網格,眾所周知,數據網格是提高各種應用程式性能的好方法。 Oracle Coherence,Gigaspaces,Hazelcast,Apache Geode —這些都是很好的例子。

幾乎所有數據網格背後的中心概念都是分布式的內存哈希表。 "內存中"部分提供了超低的數據訪問延遲,而"分布式"部分則提供了幾乎無限的可擴展性,因此實際上也提供了無限的吞吐量。

通常,數據網格還具有處理功能以及將計算與數據並置的機制。 結果,您將分布式數據存儲和分布式處理引擎進行了強大的組合,從而可以充分利用多台計算機的集體CPU和RAM功能來完成任務。

Apache Ignite是數據網格嗎?

簡短的答案是:"是!"

更長的答案是:"是的,但是還有更多。"

" Apache Ignite是一種水平可伸縮,容錯的分布式內存計算平台,用於構建實時應用程式,該應用程式可以以內存速度處理數TB的數據。" — ignite.apache.org

Apache Ignite最初是作為數據網格創建和開發的。 但是,今天,它具有一些有趣且獨特的功能,這些功能大大擴展了該技術的適用範圍。 這遠遠超出了我們對數據網格的共識。

以下是一些您可以使用Ignite的用例。

高性能綠地應用

數據網格通常在現有遺留數據源(例如關係資料庫)之上運行,並充當現有應用程式的加速機制。

但是,在當今數字化轉型的時代,從一開始,就有大量的新建應用程式需要可伸縮性和性能。 當然,您可以採用"老方法",將一種成熟的RDBMS作為記錄系統,並將其中一個數據網格放在頂部,以提高性能。 但是,此方法具有多種含義:

· 這樣的架構仍然是有限的。 通常,數據網格在處理讀取密集型工作負載時非常有效,但是每當需要編寫某些內容時,都必須轉到基礎資料庫。 因此,資料庫仍然限制了更新的可伸縮性和性能。

· 內存中的存儲是易失性的,這意味著每次重新啟動數據網格集群時,都會使數據不可用。 然後,您需要從基礎資料庫中重新加載數據,這可能會花費很多時間,從而將可能的停機時間增加到不可接受的值。

· 這種方法通常過於複雜,甚至有些"棘手"。 如果您必須部署兩個獨立的數據存儲來滿足一個目的,那麼這是有問題的。 肯定有更好的辦法!

還有更好的方法。 Apache Ignite實現了一個概念,我們稱之為"耐用內存"。 它依賴於頁面內存體系結構,在該體系結構中,任何頁面不僅可以存儲在內存中,還可以存儲在磁碟上-您只需啟用本機持久性選項。 Ignite的持久性是可擴展的,支持事務,SQL和所有其他API。 它與內存層的緊密集成使數據訪問對應用程式完全透明(即,即使尚未將其加載到RAM中,應用程式也可以在任何時間讀取或更新數據)。

開箱即用的持久層的添加將Ignite轉換為以內存為中心的資料庫。 本質上,這將創建一個持久的記錄系統,並具有內存數據網格的可伸縮性和性能特徵,這是對性能敏感的未開發應用程式的理想工具。

HTAP和實時分析

我們都已經習慣了這樣的主張,即事務處理(OLTP)和分析處理(OLAP)應該由單獨的系統完成。 我確定您已經看到類似以下的圖表:

這個想法是在可操作的資料庫中執行操作,然後執行將更改傳播到分析資料庫的ETL過程。 您可以將後者用於分析,機器學習,深度學習等。

許多公司已經使用這種架構很長時間了。 如今,許多公司開始質疑這種方法並尋找替代方法。 問題在於,ETL會定期發生-在最佳情況下,每隔幾個小時就會發生一次,但通常會持續一整夜甚至一個周末。 這樣的過程在操作資料庫的改變和分析系統的相應反應之間產生時間差。 這種滯後與實時分析處理不斷增長的需求不兼容。

想像一下,未經您的同意,其他人使用了您的信用卡。 您的銀行擁有所有這些複雜的欺詐檢測算法,可以通知您某些錯誤。 實時處理可確保您在幾分鐘甚至幾秒鐘內(而不是幾個小時後)收到通知。

實現這種即時反應的唯一方法是將兩個資料庫統一到一個能夠運行混合事務/分析處理(HTAP)的存儲中。

HTAP = OLTP + OLAP

有幾件事使Apache Ignite適合於HTAP。

· Ignite遵循"單一存儲,多個工作負載"的方法,這意味著您可以將所有數據存儲在一個集群中一次,然後通過所有可用的API(鍵值,事務,計算,SQL或計算機)使用這些數據。 學習。

· Ignite的本機持久性允許在磁碟上存儲數據的超集而不會影響數據的可用性。 假設您的數據集總數為幾PB,但是您只有100GB的數據會經常更新和訪問。 將所有內容都存儲在內存中是不合理的,使用Ignite,您不必這樣做。 大多數數據只能存儲在磁碟上,並且在需要時仍對應用程式完全可用。

對實時分析的需求要求我們在架構後端系統的方式上發生重大轉變。 還有很多事情要做,但是Apache Ignite已經提供了令人難以置信的功能組合來支持HTAP工作負載。

數字整合中心

IT架構師當前面臨的最大挑戰之一是數據通常分布在多個系統中。 在一家公司內,您將輕鬆找到關係資料庫,NoSQL資料庫,大型機,數據湖,SaaS解決方案……

不同的API,不同的數據模型,不同的一切。

這類公司越來越經常地需要在多個應用程式的數據之間進行匯總,以更深入地了解業務情況。 IT基礎結構通常無法為此做好準備。

解決方案是創建一個數字集成中心。

" Digital Integration Hub是一種高級應用程式體系結構,它將記錄數據源的多個後端系統聚合到一個低延遲和可擴展的高性能數據存儲中……高性能數據存儲與後端源同步 通過基於事件,基於請求和批處理集成模式的某種組合。" —加特納

本質上,您將來自多個源的數據放入單個可伸縮的內存平台中,並為您擁有的各種應用程式提供統一的API。

Apache Ignite似乎是此類解決方案的出色基礎。 我已經提到了本機持久性,它允許Ignite充當記錄系統,以及它與HTAP工作負載一起工作的能力-當您構建數據集成中心時,兩者都變得很重要。

此外,您還需要一套與資料庫,流媒體平台和SaaS產品集成的集成組件。 以下是Ignite開箱即用提供的一些此類集成:

· CacheStore接口,用於與關係資料庫,NoSQL資料庫或Hadoop等大數據存儲進行可插入同步。

· 多個流連接器。

· 與Apache Spark集成。

過去,分布式緩存曾經是提高性能的主要方式。 儘管不斷出現新的用例和需求,但其中許多系統已演變為我們現在稱為"內存中數據網格"的系統。

同樣,內存計算平台(如Apache Ignite)是分布式系統發展的下一個踏腳石。 數據網格仍然至關重要,並且將在未來很多年保持不變,但是我們需要更全面的框架來滿足最新的現代要求。

實時處理的需求只會持續增長,我很高興看到這種趨勢如何發展。 我也歡迎大家加入Apache Ignite社區,成為其中的一員:https://ignite.apache.org/community/contribute.html

(本文翻譯自Valentin Kulichenko的文章《Apache Ignite — More Than Just a Data Grid》,參考:https://medium.com/swlh/apache-ignite-more-than-just-a-data-grid-fcd9b1208c4f)

關鍵字: