KVClientConfig¶
-
class KVClientConfig¶
- Header-file:
#include <datasystem/utils/kv_client_config.h>
- Namespace:
datasystem
KV 客户端初始化配置。通过嵌套类
KVClientConfig::Builder构建, 并在KVClient::Init(const KVClientConfig &clientConfig)中传入。本配置仅覆盖客户端日志、监控与 ZMQ 相关参数,不包含
ConnectOptions中的连接选项。配置生效规则
进程内 首次 调用任意
KVClient::Init``(含无参 ``Init())时,会将当前传入的KVClientConfig快照固化为进程级配置;此后同一进程内其他KVClient实例再调用Init时会复用已固化的进程级配置,不会用后续传入配置覆盖已生效设置。首次 Init 时,单个配置项的取值优先级(仅适用于本类所管理的参数):
KVClientConfig中通过 Builder 显式设置的字段(最高);对应的环境变量;
代码内置默认值(最低)。
若首次
Init传入的配置未显式设置某字段,该字段按上述 2→3 顺序取值。后续 Init 的行为:仅检查后续传入配置中通过 Builder 显式设置的字段;未设置字段 视为未指定,不会要求与已固化快照逐字段一致,也不会用于清空已生效配置。若显式传入 字段与已固化快照存在差异(含新增字段、修改字段值),实现会记录错误日志,但
Init仍返回StatusCode::K_OK,且 不会 用新配置覆盖已生效的 flag 或日志设置。具体分三种情况:
首次
Init显式设置了某字段,后续Init再设置该字段(值不同):新值不生效,Init返回StatusCode::K_OK,并打印日志:The KVClient config [name=value] is different from the process-level config and will not take effect.。首次
Init未设置某字段,后续Init显式设置该字段:该显式设置同样不生效,Init返回StatusCode::K_OK,并打印上述日志。Init()未传入KVClientConfig(等同于传入全是默认值的KVClientConfig):设置的配置不生效,Init返回StatusCode::K_OK。
Init()与Init(const KVClientConfig &)的差异:Init()等价于传入未调用任何 Builder setter 的空KVClientConfig。若进程内首次调用为
Init(),显式配置快照为空;此后再调用Init(config)并传入 显式配置,该配置 不会 生效。若已先通过Init(config)固化了配置,后续Init()或空配置不表示清空或覆盖原配置。若需通过 Builder 指定参数,应确保进程内第一次
Init即传入目标配置。
公共函数
-
~KVClientConfig()¶
析构 KV 客户端配置对象。
-
class KVClientConfig::Builder¶
- Header-file:
#include <datasystem/utils/kv_client_config.h>
- Namespace:
datasystem
KV 客户端配置构建器,支持链式设置日志、监控和 ZMQ 相关参数。
公共函数
-
Builder()¶
构造配置构建器。
-
~Builder()¶
析构配置构建器。
-
Builder &LogDir(const std::string &path)¶
设置日志目录,对应环境变量
DATASYSTEM_CLIENT_LOG_DIR。默认值为~/.datasystem/logs。
-
Builder &LogName(const std::string &name)¶
设置客户端日志文件名(不含目录和扩展名)。对应内部配置项
log_filename。 不允许为空;允许字符为英文字母、数字及路径字符集中的符号。默认值为ds_client。
-
Builder &LogWithoutPid(bool enable)¶
设置客户端日志文件名是否不带 pid。对应环境变量
DATASYSTEM_CLIENT_LOG_WITHOUT_PID。 为true时输出为ds_client.log、ds_client_access.log;为false时恢复带<pid>后缀的命名,适合多 client 进程同时运行且不希望覆盖日志的场景。默认值为true。
-
Builder &AccessLogName(const std::string &name)¶
设置客户端访问日志文件名(不含目录和扩展名)。非空时仅允许英文字母、数字和下划线。 默认值为
ds_client_access。
-
Builder &MinLogLevel(int level)¶
数据系统 SDK 的最小日志级别。数值越大,输出的日志越少:
0输出 INFO 及以上,1输出 WARNING 及以上,2输出 ERROR 及以上,3只输出 FATAL。 取值范围[0, 3],默认值为0。对应环境变量DATASYSTEM_MIN_LOG_LEVEL。
-
Builder &VLogLevel(int level)¶
设置 SDK 的 verbose(VLOG)日志级别。数值越大,输出的调试日志越详细,一般用于排查 内部细节。取值范围
[0, 10],默认值为0。对应环境变量DATASYSTEM_LOG_V。
-
Builder &StderrThreshold(int level)¶
控制哪些级别的日志同时复制到 stderr。取值含义同
MinLogLevel(0``=INFO、 ``1``=WARNING、``2``=ERROR、``3``=FATAL);设为 ``3表示只有 FATAL 输出到 stderr。 取值范围[0, 3],默认值为3``(FATAL)。对应环境变量 ``DATASYSTEM_STD_THRESHOLD。
-
Builder &MaxLogSize(int size)¶
设置日志轮转前的最大大小(MiB)。取值范围
[1, 4095],默认值为100。 对应环境变量DATASYSTEM_CLIENT_MAX_LOG_SIZE。
-
Builder &MaxLogFileNum(uint32_t num)¶
设置保留的日志文件数量上限(按级别分别保留)。取值范围
[0, 200000],0表示不限制数量。默认值为5。对应环境变量DATASYSTEM_MAX_LOG_FILE_NUM。
-
Builder &LogCompress(bool enable)¶
设置是否对轮转后的旧日志文件进行
.gz压缩。默认值为false。 对应环境变量DATASYSTEM_LOG_COMPRESS。
-
Builder &LogRetentionDay(uint32_t days)¶
设置日志保留天数。
0表示不按时间清理日志。默认值为0。 对应环境变量DATASYSTEM_LOG_RETENTION_DAY。
-
Builder &LogToStderr(bool enable)¶
设置是否将日志仅输出到 stderr 而不写文件。为
true时所有日志输出到 stderr 并关闭 文件输出;为false时日志写入文件。默认值为false。对应环境变量DATASYSTEM_LOG_TO_STDERR。该参数与AlsoLogToStderr(在文件输出基础上额外输出 到 stderr)、LogOnlyWriteInfoFile(控制是否按级别拆分文件)相互独立。
-
Builder &AlsoLogToStderr(bool enable)¶
设置是否在写文件的同时也输出到 stderr。为
true时日志同时写文件和 stderr; 为false时只写文件。默认值为false。对应环境变量DATASYSTEM_ALSO_LOG_TO_STDERR。当LogToStderr为true时本参数无效 (此时已全部重定向到 stderr)。
-
Builder &LogOnlyWriteInfoFile(bool enable)¶
设置是否将所有级别的日志都写入单个 INFO 日志文件。为
true时所有级别日志只写入.INFO文件;为false时额外生成.WARNING、.ERROR文件,高级别日志按 等级写入各自文件。默认值为true。对应环境变量DATASYSTEM_LOG_ONLY_WRITE_INFO_FILE。
-
Builder &LogAsyncQueueSize(uint32_t size)¶
设置异步日志队列大小。取值范围
[256, 1048576],默认值为1024。 对应环境变量DATASYSTEM_LOG_ASYNC_BUFFER_MB。
-
Builder &LogMonitorEnable(bool enable)¶
设置是否开启接口日志统计。开启后会统计每个请求的时延。默认值为
true(开启)。 对应环境变量DATASYSTEM_LOG_MONITOR_ENABLE。
-
Builder &MonitorConfigPath(const std::string &path)¶
设置运行时配置文件监控路径。worker 启动后会监控该文件的变化并热加载 flag 变更。 对应环境变量
DATASYSTEM_CLIENT_CONFIG_PATH,默认值为~/datasystem/config/datasystem.config。设为空字符串时禁用文件监控, 此时可通过KVClient::UpdateConfig()动态更新配置;两者互斥,不能同时使用。
-
Builder &ZmqClientIoThread(int32_t threads)¶
设置 ZMQ 客户端 IO 线程数量,数值与系统吞吐量正相关。取值范围
[1, 32], 默认值为1。对应环境变量DATASYSTEM_ZMQ_CLIENT_IO_THREAD。
-
Status Build(KVClientConfig &config) const¶
校验并构建
KVClientConfig。- 参数:
config - 传出参数,返回构建后的配置对象。
- 返回:
返回值状态码为
StatusCode::K_OK时表示构建成功,否则返回参数校验错误。