Pegasus 1.11.3 釋出,小米分散式 KV 儲存系統
Pegasus 1.11.3 釋出了。Pegasus 是小米雲端儲存團隊開發的一個分散式 Key-Value 儲存系統,最初的動機是彌補 HBase 在可用性和效能上的不足。Pegasus 系統的 Server 端完全採用 C++ 語言開發,使用PacificA 協議支援強一致性,使用RocksDB 作為單機儲存引擎。
新版更新內容如下:
新特性
-
改進客戶端查詢路由表邏輯,支援讓非主MetaServer返回主MetaServer的真正地址,方便擴充套件新的MetaServer節點 (XiaoMi/rdsn#212 XiaoMi/rdsn#217 )
-
支援為rocksdb不同level的檔案配置不同的壓縮演算法 (#243 )
-
改進Manual-Compact功能,增加環境變數
manual_compact.max_concurrent_running_count
,支援限制compact併發數 (#250 ) -
增加環境變數
rocksdb.checkpoint.reserve_min_count
和rocksdb.checkpoint.reserve_time_seconds
,支援動態修改rocksdb checkpoint保留策略 (#252 ) -
為ReplicaServer增加遠端命令
useless-dir-reserve-seconds
,支援動態修改無用資料夾的保留時間,方便快速釋放儲存空間 (XiaoMi/rdsn#215 ) -
增加cluster balance indicator功能,監控叢集的負載均衡狀態 (#269 XiaoMi/rdsn#214 )
Bug修復
-
修復在關閉block_cache後對空指標進行非法訪問的bug (#241 )
-
修復failure detection無法保證同一時刻只有一個primary的bug,並將心跳超時的預設時間調長 (#247 XiaoMi/rdsn#213 )
-
修復編譯指令碼中沒有連結上tcmalloc庫的bug (#289 )
效能優化
-
修改rocksdb的預設壓縮演算法為lz4 (#240 )
-
改進Manual-Compact功能,在執行完成後儘快清理老的checkpoint,以快速釋放儲存空間 (#253 )
-
改進Cold-Backup功能,在執行完成後立即清理backup資料夾下的checkpoint,以快速釋放儲存空間 (XiaoMi/rdsn#216 )
重構與化簡
-
重構partition resolver模組:將該模組移到replication/client下面,並移除uri resolver (#242 XiaoMi/rdsn#205 )
Shell工具
-
重構輸出結果的表格格式化列印工具 (XiaoMi/rdsn#220 )
-
改進copy_data/clear_data/count_data命令,支援對HashKey/SortKey/Value進行條件過濾 (#271 #292 )
-
改進app_stat命令,顯示app_id和partition_count資料列,並增加
--only_usage
選項 (#271 #285 #288 ) -
改進nodes命令,增加
--resource_usage
選項,顯示各節點的資源使用情況 (#277 )
其他
-
增加
pegasus_check_clusters.py
指令碼,用來檢查叢集的負載均衡狀態 (#244 ) -
改進
.travis.yml
,避免編譯thirdparty庫 (#240 XiaoMi/rdsn#206 ) -
編譯時不再下載
bin/Linux/thrift
,只在呼叫compile_thrift.py
時按需要下載 (XiaoMi/rdsn#207 ) -
完善pegasus-thirdparty-prebuild預編譯包,包含完整的依賴庫,解決依賴庫不完整的問題 (XiaoMi/rdsn#207 )
-
改進
.travis.yml
,在編譯之前自動執行clang-format
進行程式碼風格檢查 (XiaoMi/rdsn#208 ) -
改進falcon screen自動生成指令碼,完善監控圖統計項,調整監控圖展示順序 (#262 #270 XiaoMi/rdsn#218 )
-
改進推薦的配置檔案
src/server/config.ini
(#294 )
相容性
-
推薦的配置檔案中,客戶端MetaServer地址的配置方式發生改變,原來的[uri-resolver]段被棄用,使用新的[pegasus.clusters]段 (#242 )
-
推薦的配置檔案中,失敗檢測心跳超時的時間由原來的10秒增加到20秒 (#247 )
下載地址: