Skip to content

配置 ​

运维如何书写并校验 broker 配置 —— 白名单里的每一个键。

事实来源: 19 键白名单是冻结设计,不是实现状态 —— 一个键出现在这里,是因为「先写得出理由,才配这个键」,而不是因为已经有 broker 在读它。

已冻结的决策 ​

  • 格式:JSON(直接用 moonbitlang/core 的 json);文件头部的 _comment 键数组承载人写的注记。
  • 解析快速失败:未知键一律拒绝(白名单外的键会让 CI 变红);无热加载(v0 边界)。
  • 19 个键全部 update_mode = read-only —— 三级更新分类(read-only / 热加载 / 动态)的占位;v0 中任何键都必须重启才能变。

白名单(19 键) ​

#配置项类型默认值为什么必须有(写不出理由就不配)update_mode
1node_idu16静态分配集群身份与静态成员表的主键;没有它复制/选主无法寻址read-only
2peers[node_id; addr]3 项静态表v0 静态 3 节点;成员变更属于 v2(Redpanda 的 members 管理已证明复杂)read-only
3leader_priorityu16 数组按 peers 顺序静态首选 leader;lease 超时降级的确定性来源read-only
4listen_clientaddr0.0.0.0:7188client wire 入口read-only
5listen_peeraddr0.0.0.0:7189复制 + 心跳入口;与 client 流量隔离read-only
6data_dirpath./data所有 segment / metadata / snapshot 的根;唯一持久化位置read-only
7segment_max_bytesu6467108864(64 MiB)segment 轮转边界;不设则 segment 无界增长read-only
8partition_default_countu164DECLARE 未指定时的缺省;显式指定时忽略此项read-only
9delivery_max_attemptsu325重试上限;DLQ 前最后一次机会read-only
10delivery_lease_msu3230000消息租约;超时重投是 at-least-once 的活性来源read-only
11poll_max_wait_msu325000long poll 上限;防止连接空挂read-only
12credit_initial_countu32256初始 credit 窗口(count);credit_bytes = 2 MiB 按同一比例派生。冻结后修订: 原 64 与旧名作废read-only
13metadata_snapshot_recordsu328192snapshot 阈值;不设则 log 无界重放read-only
14metrics_enabledbooltrue/metrics 开关;关闭即省采样开销read-only
15log_levelenum: debug|info|warn|errorinfo排障最低需求;再多的可观测归 /metricsread-only
16listen_wsaddr未启用(可选)浏览器 demo 需要 WS 监听;默认关闭;wss 留位read-only
17listen_adminaddr127.0.0.1:7190admin HTTP(/metrics /healthz /stats + CLI 读路径)入口;默认绑 localhostread-only
18ws_origins[str]localhost / 127.0.0.1 白名单WS Origin 白名单(空 = 拒绝全部);防跨站 WS 劫持read-only
19peer_secretsecret空 —— peer 握手拒绝开链(与 T041 行为一致)承载节点间共享密钥(REQ-SEC-003);与第 2 键 peers 地址表成对,为它提供认证read-only

命名提示 ​

这个键叫 listen_client,不是 listen_tcp。两处权威源 —— 本白名单与 WebSocket 最小规范(「同进程不同端口」)—— 用的都是 listen_client;这个区分有意义,因为同一进程还暴露着 listen_peer 和 listen_admin。

条目模板(每个键都带全字段) ​

FieldTypeDefaultRationaleupdate_mode
…read-only

拒绝示例 ​

json
{ "listen_https": "…" }

→ 启动被拒:unknown key: listen_https(在白名单之外)。

目前还没有代码

今天没有任何 broker 读这个文件。上面每个默认值都是冻结设计值;配置解析器落地时,这 19 个键就是验收线 —— 表外的键必须让启动失败,表内的键解析器不认识,那是解析器的缺陷。