Cannonball Rust 構(gòu)建的 QEMU 插件的框架
Cannonball 是一個用 Rust 構(gòu)建 QEMU 插件的框架!您可以在 C 語言的 QEMU TCG 插件中執(zhí)行的任何操作,都可以使用cannonball。編寫以最小的開銷和盡可能多的功能運行的插件!
例子
這里提供了幾個例子!
-
jaivana
一個簡單的跟蹤器,將一組可配置的事件記錄到文件或標(biāo)準(zhǔn)輸出中。
-
mons meg
一個跟蹤器,記錄與 Jaivana 相同的事件,但使用 Tokio 在異步環(huán)境中運行跟蹤,通過 UNIX 套接字而不是匿名管道與主機進行通信。 看看它們,它們是學(xué)習(xí)如何使用這個框架的最佳方式。
安裝
安裝 只需將其添加到您的 Cargo.toml:
cannonball = "0.2.4"
J
aivana 的演示例子:https://github.com/novafacing/cannonball/tree/main/examples/jaivana
kiddb 基于 Rust 的嵌入式存儲引擎
整體設(shè)計參考LevelDB,旨在作為NewSQL數(shù)據(jù)庫的存儲引擎
-
支持嵌入式/單機存儲/遠(yuǎn)程調(diào)用等多應(yīng)用場景
-
以Kiss作為開發(fā)理念,設(shè)計以簡單而高效為主導(dǎo)
-
實現(xiàn)MVCC以支持ACID
-
性能,BenchMark 讀取吞吐量約為 Sled 的兩倍,且大數(shù)據(jù)量下的讀取順序平均延遲為 1μs 左右
-
遠(yuǎn)程連接使用ProtoBuf實現(xiàn),支持多語言通信
-
極小內(nèi)存占用(占用/大量冷數(shù)據(jù))
-
安全讀取
組件引入
kip_db = "0.1.1-alpha.0"
代碼
代碼編譯
cargo build
代碼編譯(正式環(huán)境)
cargo build --release
單元測試
cargo test
性能基準(zhǔn)測試
cargo bench
Docker鏡像編譯
編譯鏡像
docker build -t kould/kip-db:v1 .
運行鏡像
docker run kould/kip-db:v1
直接調(diào)用(基本使用)
/// 指定文件夾以開啟一個KvStore let kip_db = LsmStore::open("/welcome/kip_db").await?; // 插入數(shù)據(jù) kip_db.set(&b"https://github.com/KKould/KipDB", Bytes::from(&b"your star plz"[..])).await?; // 獲取數(shù)據(jù) let six_pence = kip_db.get(&b"my deposit").await?; // 已占有硬盤大小 let just_lot = kip_db.size_of_disk().await? // 已有數(shù)據(jù)數(shù)量 let how_many_times_you_inserted = kip_db.len().await?; // 刪除數(shù)據(jù) kip_db.remove(&b"ex girlfriend").await?; // 創(chuàng)建事務(wù) let mut transaction = kip_db.new_transaction().await?; // 插入數(shù)據(jù)至事務(wù)中 transaction.set(&b"this moment", Bytes::from(&b"hope u like it"[..])); // 刪除該事務(wù)中key對應(yīng)的value transaction.remove(&b"trouble")?; // 獲取此事務(wù)中key對應(yīng)的value let ping_cap = transaction.get(&b"dream job")?; // 提交事務(wù) transaction.commit().await?; // 創(chuàng)建持久化數(shù)據(jù)迭代器 let guard = kip_db.iter().await?; let mut iterator = guard.iter()?; // 獲取下一個元素 let hello = iterator.next_err()?; // 移動至第一個元素 let world = iterator.seek(Seek::Last)?; // 強制數(shù)據(jù)刷入硬盤 kip_db.flush().await?;
-
插件
+關(guān)注
關(guān)注
0文章
320瀏覽量
22396 -
Docker
+關(guān)注
關(guān)注
0文章
453瀏覽量
11792 -
qemu
+關(guān)注
關(guān)注
0文章
57瀏覽量
5318 -
Rust
+關(guān)注
關(guān)注
1文章
228瀏覽量
6542
原文標(biāo)題:【Rust日報】2023-07-19 Cannonball -- Rust 構(gòu)建的 QEMU 插件的框架
文章出處:【微信號:Rust語言中文社區(qū),微信公眾號:Rust語言中文社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論