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 儲存 此儲存的擴充版本,可自行複製到其他代理程式節點,以提高訊息可用性。

Apache, ActiveMQ, Apache ActiveMQ、Apache 羽毛標誌和 Apache ActiveMQ 專案標誌是 Apache 軟體基金會的商標。版權所有 © 2024,Apache 軟體基金會。根據 Apache 授權 2.0 授權。