使用指南
Rust SDK
用 pole_rust 以 Proxyless 方式接入服务发现、配置中心与治理视图。
Rust SDK(crate:pole_rust)让应用在不依赖数据面代理的情况下接入 Lattice Hub。客户端通过 gRPC 直连控制面发现与配置端口,并在本地执行路由、负载均衡等治理逻辑。
安装
[dependencies]
pole_rust = "0.2.0"环境要求:Rust >= 1.63.0。
配置
默认读取 ./pole.yaml / ./pole.yml,或通过 POLE_RUST_CONFIG 指定路径。关键片段:
global:
serverConnectors:
discover:
addresses:
- 127.0.0.1:8091
protocol: grpc
config:
addresses:
- 127.0.0.1:8093
protocol: grpc
client:
id: my-rust-service
consumer:
loadBalancer:
defaultPolicy: weightedRandom完整示例见仓库 tests/data/default-config.yml。
服务发现最小示例
仓库 examples/discover.rs 演示 Provider 注册、Consumer 拉取与选实例:
use std::sync::Arc;
use pole_rust::{
core::context::SDKContext,
discovery::api::{
new_consumer_api_by_context, new_provider_api_by_context,
},
};
#[tokio::main]
async fn main() {
let ctx = Arc::new(SDKContext::default().expect("sdk context"));
let provider = new_provider_api_by_context(ctx.clone()).expect("provider");
let consumer = new_consumer_api_by_context(ctx).expect("consumer");
// provider.register(InstanceRegisterRequest { namespace, service, ip, port, ... }).await
// consumer.get_all_instance(...).await
// consumer.get_one_instance(...).await // 含路由与负载均衡
}运行示例前请确保控制面 8091 可访问,并已存在目标 Namespace。
配置中心示例
仓库 examples/config.rs 覆盖创建、发布与监听配置文件。流程与 Console 一致:先有文件内容,再发布,客户端 watch 发布结果。
能力边界
SDK 侧已覆盖的主路径包括:
- Provider:注册 / 反注册 / 心跳
- Consumer:拉全量实例、选一实例、watch、调用结果上报
- 路由链、限流、熔断、故障探测、无损上下线等治理消费
- 配置文件发布与 watch
具体插件是否启用取决于本地 pole.yaml 与控制面 active 规则。
验证
# 单元测试
cargo test
# 指向真实控制面的 e2e(需本机已启动 Console / gRPC)
cargo run -p e2e_tests -- \
--console-url http://127.0.0.1:8080 \
--client-addr 127.0.0.1:8091可用 cargo bench 自行跑基准;官网不写未公开的压测结论。