15 个版本 (8 个破坏性更新)
0.9.0 | 2018年12月15日 |
---|---|
0.8.0 | 2017年8月5日 |
0.7.0 | 2017年7月22日 |
0.5.5 | 2016年10月15日 |
0.1.0 | 2015年4月11日 |
#2507 在 数据库接口
每月 47 次下载
105KB
2K SLoC
etcd
一个为 Rust 编写的 etcd 客户端库。
运行测试
- 安装 Docker 和 Docker Compose。
- 运行
make
. 这将使您进入容器中的 Bash shell。 - 在容器内部,运行
cargo test
.
许可证
lib.rs
:
Crate etcd
为 etcd 提供了一个客户端,这是一个来自 CoreOS 的分布式键值存储。
客户端使用 etcd 的 v2 API。v3 API 的支持计划中,将通过单独的类型添加,以支持向后兼容性和同时支持两个 API。
客户端使用异步 I/O,由 futures
和 tokio
Crate 支持,并需要同时使用它们。在可能的情况下,使用 "impl Trait" 而不是装箱返回 futures。
客户端针对 etcd 2.3.8 进行了测试。
用法
Client
是所有 API 调用所需的 HTTP 客户端。它可以构建为使用 HTTP 或 HTTPS,并支持通过 HTTP 基本身份验证(用户名和密码)以及/或 X.509 客户端证书对 etcd 集群进行身份验证。
要获取有关集群中运行的 etcd 健康和版本的基本信息,请分别使用 Client::health
和 Client::versions
方法。所有其他 API 调用都是通过将 Client
引用传递给 auth
、kv
、members
和 stats
模块中的函数来执行的。这些模块分别包含对认证和授权 API、主要键值存储 API、集群成员资格 API 和统计 API 的 API 调用函数。
示例
基本用法
use etcd::Client;
use etcd::kv::{self, Action};
use futures::Future;
use tokio::runtime::Runtime;
fn main() {
// Create a client to access a single cluster member. Addresses of multiple cluster
// members can be provided and the client will try each one in sequence until it
// receives a successful response.
let client = Client::new(&["http://etcd.example.com:2379"], None).unwrap();
// Set the key "/foo" to the value "bar" with no expiration.
let work = kv::set(&client, "/foo", "bar", None).and_then(move |_| {
// Once the key has been set, ask for details about it.
let get_request = kv::get(&client, "/foo", kv::GetOptions::default());
get_request.and_then(|response| {
// The information returned tells you what kind of operation was performed.
assert_eq!(response.data.action, Action::Get);
// The value of the key is what we set it to previously.
assert_eq!(response.data.node.value, Some("bar".to_string()));
// Each API call also returns information about the etcd cluster extracted from
// HTTP response headers.
assert!(response.cluster_info.etcd_index.is_some());
Ok(())
})
});
// Start the event loop, driving the asynchronous code to completion.
assert!(Runtime::new().unwrap().block_on(work).is_ok());
}
Cargo 功能
Crate etcd
有一个 Cargo 功能,tls
,它通过 Client::https
构造函数添加 HTTPS 支持。此功能默认启用。
依赖项
~9–19MB
~297K SLoC