跳转到主要内容

功能门控

本文概述了管理员可在 etcd 中指定的各种功能门控。

请参阅 feature stages 了解功能各阶段的说明。

概述

功能门控是一组描述 etcd 特性的 key=value 键值对。 可使用 etcd 的 --feature-gates 命令行标志来开启或关闭这些特性。

etcd 允许你启用或禁用一组功能门控。 使用 -h 标志查看全部功能门控列表。 要设置功能门控,请使用 --feature-gates 标志,并在命令行中指定功能对的列表:

--feature-gates=...,StopGRPCServiceOnDefrag=true

或在 YAML 配置文件中指定 feature-gates:

feature-gates: ...,StopGRPCServiceOnDefrag=true

变更 embed.EtcdServer 结构体

在 3.6 版本中,字段 ServerFeatureGate 被添加至 embed.Config,应取代以下实验性字段:

package embed

type Config struct {
  // Deprecated: Use CompactHashCheck Feature Gate instead. Will be decommissioned in v3.7.
  ExperimentalCompactHashCheckEnabled bool `json:"experimental-compact-hash-check-enabled"`

  // Deprecated: Use InitialCorruptCheck Feature Gate instead. Will be decommissioned in v3.7.
  ExperimentalInitialCorruptCheck bool `json:"experimental-initial-corrupt-check"`

  // Deprecated: Use TxnModeWriteWithSharedBuffer Feature Gate instead. Will be decommissioned in v3.7.
  ExperimentalTxnModeWriteWithSharedBuffer bool `json:"experimental-txn-mode-write-with-shared-buffer"`

  // Deprecated: Use StopGRPCServiceOnDefrag Feature Gate instead. Will be decommissioned in v3.7.
  ExperimentalStopGRPCServiceOnDefrag bool `json:"experimental-stop-grpc-service-on-defrag"`

  // Deprecated: Use LeaseCheckpoint Feature Gate instead. Will be decommissioned in v3.7.
  ExperimentalEnableLeaseCheckpoint bool `json:"experimental-enable-lease-checkpoint"`
  
  // Deprecated: Use LeaseCheckpointPersist Feature Gate instead. Will be decommissioned in v3.7.
  ExperimentalEnableLeaseCheckpointPersist bool `json:"experimental-enable-lease-checkpoint-persist"`

+ // ServerFeatureGate is a server level feature gate
+ ServerFeatureGate featuregate.FeatureGate
  ...

Alpha 或 Beta 功能的功能门控

下表总结了可在 etcd 上设置的功能门控。

特性默认值阶段说明
CompactHashCheckfalseAlpha在向任何客户端或对等成员提供服务前启用数据损坏检查。
InitialCorruptCheckfalseAlpha启用领导者定期检查跟随者的压缩哈希值。
LeaseCheckpointfalseAlpha启用领导者向其他成员发送定期检查点,以防止领导者变更时剩余 TTL 被重置。
LeaseCheckpointPersistfalseAlpha启用持久化剩余 TTL,以防止长期租约的无限自动续期。
SetMemberLocalAddrfalseAlpha启用在与对等成员通信时,使用初始广告对等 URL 中指定的第一个非环回本地地址作为本地地址。
StopGRPCServiceOnDefragfalseAlpha启用在执行碎片整理时停止 etcd gRPC 服务对客户端请求的响应。
TxnModeWriteWithSharedBuffertrueBeta启用写入事务在其只读检查操作中使用共享缓冲区。

使用某个功能

特性阶段

特性可处于 Alpha、Beta、GA 或 Deprecated 阶段。 Alpha 特性表示:

  • 默认禁用。
  • 可能存在缺陷。启用该功能可能会暴露缺陷。
  • 该功能的支持可能随时被取消,且不另行通知。
  • 该 API 可能在后续软件版本中以不兼容的方式发生变更,且不另行通知。
  • 由于存在更高的缺陷风险且缺乏长期支持,仅建议在短期测试集群中使用。

Beta 特性表示:

  • 默认启用。
  • 该功能经过充分测试,启用该功能被认为是安全的。
  • 整体功能的支持不会被移除,尽管细节可能会变更。
  • 仅建议用于非业务关键场景,因为更广泛采用可能导致发现新的难以察觉的缺陷。
说明

请务必尝试使用 Beta 特性,并提供反馈! 进入正式发布阶段后,我们可能不再适合对这些特性进行进一步修改。

一个“正式发布”(General Availability,GA)特性也被称为“稳定”特性。其含义为:

  • 该功能始终处于启用状态;无法将其禁用。
  • 相应的功能门控已不再需要。
  • 稳定版本的功能将在后续多个发布版本的软件中出现。

一个已弃用(Deprecated)的功能表示:

  • 功能门控已不再使用。
  • 该功能已进入正式发布阶段或已被移除。