26 个版本 (稳定)
8.1.3 | 2024 年 4 月 25 日 |
---|---|
8.1.2 | 2023 年 10 月 2 日 |
8.1.1 | 2023 年 5 月 11 日 |
8.0.0-beta.1 | 2023 年 3 月 6 日 |
1.0.0 | 2020 年 11 月 17 日 |
在 数据库接口 中排名第 158
每月下载量 17,953
用于 cqlmig-cdrs-tokio
750KB
19K SLoC
CDRS tokio
CDRS 是一个专为生产环境准备的、纯 Rust 编写的 Apache Cassandra driver。它专注于提供高可配置性,以适应各种规模的使用场景,同时利用 Rust 的安全和性能。
特性
- 异步 API;
- TCP/TLS 连接 (rustls);
- 拓扑感知的动态和可配置负载均衡;
- 可配置的连接策略和池;
- 可配置的猜测执行;
- LZ4、Snappy 压缩;
- Cassandra 到 Rust 数据序列化/反序列化,支持自定义类型;
- 可插拔的认证策略;
- ScyllaDB 支持;
- 服务器事件监听;
- 支持多个 CQL 版本 (3, 4, 5),完整规范实现;
- 查询跟踪信息;
- 预编译语句;
- 查询分页;
- 批处理语句;
- 可配置的重试和重新连接策略;
- 支持交错查询;
- 支持 Yugabyte YCQL JSONB;
- 支持 beta 协议使用;
性能
由于 CDRS 的高度可配置性,性能会根据使用场景而有所不同。以下基准测试是在 2021 年 3 月 12 日各自的库的最新版本(除 cassandra-cpp: 2.16.0)和协议版本 4 下进行的。
cdrs-tokio-large-pool
- CDRS 的节点连接池等于物理 CPU 核心的两倍cdrs-tokio-small-pool
- CDRS 的每个节点一个连接scylladb-rust-large-pool
-scylla
crate 的节点连接池等于物理 CPU 核心的两倍scylladb-rust-small-pool
-scylla
crate 的每个节点一个连接cassandra-cpp
- Rust 绑定 Datastax C++ 驱动程序,使用 Tokio 在多个线程上运行gocql
- 使用 Go 编写的驱动程序
了解给定的用例后,CDRS 可以优化以实现峰值性能。
文档和示例
入门指南
此示例配置了一个由单个节点组成的集群,未进行身份验证,并使用轮询负载均衡。其他选项保持为默认设置。
use cdrs_tokio::cluster::session::{TcpSessionBuilder, SessionBuilder};
use cdrs_tokio::cluster::NodeTcpConfigBuilder;
use cdrs_tokio::load_balancing::RoundRobinLoadBalancingStrategy;
use cdrs_tokio::query::*;
#[tokio::main]
async fn main() {
let cluster_config = NodeTcpConfigBuilder::new()
.with_contact_point("127.0.0.1:9042".into())
.build()
.await
.unwrap();
let session = TcpSessionBuilder::new(RoundRobinLoadBalancingStrategy::new(), cluster_config)
.build()
.await
.unwrap();
let create_ks = "CREATE KEYSPACE IF NOT EXISTS test_ks WITH REPLICATION = { \
'class' : 'SimpleStrategy', 'replication_factor' : 1 };";
session
.query(create_ks)
.await
.expect("Keyspace create error");
}
许可协议
本项目许可协议为以下之一
- Apache 许可协议 2.0 版,(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可协议 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
依赖项
~9–20MB
~277K SLoC