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