LevelDB 儲存
警告
LevelDB 儲存已從生產環境中移除。此頁面僅作為先前版本的存檔頁面。請改用 KahaDB。
版本相容性
在 ActiveMQ Classic 5.8.0 中可用,但自 5.14.2 起不再支援,並在 5.17.0 中移除
LevelDB 儲存是一種基於檔案的持久性資料庫,位於使用它的訊息代理程式的本機。它經過優化,可提供比 KahaDB 更快的持久性。它類似於 KahahDB,但它不是使用自訂的 B 樹實作來索引預寫日誌,而是使用基於 LevelDB 的索引,這些索引由於「僅附加」檔案存取模式而具有幾個優良特性
- 快速更新(無需執行隨機磁碟更新)
- 並行讀取
- 使用硬連結的快速索引快照
KahaDB 和 LevelDB 儲存都必須進行週期性的垃圾收集週期,以判斷可以刪除哪些日誌檔案。在 KahaDB 的情況下,當您增加儲存的資料量時,這可能會非常耗時,並可能在收集期間導致讀/寫停頓。LevelDB 儲存使用一種更便宜的演算法來判斷何時可以收集日誌檔案,並避免這些停頓。
組態
您可以將 ActiveMQ Classic 設定為使用 LevelDB 作為其持久性配接器 - 如下所示
<broker brokerName="broker" ... >
...
<persistenceAdapter>
<levelDB directory="activemq-data"/>
</persistenceAdapter>
...
</broker>
LevelDB 屬性
屬性名稱 | 預設值 | 註解 |
---|---|---|
目錄 |
LevelDB |
儲存將用於存放其資料檔案的目錄。如果目錄尚不存在,儲存將建立該目錄。 |
同步 |
true |
如果設定為 false,則儲存不會將記錄作業同步到磁碟 |
logSize |
104857600 (100 MB) |
在發生日誌檔案輪換之前,每個資料日誌檔案的最大大小(以位元組為單位)。 |
verifyChecksums |
false |
設定為 true 以強制驗證從檔案系統讀取的所有資料的校驗和。 |
paranoidChecks |
false |
如果偵測到內部損壞,則使儲存儘快發生錯誤。 |
indexFactory |
org.fusesource.leveldbjni.JniDBFactory , org.iq80.leveldb.impl.Iq80DBFactory |
建立 LevelDB 索引時要使用的工廠類別 |
indexMaxOpenFiles |
`1000 | 索引可以使用的開啟檔案數。 |
indexBlockRestartInterval |
16 | 用於金鑰差異編碼的重新啟動點之間的金鑰數。 |
indexWriteBufferSize |
6291456 (6 MB) |
在轉換為排序的磁碟檔案之前,要在記憶體中建立的索引資料量。 |
indexBlockSize |
4096 (4 K) |
每個區塊封裝的索引資料大小。 |
indexCacheSize |
268435456 (256 MB) |
用於快取索引區塊的離堆記憶體最大量。 |
indexCompression |
snappy |
套用於索引區塊的壓縮類型。可以是 snappy 或 none。 |
logCompression |
none |
套用於日誌記錄的壓縮類型。可以是 snappy 或 none。 |
有關調整鎖定屬性,請查看 可插拔儲存鎖定器
另請參閱
- 複製的 LevelDB 儲存 此儲存的擴充版本,可自行複製到其他代理程式節點,以提高訊息可用性。