apache ignite_Apache Ignite本机持久性,简要概述
apache ignite
通過將數(shù)據(jù)的工作集放入系統(tǒng)內(nèi)存中,內(nèi)存中方法可以達(dá)到極高的速度。 當(dāng)所有數(shù)據(jù)都保存在內(nèi)存中后,就不再需要處理使用傳統(tǒng)旋轉(zhuǎn)磁盤引起的問題。 例如,這意味著無需維護(hù)數(shù)據(jù)的其他緩存副本并管理它們之間的同步。 但是這種方法還有一個缺點,因為數(shù)據(jù)僅在內(nèi)存中,如果整個集群都終止了,數(shù)據(jù)將無法生存。 因此,根本不認(rèn)為此類數(shù)據(jù)存儲具有持久性。
在這篇博客文章中,我將努力探索Apache Ignite的本機(jī)持久性新功能,并提供清晰易懂的圖片,說明Apache Ignite的本機(jī)持久性如何工作。
在大多數(shù)情況下,您不能(不應(yīng))將整個數(shù)據(jù)集存儲在應(yīng)用程序的內(nèi)存中,大多數(shù)情況下,應(yīng)該存儲相對較小的熱數(shù)據(jù)或活動數(shù)據(jù)子集,以提高應(yīng)用程序的性能。 其余數(shù)據(jù)應(yīng)存儲在低成本磁盤或磁帶中的某個位置以進(jìn)行歸檔。 有兩種主要的內(nèi)存數(shù)據(jù)庫存儲需求:
- 如果需要將內(nèi)存數(shù)據(jù)庫重新加載到內(nèi)存中,則永久介質(zhì)可以存儲已提交的事務(wù),從而保持持久性并用于恢復(fù)目的。
- 永久存儲,用于保存整個內(nèi)存數(shù)據(jù)庫的備份副本。
永久存儲或媒體可以是任何分布式或本地文件系統(tǒng),SAN,NoSQL數(shù)據(jù)庫,甚至是RDBMS(例如Postgres或Oracle)。 Apache Ignite(從1.5版開始)提供了一種優(yōu)雅的方式來連接持久性數(shù)據(jù)存儲(例如RDBMS或NoSQL DB,例如Mongo DB或Cassandra)。 RDBMS中的持久性通常是瓶頸,并且您永遠(yuǎn)不會在系統(tǒng)中獲得水平擴(kuò)展。 有關(guān)更多信息,我建議您閱讀“ 使用Apache Ignite進(jìn)行高性能內(nèi)存計算 ”一書中的示例章節(jié)。
因此,從版本2.1.0開始 ,Apache Ignite提供了與ACID和SQL兼容的磁盤存儲,該磁盤存儲與Ignite的持久性內(nèi)存透明集成,作為可選的磁盤層,用于存儲SSD,Flash,3D XPoint和其他類型的非易失性數(shù)據(jù)和索引倉庫。
Apache Ignite本機(jī)持久性使用新的持久性內(nèi)存架構(gòu) ,該架構(gòu)允許存儲和處理數(shù)據(jù)以及在內(nèi)存和磁盤上建立索引。 只要啟用該功能,Apache Ignite就會根據(jù)其容量將超數(shù)據(jù)集存儲在磁盤上,并將一部分?jǐn)?shù)據(jù)存儲在RAM中。 如果RAM中缺少數(shù)據(jù)子集或索引,則耐用內(nèi)存將從磁盤中取出數(shù)據(jù),如下圖所示。
數(shù)據(jù)也可以存儲在中央磁盤存儲中,所有Ignite節(jié)點都連接在中央磁盤存儲中,如下所示。
在開始之前,讓我們在沙箱中介紹項目的先決條件:
安裝。
基本上有兩種使用Apache Ignite的方法:
- 下載二進(jìn)制發(fā)行版,然后將歸檔文件解壓縮到操作系統(tǒng)中的某個位置,然后使用spring config文件運(yùn)行./ignite.sh bash腳本。
- 使用所需的Apache Ignite依賴關(guān)系創(chuàng)建一個maven項目,通過java代碼配置節(jié)點并運(yùn)行它。
在這里,我將使用第一個選項。
第1步。
- 下載 Apache Ignite二進(jìn)制發(fā)行版,并將發(fā)行版解壓縮到沙箱中的某個位置。
- 修改IGNITE_HOME / examples / config / persistentstore / example-persistent-store.xml文件,并注釋高速緩存配置的以下部分。
請注意,要啟用Ignite本機(jī)持久性,只需傳遞以下配置(PersistentStoreConfiguration的實例),該配置已在example-persistent-store.XML文件中進(jìn)行了預(yù)配置。
<property name="persistentStoreConfiguration"> <bean class="org.apache.ignite.configuration.PersistentStoreConfiguration"/> </property>- 從IGNITE_HOME目錄運(yùn)行以下命令。
- 在pom.xml中添加以下依賴項
- 創(chuàng)建具有以下內(nèi)容的Java類。
請注意,我們使用Ignite客戶端模式來處理數(shù)據(jù)。 運(yùn)行HelloWorld應(yīng)用程序后,應(yīng)在緩存中插入100個元素(緩存名稱
testCache )。
第三步
- 讓我們使用ignitevisor命令工具檢查數(shù)據(jù)。 在ignitevisor命令工具中使用cache -scan命令。 您應(yīng)該在控制臺中得到類似的插圖。 緩存中的所有100個元素。
- 現(xiàn)在,讓我們看看引擎蓋下發(fā)生了什么。
您應(yīng)該在控制臺中得到如下所示的內(nèi)容。
如果啟用了Apache Ignite本機(jī)持久性,則Ignite將在所有群集節(jié)點上的內(nèi)存和磁盤上持久存儲所有數(shù)據(jù)和索引。
如果要通過目錄db / 0_0_0_0_0_0_0__10_211_55_2_10_37_129_2_127_0_0_1_192_168_1_37_47500(在我的情況下),則將為每個緩存找到單獨的文件夾。 名稱為cache-testCache的文件夾將包含我們剛剛插入的所有緩存條目(100個元素)。
文件index.bin是緩存條目的索引,每個緩存元素都獲取其各自的頁面文件。 為什么會這樣呢? 現(xiàn)在,Ignite體系結(jié)構(gòu)是基于頁面的體系結(jié)構(gòu)。 讓我們仔細(xì)看看,內(nèi)存現(xiàn)在分為區(qū)域->區(qū)域分為段->段分為頁。 頁面可以交換到磁盤中。 頁面可以存儲:
- 數(shù)據(jù)
- 元數(shù)據(jù)
- 指數(shù)
頁面是固定長度的塊,它還支持自動碎片整理。 如果仔細(xì)看一下頁面大小,它們?nèi)际?4 KB。 每當(dāng)Ignite需要從磁盤加載數(shù)據(jù)時,它只會加載頁面文件,因此速度非常快。
同樣,還有一個關(guān)于預(yù)寫日志(WAL)的概念。 如果進(jìn)行更新,則首先將更新內(nèi)存中的數(shù)據(jù)并將頁面標(biāo)記為臟,然后將數(shù)據(jù)持久保存到預(yù)寫日志中。 點燃只是將更新附加到WAL文件中。 WAL文件與Cassandra commitlog文件非常相似,但有一個區(qū)別。 Cassandra將并行寫入內(nèi)存和磁盤上的commitlog文件,另一方面,Ignite首先將數(shù)據(jù)更新到內(nèi)存中,然后將數(shù)據(jù)附加到WAL中。 有關(guān)更多信息,我建議您看看
文檔 ,這是非常詳盡的。
第4步。
- 重新啟動Ignite節(jié)點,并檢查緩存
testCache與
點火器 。 您最終會驚訝地發(fā)現(xiàn)沒有數(shù)據(jù)進(jìn)入緩存。
- 讓我們稍微修改一下helloworld類,然后再次運(yùn)行該應(yīng)用程序,注釋或刪除以下代碼片段,如下所示。
每當(dāng)發(fā)生任何讀取請求時,Ignite首先都會將數(shù)據(jù)檢入內(nèi)存。 如果內(nèi)存中不存在該數(shù)據(jù)集,則Ignite立即從磁盤加載緩存條目并加載到內(nèi)存中。 還要注意的是,所有條目都以堆的形式進(jìn)入內(nèi)存。
好處 。
借助Ignite本機(jī)持久性,現(xiàn)在您可以輕松地進(jìn)行數(shù)據(jù)恢復(fù)備份,Denis Magda通過使用Ignite本機(jī)持久性撰寫了一篇有關(guān)數(shù)據(jù)恢復(fù)的綜合文章 。 我在這里必須提到的一件事是集群之間的數(shù)據(jù)復(fù)制。 通過使用Ignite本機(jī)持久性,現(xiàn)在您可以在線將數(shù)據(jù)從一個群集復(fù)制到另一個群集。 您可以使用任何基于磁盤的標(biāo)準(zhǔn)數(shù)據(jù)復(fù)制工具將已更改的數(shù)據(jù)集從主數(shù)據(jù)中心復(fù)制到備用數(shù)據(jù)中心或Ignite群集。
翻譯自: https://www.javacodegeeks.com/2017/09/apache-ignite-native-persistence-brief-overview.html
apache ignite
總結(jié)
以上是生活随笔為你收集整理的apache ignite_Apache Ignite本机持久性,简要概述的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑版游戏生化危机(电脑版游戏生化危机7
- 下一篇: 电脑亮点检测工具(亮点测试软件)