ConnectOptions

enum class datasystem::DataPlacementPolicy : uint8_t

写入数据放置策略。PREFERRED_SAME_NODE 优先同节点 Worker, REQUIRED_SAME_NODE 只允许同节点 Worker,PREFERRED_META_OWNER 优先 metadata owner。该枚举不改变 Get/MGet 的 metadata owner 查询协议。

class ConnectOptions
Header-file:

#include <datasystem/utils/connection.h>

Namespace:

datasystem

用于配置对象客户端的初始化参数的结构体。

公共成员

std::string host

数据系统 Worker 的主机 IP 地址。

int32_t port

数据系统 Worker 的主机 IP 端口号。

int32_t connectTimeoutMs = 9 * 1000;

客户端连接超时时间,单位为毫秒。默认值:9’000, 数值约束>=500。 初始化阶段的 GetSocketPathRegisterClient 等控制 RPC 从当前连接尝试预算计算超时时间, 而不受 requestTimeoutMs 限制。控制 RPC 在对端不可达时返回 StatusCode::K_RPC_PEER_DEAD (不可重试,调用方应快速失败),瞬时网络问题返回 StatusCode::K_RPC_NETWORK_BLIP``(可重试, ``K_RPC_UNAVAILABLE 的重试策略自动覆盖)。

int32_t requestTimeoutMs;

客户端请求超时时间,单位为毫秒。默认值0,表示与connectTimeoutMs一致,数值约束>=0。

Note

此值为 client 运行期业务 RPC 的全局超时上限,不限制客户端初始化阶段的控制 RPC。 Get 类接口的 subTimeoutMs 参数实际生效值不超过此值, 实际生效值为 min(requestTimeoutMs, subTimeoutMs)

std::string clientPublicKey = "";

用于 curve 认证的客户端公钥。默认值:””。

SensitiveValue clientPrivateKey = "";

用于 curve 认证的客户端私钥。默认值:””

std::string serverPublicKey = "";

用于 curve 认证的服务端公钥。默认值:””

std::string accessKey = "";

AK/SK 授权使用的访问密钥。默认值:””

SensitiveValue secretKey = "";

AK/SK 授权的密钥。默认值:””

std::string tenantId = "";

租户 ID。默认值:””

bool enableCrossNodeConnection = false;

如果为 true,允许客户端在与当前数据系统Worker 连接异常时自动切换到备用节点。默认值:false

bool enableLocalCache = true;

控制 Get/MGet 的读路径。为 true 时,Get/MGet 固定走当前绑定 Worker 的 legacy 路径;为 false 时,Get/MGet 固定通过 TransportLayer 按 metadata owner 执行 QueryAndGet,再按 metadata 返回的实际副本位置读取数据。同机副本且 SHM 可用时,TransportLayer 仍会使用 SHM。 默认值:true

DataPlacementPolicy dataPlacementPolicy = DataPlacementPolicy::PREFERRED_SAME_NODE;

enableLocalCache=false 时 Set/MSet 使用的数据放置策略。该配置按客户端实例生效, 默认值为 PREFERRED_SAME_NODE,不受同一进程中其他 KVClient 的初始化顺序影响。 该配置不改变 Get/MGet 的 metadata owner 路由和传输行为。

bool enableRemoteH2D = false;

如果为 true,开启 RH2D 功能,该功能需要服务端同步开启 enable_remote_h2d 能力。默认值:false

bool enableClientDirectPipelineH2D = false;

是否开启 Client 无本地 Worker 场景的 Pipeline H2D 能力。默认值:false。开启后,Client 可复用 fast transport 内存池直接接收远端 Worker 数据并执行 H2D;如果本地 Worker 可用,仍优先使用原有 Client-Local-Worker RH2D 路径。

int32_t clientDirectPipelineH2DThreadNum = 64;

Client-direct Pipeline H2D 使用的 MLCacheDirect 线程数。默认值:64。该参数仅在 enableClientDirectPipelineH2Dtrue 时生效,有效范围为 [8, 128];配置超出该范围时使用 默认值 64

std::shared_ptr<IServiceDiscovery> serviceDiscovery = nullptr;

Worker 服务发现实现。可以配置基于 ETCD 的 ServiceDiscovery、基于 Coordinator 的 CoordinatorServiceDiscovery,或用户自定义的 IServiceDiscovery 实现。 配置该成员前,调用方应显式调用服务发现对象的 Init() 并检查返回状态;客户端初始化流程不保证 代替调用方调用 Init()。未配置时,客户端使用 hostport 指定的 Worker 地址。 默认值:nullptr

uint64_t fastTransportMemSize = 256 * 1024 * 1024;

client 进程级 fast transport(URMA)传输内存池大小,单位为字节。默认值:256MB,取值范围为 (0, 2GB]。初始化时会向上对齐,确保每个 UB transport Arena 占用完整系统页;对齐后的大小超过 2GB 时初始化失败。同一进程内各 client 需保持一致,由首个启用 fast transport 的 client 生效。

公共函数

void SetAkSkAuth(const std::string &accessKey, const SensitiveValue &secretKey, const std::string &tenantId)

设置 AK/SK 用于后续请求访问。

参数:
  • accessKey - 设置授权使用的访问密钥。

  • accessKey - 设置AK/SK 授权的密钥。

  • tenantId - 租户ID。