Si 您正在尋找分佈式 DBMS 使用 SQLite 作為存儲引擎,讓我告訴你 rqlite 適合你,因為它允許從彼此同步的存儲中組織集群的工作。
從 rqlite 特徵來看, 突出了安裝、實施和維護的簡便性 分佈式存儲 容錯,有點類似於 etcd 和 Consul, 但它使用關係數據模型而不是鍵/值格式。
關於 rqlite
Raft 共識算法用於保持所有節點同步。 Rqlite 使用原始 SQLite 庫和 go-sqlite3 驅動程序,除此之外,它還執行一個處理客戶端請求的層,在其他節點中自我複制並監控就主節點的選擇達成的共識。
對數據庫的更改只能由被選為領導者的節點進行,但是有寫操作的連接可以被定向到集群的其他節點,它會返回leader的地址來重複請求(在下一個版本中,他們承諾添加自動轉發對leader的調用)。
主要關注的是容錯, 所以數據庫管理系統 僅在讀取操作中縮放, 寫操作是瓶頸。 可以從單個節點運行 rqlite 集群,這樣的解決方案可用於通過 HTTP 提供對 SQLite 的訪問,而無需提供容錯能力。
SQLite 數據 在每個節點中,它們不是存儲在文件中,而是存儲在內存中. 在實現 Raft 協議的層級,會記錄所有導致數據庫更改的 SQLite 命令。
此記錄用於復制(在查詢重播級別複製到其他節點)、啟動新節點時或從連接丟失中恢復。
為了減少記錄的大小,使用了自動打包,在指定的更改次數後開始並導致確認快照,新記錄開始(內存中的數據庫狀態與快照+累積更改日誌)。
從 rqlite 特性:
- 易於集群部署,無需單獨安裝 SQLite。
- 能夠快速獲取複製的 SQL 存儲。
- 準備在生產項目中使用。
- HTTP (S) API 的可用性,允許以批處理模式更新數據並確定集群的領導節點。 還提供了各種編程語言的命令行界面和客戶端庫。
- 存在定義其他節點的服務,允許您動態創建集群。
- 支持節點間數據交換的加密。
- 能夠在閱讀時自定義檢查數據的相關性和一致性的級別。
- 連接不參與共識確定的只讀節點的可選能力,用於增加集群對讀取操作的可擴展性。
- 支持基於在單個請求中組合命令的本機形式的事務(不支持基於 BEGIN、COMMIT、ROLLBACK、SAVEPOINT 和 RELEASE 的事務)。
關於 rqlite 6.0
新版本 引入旨在提高集群可靠性的重大架構更改 通過改進將讀寫請求定向到正確的集群節點的過程。
現在 Rqlite 節點 可以復用多個邏輯連接 它們之間使用通過 Raft 協議在節點之間建立的 TCP 連接。 如果請求需要Leader節點的權限,但是發送到Secondary節點,Secondary節點可以確定Leader的地址並發送給客戶端,不需要進行Raft共識計算。
該更改還刪除了用於同步元數據的單獨組件,並刪除了 Raft 對狀態和元數據的單獨處理。
輔助節點現在僅在需要時才向領導節點發送請求,當需要找出領導節點的地址時。 API 提供了獲取集群中其他節點狀態信息的能力。 Sysdump 命令添加到 CLI。
終於 如果您有興趣了解更多信息 或者查閱安裝說明和用戶手冊,你可以做到 從下面的鏈接。