14个版本
使用旧的Rust 2015
0.5.3 | 2017年5月14日 |
---|---|
0.4.2 | 2017年3月26日 |
0.4.1 | 2016年4月20日 |
0.4.0 | 2015年6月27日 |
#5 in #kademlia
每月35次下载
66KB
2K SLoC
公告板DHT
https://github.com/manuels/bulletinboard-dht
简介
BulletinBoard是一个基于Kademlia的通用分布式哈希表。
接口通过以下命令提供作为D-Bus服务(见以下示例或Python示例)
Service: org.manuel.BulletinBoard
Object Path: /
Interface: org.manuel.BulletinBoard
Commands:
- Store(app_id: str, key: [u8], value: [u8], lifetime_sec: u64)
- Put(app_id: str, key: [u8], value: [u8])
- Get(app_id: str, key: [u8]) -> (values: [[u8]])
请注意,值不得超过2048字节!
你在DHT中Put()的值的生命周期为15分钟,所以你应该每10分钟调用一次Put()以确保它保持在DHT中(或者只需使用Store())。
安装
-
下载
# Debian/Ubuntu wget 'https://github.com/manuels/bulletinboard-dht/releases/download/v0.5.3/bulletinboard_0.5.3_amd64.deb' # Fedora wget 'https://github.com/manuels/bulletinboard-dht/releases/download/v0.5.3/bulletinboard-0.5.3-1.x86_64.rpm'
-
安装bulletinboard
# Debian/Ubuntu sudo dpkg -i bulletinboard_0.5.3_amd64.deb # Fedora sudo rpm -ivh bulletinboard-0.5.3.x86_64.rpm
使用方法
通常BulletinBoard被第三方应用程序用于存储和查找数据。您可以通过DBus接口手动执行此操作,例如在您的shell脚本中。
存储数据
Put()命令将数据存储在DHT中。在这个例子中,我们使用应用程序IDmytestapp将值[8B,AD,F0,0D]存储在键你吃了什么?下
$ dbus-send --session \
--type=method_call \
--dest=org.manuel.BulletinBoard / \
org.manuel.BulletinBoard.Put \
string:"mytestapp" \
array:byte:"what did you eat?" \
array:byte:0x8B,0xAD,0xF0,0x0D
检索数据
现在我们可以通过询问DHT在键你吃了什么?下存储了什么来获取存储的数据。使用Get()命令,我们获取到我们之前存储的[8B,AD,F0,0D]值
$ dbus-send --session \
--reply-timeout=60000 \
--print-reply \
--type=method_call \
--dest=org.manuel.BulletinBoard / \
org.manuel.BulletinBoard.Get \
string:"mytestapp" \
array:byte:"what did you eat?"
array [
array of bytes [
8B AD F0 0D
]
]
开发
-
获取Rust
-
克隆
git clone https://github.com/manuels/bulletinboard-dht.git
-
构建
cargo build --release
(在bulletinboard-dht目录中)
依赖关系
~10MB
~190K SLoC