4 个版本 (2 个重大更新)
0.5.1 | 2023 年 6 月 22 日 |
---|---|
0.4.0 | 2023 年 2 月 26 日 |
0.2.1 | 2023 年 1 月 6 日 |
0.2.0 | 2023 年 1 月 6 日 |
#1158 in 并发
每月下载 32 次
用于 3 crates
385KB
8K SLoC
Datacake 集群
构建自己的分布式数据存储或复制状态的全面库。
此库主要基于 Riak 和 Cassandra 的相同概念。共识、成员资格和故障检测由 Quickwit 的 Chitchat 管理,而状态对齐和复制由 Datacake CRDT 管理。
此库侧重于提供简单且易于构建的框架,用于您的分布式应用程序,而不会令人不知所措。事实上,只需实现一个异步特质即可启动和运行。
基本示例
use std::net::SocketAddr;
use datacake_node::{Consistency, ConnectionConfig, DCAwareSelector, DatacakeNodeBuilder};
use datacake_eventual_consistency::test_utils::MemStore;
use datacake_eventual_consistency::EventuallyConsistentStoreExtension;
async fn main() -> anyhow::Result<()> {
let addr = "127.0.0.1:8080".parse::<SocketAddr>().unwrap();
let connection_cfg = ConnectionConfig::new(addr, addr, Vec::<String>::new());
let node = DatacakeNodeBuilder::<DCAwareSelector>::new(1, connection_cfg)
.connect()
.await
.expect("Connect node.");
let store = node
.add_extension(EventuallyConsistentStoreExtension::new(MemStore::default()))
.await
.expect("Create store.");
let handle = store.handle();
handle
.put(
"my-keyspace",
1,
b"Hello, world! From keyspace 1.".to_vec(),
Consistency::All,
)
.await
.expect("Put doc.");
Ok(())
}
完整示例
深入了解示例 在此处 可以找到。
依赖关系
~8–20MB
~249K SLoC