尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

etcd 3.3 全系列演进深度解析:从 bbolt 存储升级到可观测性体系的版本变革

etcd 3.3 全系列演进深度解析:从 bbolt 存储升级到可观测性体系的版本变革 etcd 3.3 全系列演进深度解析从 bbolt 存储升级到可观测性体系的版本变革【免费下载链接】etcdDistributed reliable key-value store for the most critical data of a distributed system项目地址: https://gitcode.com/GitHub_Trending/et/etcd本篇文章以 etcd 仓库官方变更记录 CHANGELOG-3.3 为主线系统梳理 etcd 3.3 主版本与后续 27 个补丁版本的核心变更脉络——涵盖存储引擎迁移、mvcc 事务能力扩展、WAL 数据一致性修复、选举时序调优、认证安全加固以及一套成规模的 Prometheus 指标体系。读者读完将掌握 3.3.x 各阶段的重点能力、新增服务端/客户端命令行参数及其语义、已知数据损坏风险点以及升级时的破坏性变更注意事项可作为排查历史行为与做版本升级决策的参考索引。版本范围与总览etcd 3.3 是 etcd 3.x 系列中生命周期极长的一个大版本主版本v3.3.0于 2018-02-01 发布末代补丁v3.3.27于 2021-10-15 发布。其变更记录覆盖从 2017-12-20 的v3.3.0-rc.0到 2021-10-15 的v3.3.27包含 rc.0rc.4 五个候选版本与 27 个正式补丁版本。版本发布日期阶段主题v3.3.02018-02-01主版本bbolt 迁移、事务扩展、大量新指标与新 flagv3.3.1 ~ v3.3.42018-02 ~ 2018-04mvcc watcher 修复、慢请求告警、选举 tick 调优、TLS 热加载修复v3.3.5 ~ v3.3.102018-05 ~ 2018-10watch 命令解析修复、TLS 密码套件白名单、快照指标、健康指标v3.3.11 ~ v3.3.132019-01 ~ 2019-05gRPC-gateway 安全、WAL Verify 校验、依赖清理v3.3.14 ~ v3.3.162019-08 ~ 2019-10客户端 balancer 重写、Go module、fragment 分片 watchv3.3.17 ~ v3.3.232019-10 ~ 2020-07修复 mvcc 死锁、数据目录权限检查、--auth-token-ttlv3.3.24 ~ v3.3.272020-08 ~ 2021-10FD 指标、容器镜像 CVE 修复需要注意一个特殊发布v3.3.16因go mod依赖哈希不一致被标记为bad release官方明确警告不要使用见仓库中相关 issue 编号 #11241并建议直接采用v3.3.17替代——该补丁即是为替换 3.3.16 而发布。对照仓库现状可知3.3 之后的演进路径清晰可循当前主分支的 api/version/version.go 中Version已演进到3.8.0-alpha.0本变更记录中大量以experimental-前缀引入的能力如初始损坏检查、v2v3 模拟后续版本已陆续转正或移除阅读时可结合 CHANGELOG-3.4 与 CHANGELOG-3.5 追溯后续走势。3.3.0一次触及内核的基础设施升级存储引擎迁移boltdb 退场coreos/bbolt 登场3.3.0 最重要的一项底层变更是用coreos/bbolt替换了原boltdb/bolt依赖从v1.3.0升级到v1.3.1-coreos.6后续 3.3.16 再次升级到v1.3.3。变更记录明确指出其动机是修复etcd 数据库大小无限增长直至mvcc: database space exceeded的问题issue #8009并由此支持了大于 8GiB 的数据库变更记录同时注明8GiB 在当时只是普通环境的建议上限并非硬限制。存储引擎层面的连带优化还包括Range 操作大幅减少内存分配在重启或领导者选举期间对租约撤销lease revoke做限速与随机化避免 Raft proposal 速率尖峰issue #8096——这一点在 server/storage/ 的 mvcc、lease 实现目录中均有对应模块可佐证。服务端新增配置项数据生命周期与请求上限治理3.3.0 集中引入了多个至今仍在使用、且源码里依然可见的关键服务端 flag。当前这些 flag 的解析与默认值统一收敛在 server/embed/config.go例如auto-compaction-mode默认值为periodic、auto-compaction-retention默认值为00 表示禁用自动压缩可视为 3.3 时代的直接延续。新增 flag语义默认/备注etcd --auto-compaction-mode支持periodic按时间段保留与revision按修订号保留两种压缩模式3.3.0 新增弥补此前仅 periodic 的缺口etcd --auto-compaction-retention接受字符串形式的保留时长或修订数3.3.0 起由整数改为字符串支持time.ParseDuration粒度etcd --max-request-bytes配置单次客户端请求的最大字节数未配置时默认 1.5 MiBetcd --max-txn-ops限制单笔事务内最大操作数对应 issue #7826etcd --listen-metrics-urls额外的/metrics与/health端点可与业务端口分离典型用法见下文etcd --grpc-keepalive-min-time / --interval / --timeout配置服务端 gRPC keepalive 策略用于对抗网络分区etcd --experimental-initial-corrupt-check在对外服务前先核对集群数据库哈希默认 falsev3.4 起默认开启etcd --experimental-corrupt-check-time周期性损坏告警检测默认0s禁用etcd --experimental-enable-v2v3用 v3 存储模拟 v2 API默认 false过渡方案etcd --client-crl-file / --peer-crl-file客户端/节点间连接启用证书吊销列表CRL配合安全章节的 CRL 功能etcd --peer-cert-allowed-cn基于证书 CommonName 的节点间认证对应 issue #8262其中--auto-compaction-retention从整数到字符串的转变是破坏性变更YAML 配置文件里原来的auto-compaction-retention: 24必须写成auto-compaction-retention: 24或auto-compaction-retention: 24h字符串类型periodic模式下该值必须是 Gotime.ParseDuration可解析的合法时长。仓库根目录的 etcd.conf.yml.sample 给出了 YAML 形态的完整字段示范。额外几个行为改进同样值得关注当集群存在告警如NOSPACE或没有 leader 时/health端点会如实返回 unhealthy且返回体中的health字段被定义为string 类型{health:true}/{health:false}并非 bool--advertise-client-urls出现空 host如http://:2379或环境变量被遮蔽时仅输出警告v3.4 起才升级为报错退出gRPC 服务端 info 级日志默认关闭需要--debug打开。API 层扩展事务、租约、fragment 分片 watch 的雏形3.3.0 的 API 新增集中于事务与租约组合能力很多在今天clientv3里司空见惯的用法都起源于此事务比较Compare支持范围比较ranges in transaction comparisons用于实现断连的线性化读支持嵌套事务nested transactions主要面向 proxy 场景事务比较新增租约目标Compare_LEASE/LeaseValue辅助函数可在Txn中直接比较LeaseID新增租约列表能力lease list新增按修订号哈希hash by revision即HashKV用于对 boltdb 做更强的损坏校验。运维能力方面新增了MoveLeader主动迁移领导者与Leases枚举租约维护接口。对应现代源码中 server/etcdserver/server.go 的MoveLeader方法约第 1228 行起即承担领导者转移逻辑。客户端、etcdctl 与 gRPC Proxy3.3.0 客户端侧引入健康感知 balancer以修复 watch API 挂起并为clientv3.Config增加MaxCallSendMsgSize默认 2 MiB与MaxCallRecvMsgSize默认math.MaxInt32字段解决此前客户端响应被限死在 4 MiB 的问题曾影响 Kubernetes #51099。etcdctl v3新增了一大批实用命令与 flagetcdctl --discovery-srv基于 DNS SRV 的服务发现etcdctl --keepalive-time / --keepalive-timeout客户端连接级 keepaliveetcdctl lease list、etcdctl lease keep-alive --onceetcdctl move-leader、etcdctl endpoint hashkv、etcdctl endpoint --cluster对标 v2 的cluster-healthetcdctl snapshot restore --wal-dir、etcdctl defrag --data-diretcdctl lock --ttletcdctl watch [key] [range_end] -- [exec-command…]支持执行外部命令并为每次事件注入ETCD_WATCH_REVISION、ETCD_WATCH_EVENT_TYPE、ETCD_WATCH_KEY、ETCD_WATCH_VALUE环境变量etcdctl endpoint health --write-out修复了 JSON 输出不生效的问题同时统一错误信息格式为endpoint is unhealthy: failed to commit proposal: ...。gRPC Proxy 层新增--metrics-addr、--max-send-bytes、--max-recv-bytes、--debug等 flag并支持/health端点实验性 flag 包括--experimental-leasing-prefix断连线性化读与--experimental-serializable-ordering跨端点单调递增的 serializable read。Raft 层引入了**非投票成员Learner**能力用来实现 Raft 论文 4.2.1 中追赶新服务器的策略——Learner 不参与投票、不会自我提升为 leader可安全地先行追赶日志。最后是 grpc-gateway 端点的重大更名/v3alpha被替换为/v3beta。3.3 中两个路径均可用curl -L http://localhost:2379/v3beta/kv/put -X POST -d {key: Zm9v, value: YmFy}但 3.4 起/v3alpha彻底失效这是 API 消费方需要提前适配的破坏性变更。自动压缩跨补丁版本演进最剧烈的子系统自动压缩auto compaction是 3.3 系列中语义调整最频繁、最容易因理解偏差踩坑的能力其实现源码现位于 server/etcdserver/api/v3compactor/compactor.go并配有同目录的 compactor_test.go 做行为验证。3.3.0定义了两个核心参数组合的语义--auto-compaction-moderevision --auto-compaction-retention1000每 5 分钟触发一次Compact目标为最新修订号 - 1000最新修订号为 30000 时压缩到 29000--auto-compaction-modeperiodic --auto-compaction-retention72h以 72 小时为保留窗口、每 7.2 小时压缩一次--auto-compaction-modeperiodic --auto-compaction-retention30m以 30 分钟为保留窗口、每 3 分钟压缩一次。也就是说3.3.0 的 periodic 压缩按保留时长的 1/10作为压缩周期推进保留窗口。3.3.2修复了 revision 模式解析 bug此前--auto-compaction-mode revision --auto-compaction-retention 1会被错误翻译成 3600000000000一个时间量修复后被正确解析为修订号保留 1issue #9337。3.3.3进一步调整了 periodic 压缩的保留窗口推进节奏核心变化是不再按 1/10 周期、而是按完整保留时长推进retention72h此前每 7.2 小时压缩一次此后每 1 小时执行一次保留窗口仍为 72 小时retention30m此前每 3 分钟压缩此后每 30 分钟压缩一次保留窗口仍为 30 分钟对于超过 1 小时的保留时长压缩器按小时为单位推进窗口并丢弃窗口之前的历史数据。变更记录给出了量化示例每小时写入 100 条且retention24h时v3.2.x / v3.3.0~v3.3.2 每 2.4 小时压缩修订号 2400、2640、2880而 v3.3.3 及以后每 1 小时压缩 2400、2500、2600。这意味着升级补丁版本后压缩执行频率可能显著改变运维上应以实际修订号增长速率来设定 retention避免窗口内数据量过大或压缩过于频繁。慢请求告警从 3.3.0 到 3.3.8 持续打磨3.3.1 引入请求耗时过长告警示例输出形如etcdserver: read-only range request key:\\000\ range_end:\\000\ took too long [3.389041388s] to execute3.3.8 对这条告警做了三点增强在日志中抹除请求 value 字段防敏感信息泄漏、补上响应大小信息、并统一了慢请求 apply 日志格式示例read-only range request key:\/a\ range_end:\/b\ with result range_response_count:3 size:96 took too long (97.966µs) to execute这一系列告警正是如今--warning-apply-duration、--warning-unary-request-duration等慢路径告警配置见 server/embed/config.go 的 flag 注册的前身排查慢读/慢写时可优先借助它们定位是 apply 慢还是网络慢。可观测性一批成建制的 Prometheus 指标3.3 系列在指标体系建设上投入巨大且明确了重要约定所有etcd_debugging_*前缀指标都是实验性的可能随版本变化。逐版本梳理如下3.3.0新增etcd --listen-metrics-urls可额外用https://localhost:2378,http://localhost:9379形式同时提供 TLS 与明文指标端口便于监控绕过关键 API 端口新增etcd_server_version、etcd_debugging_mvcc_db_compaction_keys_total、etcd_debugging_server_lease_expired_total修复etcd_debugging_mvcc_range/put/delete/txn_total四类操作指标在事务场景下的统计。3.3.4新增etcd_server_is_leader修复etcd_debugging_server_lease_expired_total。3.3.9新增容量治理三件套——etcd_server_quota_backend_bytes、etcd_mvcc_db_total_size_in_bytes、etcd_mvcc_db_total_size_in_use_in_bytes。变更记录给出了精确的判读示例etcd_server_quota_backend_bytes 2.147483648e09表示当前配额 2 GBetcd_mvcc_db_total_size_in_bytes 20480表示物理占用 20 KBetcd_mvcc_db_total_size_in_use_in_bytes 16384表示 defrag 完成后可回收到的目标大小两者之差即为磁盘上可通过 defrag 节省的字节数。3.3.10etcd_network_peer_round_trip_time_seconds改进为跟踪 leader 心跳此前仅采样快照连接的 TCP新增快照收发全套指标etcd_network_snapshot_send/receive_success/failures、etcd_snap_db_fsync_duration_seconds_count、etcd_snap_db_save_total_duration_seconds_bucket、etcd_server_id、etcd_server_health_success/failures、etcd_server_read_indexes_failed_total。3.3.13修复db_compaction_total_duration_milliseconds指标错误地恒为 0 的问题。3.3.18新增etcd_cluster_version与etcd_debugging_mvcc_total_put_size_in_bytes。3.3.19新增带type、client_api_versionlabel 的etcd_server_client_requests_total便于按 API 类型与客户端版本拆分请求量。3.3.20新增etcd_wal_write_bytes_totalWAL 写入字节总量。3.3.21新增etcd_debugging_auth_revision用于监控 auth 存储的修订号。3.3.24新增os_fd_used与os_fd_limit把当前操作系统文件描述符使用量纳入可观测范围对应 pkg/runtime/ 的 FD 统计能力同时优化了runtime.FDUsage的内存分配。选举时序从快速启动到防打断式重启etcd 3.3 在 leader 选举时序上经历了从激进到保守的反复权衡这一过程深刻反映了集群可用性与启动速度之间的矛盾。3.3.0 前身etcd 在节点启动时快速推进fast-forward选举 tick仅留 1 个 tick 就触发选举用以加速启动阶段尤其利好选举超时配置较长如跨数据中心 10 秒的部署。3.3.3首次修正重启时调整选举 tick确保留下不止 1 个 tick给现任 leader 更多时间联系重启节点以减少破坏性重加入disruptive rejoining对集群可用性的冲击issue #9333。3.3.4将控制权交给用户新增etcd --initial-election-tick-advance与embed.Config.InitialElectionTickAdvance。默认true时本地成员会推进选举 tick 加速首次选举——例如 10 秒选举超时下推进到 8 秒、只留 2 秒余量当 leader 到重加入节点的网络拥塞、剩余 tick 内收不到心跳时就可能发生破坏性选举。通过--initial-election-tick-advancefalse可以禁用该推进代价是跨数据中心场景下初始引导变慢且单节点集群无论设置如何都会推进 tick。对应的现代配置字段仍保留在 server/embed/config.go 中。3.3.0 还改进了--initial-cluster不匹配时的报错质量v3.2 只提示etcd --initial-cluster must include s1...v3.3 会把 DNS 解析失败原因一并输出如failed to resolve https://s1.test:2380 to match --initial-cluster...显著降低跨数据中心误配排查成本。认证、TLS 与安全加固时间线3.3 系列在认证安全上积累了从可用到健壮的完整路径3.3.0引入基于 CRL 的连接拒绝--client-crl-file/--peer-crl-file新增--peer-cert-allowed-cn支持节点间的 CN 认证证书中同时含 IP 与 DNS 时只要远端 IP 匹配即放行、不再强制校验 DNS服务端支持对通配符 DNS SAN 做反查/正查匹配认证失败时返回用户所拥有的角色信息并修复了auth store在 token 被禁用时的 panic。3.3.2空 auth token 不再导致初始化失败修复auth: invalid auth options报错修复 JWT token 下租约撤销例行任务的 auth 存储 panic防止超大 TTL 的 Lease Grant 溢出超过 9,000,000,000 秒即约 285 年的 TTL 将返回rpctypes.ErrLeaseTTLTooLarge并明确建议Lease 只应服务于秒/分钟级的短周期保活或会话而不是小时/天级。3.3.3--auto-compaction-moderevision解析修复见上文。3.3.4修复 TLS 证书热加载在证书 SAN 只含 IP 不含域名场景下不触发GetCertificate的问题——此前的实现要求客户端必须携带有效 SNI 才能触发证书重载导致纯 IP 证书过期后无法在线轮换。3.3.7新增etcd --cipher-suites支持 TLS 密码套件白名单握手请求携带白名单外套件时直接失败空列表时交给 Go 自动填充用于阻断弱密码套件。3.3.9使用 Go 1.10.3 编译以支持crypto/x509的 Name Constraints 扩展。3.3.11gRPC-gateway 代理请求禁用 CommonName 认证规避证书 CN 导致的权限提升风险。3.3.14 之后客户端 balancer 重写后提升了对安全端点TLS的 failover 能力。3.3.23对已存在的数据目录与自动生成自签名证书所用目录新增权限检查——Linux 上要求 700、Windows 上要求 777不满足时 3.3.23 起行为变更不再静默放行。3.3.25若检测到使用权限不同于 700(Linux)/777(Windows) 的既有目录服务启动时输出日志警告。数据一致性WAL、快照与 mvcc 的关键修复清单3.3 系列后期补丁大量聚焦进程崩溃/网络分区后的一致性恢复这类修复通常只改几行代码却决定生产数据的生死值得逐一记录3.3.6修复 mvcc 在快照恢复时的服务端 panic——当一个 watcher 以未来修订号 X 被请求到网络分区节点分区恢复后 leader 下发快照若快照最新修订号仍低于 X旧版本会直接 panic该场景同时关联 3.3.1 的 unsynced watcher 恢复 bug可能导致客户端漏事件。3.3.21修复 WAL 与服务器快照不一致——此前若节点在持久化 raft hard state 之后、保存快照之前崩溃restore将失败issue #10219auth 模块通过保存一致索引consistent index修复了一个数据损坏 bugmvcc 修复了一个死锁并增加了 apply 失败与快照收发日志。3.3.22为 WALValidate方法补上缺失的 CRC 校验避免校验过程本身 panicissue #11918。3.3.13新增Verify函数对 WAL 内容做损坏检查对应 server/storage/wal/ 的 WAL 实现。3.3.19修复 defrag 中的数据损坏 bugissue #11613。3.3.18修复 shutdown 期间的 WAL purge 时序——此前 etcd 在关闭时可能误删仍需要的 wal 文件导致启动时出现灾难性错误etcdserver: open wal error: wal: file not found.现在会确保 purge 循环先于 raft 节点停止信号退出。3.3.10快照 status 增加一致性校验校验失败时返回snapshot file integrity check failed...。3.3.16为跳过对等节点客户端地址校验新增实验性 flag--experimental-peer-skip-client-san-verification。3.3.0修复 restore 时后端数据库内存索引损坏问题仅影响 3.2.0以及 watch 从快照恢复的问题。这些修复共同指向一个运维事实3.3 后期版本的一致性保障强度远高于早期版本长期停留在 3.3.0~3.3.5 的集群应尽快评估升级到 3.3 末代补丁。3.3.14client balancer 重写与模块化3.3.14 是本系列中风险最高、也最值得单独说明的补丁——它把一些 3.4 的新特性反向移植了进来以最小化与新版客户端 balancer 的差异。核心变更用 gRPC v1.23.0 的新 balancer 接口重写客户端 balancerPR #9860采用异步 resolver 把端点交给 gRPC dial如需阻塞到底层连接就绪应在clientv3.Config.DialOptions中传入grpc.WithBlock()修复了 Kubernetes 1.13.x 在首个 etcd server 不可用时拒绝工作的故障kubernetes#72102依赖管理从glide切换到 Go module随后 3.3.15 又回退到 glide详见下文升级注意事项新增rpctypes.ErrLeaderChanged读索引的线性化请求在发生领导变更时快速失败而非干等到 context 超时弃用latest容器标签及 minor 版本标签docker pull gcr.io/etcd-development/etcd:latest不再保证最新v3.3标签可能陈旧建议使用带精确 patch 版本的docker pull gcr.io/etcd-development/etcd:v3.3.14官方发布不再提供 ACI 制品AppC 规范已停摆acbuild不再维护。**API 扩展fragment 分片 watch 与手动进度通知**同样在 3.3.14 落地WatchCreateRequest新增watch_id字段允许客户端为 watch 指定 ID新增fragment字段当单次 watch 响应总大小超过--max-request-bytes服务端默认embed.DefaultMaxRequestBytes 1.5 MiB 512 字节 gRPC 开销时服务端会把事件拆成多个小于上限的分片下发。文档给出两个极限示例10 个各 1 MiB 的事件在 1 MiB 限额下会拆成 10 个分片下发而若事件本身 2 MiB、客户端MaxCallRecvMsgSize又只有 1 MiB则客户端会收到code ResourceExhausted desc grpc: received message larger than max。客户端侧的事件合并逻辑需要自行实现官方clientv3在 v3.4 中内置新增WatchRequest.WatchProgressRequest可手动触发向所有关联 watch 流广播进度事件相当于可手动触发的WithProgressNotify。另外pkg/adt的区间树在 3.3.14 从struct重构为interface见 pkg/adt/adt.go 与 pkg/adt/README.md 的红黑树性质说明并修复了删除操作破坏红黑树 black-height 性质的问题。3.3 后期库使用治理与镜像安全3.3.13将github.com/ugorji/go/codec迁移到github.com/json-iterator/go、github.com/ghodss/yaml迁移到sigs.k8s.io/yaml是面向长期维护的依赖收敛。3.3.15又临时回退到glide依赖管理因为 3.3.14 引入的 Go module 与部分下游组件不兼容见 kubernetes#81434所以 v3.3.15~v3.3.27 使用的是glide。3.3.23修复了 clientv3 作为库引入时错误的包依赖问题。3.3.26修复 watch 重连后 auth token 失效问题——clientConn就绪时自动重新获取AuthToken。3.3.27将容器基础镜像从debian:buster-v1.4.0升级到debian:bullseye-20210927一次性修复 opensslCVE-2021-3711、glibcCVE-2021-35942、libseccompCVE-2019-9893与 apk-toolsCVE-2021-36159的四个 CVE——这是 3.3 系列的收尾版本也提醒仍在运行 3.3 的集群应至少更新到含镜像修复的末代版本。升级注意事项与破坏性变更汇总综合全系列变更升级到任意 3.3.x 或在不同补丁版本间迁移前应重点核对以下破坏性变更变更记录正文反复强调升级前务必通读各版本记录与 upgrade guideYAML 字段类型变化auto-compaction-retention从整数变为字符串需写作24或24hauto-compaction-mode需显式声明为periodic或revision。gRPC gateway 端点更名/v3alpha→/v3beta3.4 起旧路径彻底不可用。客户端 balancer 语义变化3.3.14 起异步 resolver 使 dial 不再阻塞等待连接依赖连接即就绪语义的调用方需自行加grpc.WithBlock()gRPC 依赖需 v1.7.4/1.7.53.3.0 起v3.3.14 起为 v1.23.0。容器镜像标签策略不要依赖latest或 minor 版本标签改用精确 patch 版本。目录权限检查3.3.23 行为变更既有数据目录与自签名证书生成目录必须为 700(Linux)/777(Windows)否则启动报错。etcdctl endpoint health输出与退出码3.3.14 起统一错误文案3.3.0 起健康检查失败返回非零退出码。过期租约的lease timetolive输出由lease LEASE_ID granted with TTL(0s), remaining(-1s)变为lease LEASE_ID already expired。避雷 3.3.16该版本go mod哈希存在仓库间不一致为官方标记的 bad release请直接使用 3.3.17。Go 编译工具链3.3.0 要求 Go 1.9以 Go 1.9.3 编译3.3.13/3.3.12 编译工具链为 Go 1.10.83.3.14 起要求 Go 1.123.3.15~3.3.27 以 Go 1.12.9/1.12.17 编译——若以源码方式构建历史版本需匹配相应 Go 工具链。结语如何从本变更记录中获益etcd 3.3 系列用近四年的补丁周期把运行稳定与能力扩展两条线并行推进主版本 3.3.0 定调了 bbolt 存储、事务扩展与大体量指标体系3.3.1~3.3.13 重在修复 mvcc/watcher/选举的稳定性和数据一致性3.3.14 完成客户端 balancer 重写并预告 3.4 的 fragment watch3.3.21~3.3.27 则专注库治理、权限校验与容器镜像安全。对仍在维护 3.3 集群的团队而言本文可作为快速定位某个行为/flag/metric 从哪个版本起生效的索引对希望理解 etcd 现代版本3.4 及之后演进动机的读者这份记录则是追踪特性出生脉络的原始素材。如需验证各项 flag 在当代代码中的落点可继续查阅 server/embed/config.go 的默认值定义、server/etcdserver/api/v3compactor/compactor.go 的压缩实现以及 CHANGELOG 目录下相邻大版本的变更记录。【免费下载链接】etcdDistributed reliable key-value store for the most critical data of a distributed system项目地址: https://gitcode.com/GitHub_Trending/et/etcd创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表