<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>开发指南 on PIG.CENTER</title><link>https://pig.center/zh/docs/etcd/dev-guide/</link><description>Recent content in 开发指南 on PIG.CENTER</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Tue, 08 Sep 2026 21:29:01 +0800</lastBuildDate><atom:link href="https://pig.center/zh/docs/etcd/dev-guide/index.xml" rel="self" type="application/rss+xml"/><item><title>发现服务协议</title><link>https://pig.center/zh/docs/etcd/dev-guide/discovery_protocol/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/etcd/dev-guide/discovery_protocol/</guid><description>&lt;p&gt;发现服务协议有助于新 etcd 成员在集群引导阶段通过共享的发现 URL 发现集群中的所有其他成员。&lt;/p&gt;&#10;&lt;p&gt;发现服务协议仅在集群引导阶段使用，不可用于运行时重配置或集群监控。&lt;/p&gt;</description></item><item><title>配置本地集群</title><link>https://pig.center/zh/docs/etcd/dev-guide/local_cluster/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/etcd/dev-guide/local_cluster/</guid><description>&lt;p&gt;对于测试和开发部署，最快捷简便的方式是配置本地集群。对于生产部署，请参考 &lt;a href="https://pig.center/zh/docs/etcd/op-guide/clustering/"&gt;clustering&lt;/a&gt;&#10; 章节。&lt;/p&gt;&#10;&lt;h2 id="local-standalone-cluster"&gt;本地独立集群&#10;&lt;/h2&gt;&#10;&lt;h3 id="starting-a-cluster"&gt;启动集群&#10;&lt;/h3&gt;&#10;&lt;p&gt;运行以下命令以将 etcd 集群部署为独立集群：&lt;/p&gt;</description></item><item><title>与 etcd 交互</title><link>https://pig.center/zh/docs/etcd/dev-guide/interacting_v3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/etcd/dev-guide/interacting_v3/</guid><description>&lt;p&gt;用户通常通过设置或获取键的值来与 etcd 交互。本节介绍如何使用 etcdctl（用于与 etcd 服务器交互的命令行工具）实现这一操作。此处描述的概念同样适用于 gRPC API 或客户端库 API。&lt;/p&gt;</description></item><item><title>为什么使用 gRPC 网关</title><link>https://pig.center/zh/docs/etcd/dev-guide/api_grpc_gateway/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/etcd/dev-guide/api_grpc_gateway/</guid><description>&lt;p&gt;etcd v3 使用 &lt;a href="https://www.grpc.io/"&gt;gRPC&lt;/a&gt;&#10; 作为其消息协议。etcd 项目包含一个基于 gRPC 的 &lt;a href="https://github.com/etcd-io/etcd/tree/main/client/v3"&gt;Go 客户端&lt;/a&gt;&#10;，以及一个命令行工具 &lt;a href="https://github.com/etcd-io/etcd/tree/main/etcdctl"&gt;etcdctl&lt;/a&gt;&#10;，用于通过 gRPC 与 etcd 集群通信。对于不支持 gRPC 的语言，etcd 提供一个 JSON &lt;a href="https://github.com/grpc-ecosystem/grpc-gateway"&gt;gRPC 网关&lt;/a&gt;&#10;。该网关提供一个 RESTful 代理，可将 HTTP/JSON 请求转换为 gRPC 消息。&lt;/p&gt;</description></item><item><title>gRPC 命名与发现</title><link>https://pig.center/zh/docs/etcd/dev-guide/grpc_naming/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/etcd/dev-guide/grpc_naming/</guid><description>&lt;p&gt;etcd 提供了一个 gRPC 解析器，用于支持一种替代名称系统，该系统从 etcd 获取端点以发现 gRPC 服务。其底层机制基于监听以服务名称为前缀的键的更新。&lt;/p&gt;&#10;&lt;p&gt;请注意，此功能为实验性功能，因为它依赖于 &lt;a href="https://github.com/grpc/grpc-go/tree/4cedec40eb2ccfbe3f56bb15e894903111ada2d2/resolver"&gt;google.golang.org/grpc/resolver&lt;/a&gt;&#10; 包，而该包在 grpc-go 中仍处于实验阶段。&lt;/p&gt;</description></item><item><title>将 etcd 集成到 Go 应用中</title><link>https://pig.center/zh/docs/etcd/dev-guide/golang_embed_pkg/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/etcd/dev-guide/golang_embed_pkg/</guid><description>&lt;p&gt;etcd &lt;code&gt;embed&lt;/code&gt; go 包提供了一种简便方式，可将 etcd 服务器直接嵌入应用程序。&lt;/p&gt;&#10;&lt;p&gt;有关详细信息，请参见 &lt;a href="https://pkg.go.dev/go.etcd.io/etcd/server/v3/embed"&gt;embed 包文档&lt;/a&gt;&#10;。&lt;/p&gt;</description></item><item><title>系统限制</title><link>https://pig.center/zh/docs/etcd/dev-guide/limit/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/etcd/dev-guide/limit/</guid><description>&lt;h2 id="request-size-limit"&gt;请求大小限制&#10;&lt;/h2&gt;&#10;&lt;p&gt;etcd 专为处理典型的元数据类小规模键值对而设计。虽然较大请求也能正常工作，但可能增加其他请求的延迟。默认情况下，任何请求的最大大小为 1.5 MiB。此限制可通过 etcd 服务器的 &lt;code&gt;--max-request-bytes&lt;/code&gt; 标志进行配置。&lt;/p&gt;</description></item><item><title>etcd 功能</title><link>https://pig.center/zh/docs/etcd/dev-guide/features/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/etcd/dev-guide/features/</guid><description>&lt;p&gt;本文概述了 etcd 的各项功能，旨在帮助用户更好地理解这些功能及其相关弃用流程。若想了解 etcd 功能的开发方式，请参阅 &lt;a href="https://github.com/etcd-io/etcd/blob/main/Documentation/contributor-guide/features.md"&gt;开发指南&lt;/a&gt;&#10;。&lt;/p&gt;&#10;&lt;p&gt;etcd 功能分为三个阶段：实验性、稳定和不安全。可通过运行 &lt;code&gt;etcd --help&lt;/code&gt; 获取功能列表。&lt;/p&gt;</description></item><item><title>API 参考</title><link>https://pig.center/zh/docs/etcd/dev-guide/api_reference_v3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/etcd/dev-guide/api_reference_v3/</guid><description>&lt;p&gt;本文 API 参考由命名的 &lt;code&gt;.proto&lt;/code&gt; 文件自动生成。&lt;/p&gt;&#10;&lt;h5 id="service-auth-apietcdserverpbrpcproto"&gt;服务 &lt;code&gt;Auth&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;方法&lt;/th&gt;&#10; &lt;th scope="col"&gt;请求类型&lt;/th&gt;&#10; &lt;th scope="col"&gt;响应类型&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;AuthEnable&lt;/td&gt;&#10; &lt;td&gt;AuthEnableRequest&lt;/td&gt;&#10; &lt;td&gt;AuthEnableResponse&lt;/td&gt;&#10; &lt;td&gt;AuthEnable 启用身份认证。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;AuthDisable&lt;/td&gt;&#10; &lt;td&gt;AuthDisableRequest&lt;/td&gt;&#10; &lt;td&gt;AuthDisableResponse&lt;/td&gt;&#10; &lt;td&gt;AuthDisable 禁用身份认证。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;AuthStatus&lt;/td&gt;&#10; &lt;td&gt;AuthStatusRequest&lt;/td&gt;&#10; &lt;td&gt;AuthStatusResponse&lt;/td&gt;&#10; &lt;td&gt;AuthStatus 显示身份认证状态。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Authenticate&lt;/td&gt;&#10; &lt;td&gt;AuthenticateRequest&lt;/td&gt;&#10; &lt;td&gt;AuthenticateResponse&lt;/td&gt;&#10; &lt;td&gt;Authenticate 处理身份认证请求。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;UserAdd&lt;/td&gt;&#10; &lt;td&gt;AuthUserAddRequest&lt;/td&gt;&#10; &lt;td&gt;AuthUserAddResponse&lt;/td&gt;&#10; &lt;td&gt;UserAdd 添加新用户。用户名不能为空。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;UserGet&lt;/td&gt;&#10; &lt;td&gt;AuthUserGetRequest&lt;/td&gt;&#10; &lt;td&gt;AuthUserGetResponse&lt;/td&gt;&#10; &lt;td&gt;UserGet 获取用户详细信息。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;UserList&lt;/td&gt;&#10; &lt;td&gt;AuthUserListRequest&lt;/td&gt;&#10; &lt;td&gt;AuthUserListResponse&lt;/td&gt;&#10; &lt;td&gt;UserList 获取所有用户的列表。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;UserDelete&lt;/td&gt;&#10; &lt;td&gt;AuthUserDeleteRequest&lt;/td&gt;&#10; &lt;td&gt;AuthUserDeleteResponse&lt;/td&gt;&#10; &lt;td&gt;UserDelete 删除指定用户。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;UserChangePassword&lt;/td&gt;&#10; &lt;td&gt;AuthUserChangePasswordRequest&lt;/td&gt;&#10; &lt;td&gt;AuthUserChangePasswordResponse&lt;/td&gt;&#10; &lt;td&gt;UserChangePassword 更改指定用户的密码。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;UserGrantRole&lt;/td&gt;&#10; &lt;td&gt;AuthUserGrantRoleRequest&lt;/td&gt;&#10; &lt;td&gt;AuthUserGrantRoleResponse&lt;/td&gt;&#10; &lt;td&gt;UserGrant 为指定用户授予角色。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;UserRevokeRole&lt;/td&gt;&#10; &lt;td&gt;AuthUserRevokeRoleRequest&lt;/td&gt;&#10; &lt;td&gt;AuthUserRevokeRoleResponse&lt;/td&gt;&#10; &lt;td&gt;UserRevokeRole 撤销指定用户的指定角色。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;RoleAdd&lt;/td&gt;&#10; &lt;td&gt;AuthRoleAddRequest&lt;/td&gt;&#10; &lt;td&gt;AuthRoleAddResponse&lt;/td&gt;&#10; &lt;td&gt;RoleAdd 添加新角色。角色名不能为空。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;RoleGet&lt;/td&gt;&#10; &lt;td&gt;AuthRoleGetRequest&lt;/td&gt;&#10; &lt;td&gt;AuthRoleGetResponse&lt;/td&gt;&#10; &lt;td&gt;RoleGet 获取角色详细信息。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;RoleList&lt;/td&gt;&#10; &lt;td&gt;AuthRoleListRequest&lt;/td&gt;&#10; &lt;td&gt;AuthRoleListResponse&lt;/td&gt;&#10; &lt;td&gt;RoleList 获取所有角色的列表。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;RoleDelete&lt;/td&gt;&#10; &lt;td&gt;AuthRoleDeleteRequest&lt;/td&gt;&#10; &lt;td&gt;AuthRoleDeleteResponse&lt;/td&gt;&#10; &lt;td&gt;RoleDelete 删除指定角色。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;RoleGrantPermission&lt;/td&gt;&#10; &lt;td&gt;AuthRoleGrantPermissionRequest&lt;/td&gt;&#10; &lt;td&gt;AuthRoleGrantPermissionResponse&lt;/td&gt;&#10; &lt;td&gt;RoleGrantPermission 为指定角色授予指定键或范围的权限。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;RoleRevokePermission&lt;/td&gt;&#10; &lt;td&gt;AuthRoleRevokePermissionRequest&lt;/td&gt;&#10; &lt;td&gt;AuthRoleRevokePermissionResponse&lt;/td&gt;&#10; &lt;td&gt;RoleRevokePermission 撤销指定角色的指定键或范围的权限。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="service-cluster-apietcdserverpbrpcproto"&gt;服务 &lt;code&gt;Cluster&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;方法&lt;/th&gt;&#10; &lt;th scope="col"&gt;请求类型&lt;/th&gt;&#10; &lt;th scope="col"&gt;响应类型&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;MemberAdd&lt;/td&gt;&#10; &lt;td&gt;MemberAddRequest&lt;/td&gt;&#10; &lt;td&gt;MemberAddResponse&lt;/td&gt;&#10; &lt;td&gt;MemberAdd 将成员添加至集群。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;MemberRemove&lt;/td&gt;&#10; &lt;td&gt;MemberRemoveRequest&lt;/td&gt;&#10; &lt;td&gt;MemberRemoveResponse&lt;/td&gt;&#10; &lt;td&gt;MemberRemove 从集群中移除现有成员。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;MemberUpdate&lt;/td&gt;&#10; &lt;td&gt;MemberUpdateRequest&lt;/td&gt;&#10; &lt;td&gt;MemberUpdateResponse&lt;/td&gt;&#10; &lt;td&gt;MemberUpdate 更新成员配置。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;MemberList&lt;/td&gt;&#10; &lt;td&gt;MemberListRequest&lt;/td&gt;&#10; &lt;td&gt;MemberListResponse&lt;/td&gt;&#10; &lt;td&gt;MemberList 列出集群中的所有成员。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;MemberPromote&lt;/td&gt;&#10; &lt;td&gt;MemberPromoteRequest&lt;/td&gt;&#10; &lt;td&gt;MemberPromoteResponse&lt;/td&gt;&#10; &lt;td&gt;MemberPromote 将学习者成员（非投票成员）提升为 Raft 投票成员。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="service-kv-apietcdserverpbrpcproto"&gt;服务 &lt;code&gt;KV&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;方法&lt;/th&gt;&#10; &lt;th scope="col"&gt;请求类型&lt;/th&gt;&#10; &lt;th scope="col"&gt;响应类型&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Range&lt;/td&gt;&#10; &lt;td&gt;RangeRequest&lt;/td&gt;&#10; &lt;td&gt;RangeResponse&lt;/td&gt;&#10; &lt;td&gt;Range 从键值存储中获取指定范围内的键。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Put&lt;/td&gt;&#10; &lt;td&gt;PutRequest&lt;/td&gt;&#10; &lt;td&gt;PutResponse&lt;/td&gt;&#10; &lt;td&gt;Put 将指定键写入键值存储。Put 请求会递增键值存储的修订版本，并在事件历史中生成一个事件。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;DeleteRange&lt;/td&gt;&#10; &lt;td&gt;DeleteRangeRequest&lt;/td&gt;&#10; &lt;td&gt;DeleteRangeResponse&lt;/td&gt;&#10; &lt;td&gt;DeleteRange 从键值存储中删除指定范围内的键。删除请求会递增键值存储的修订版本，并为每个被删除的键在事件历史中生成一个删除事件。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Txn&lt;/td&gt;&#10; &lt;td&gt;TxnRequest&lt;/td&gt;&#10; &lt;td&gt;TxnResponse&lt;/td&gt;&#10; &lt;td&gt;Txn 在单个事务中处理多个请求。事务请求会递增键值存储的修订版本，并为每个完成的请求生成具有相同修订版本的事件。不允许在同一个事务中多次修改同一键。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Compact&lt;/td&gt;&#10; &lt;td&gt;CompactionRequest&lt;/td&gt;&#10; &lt;td&gt;CompactionResponse&lt;/td&gt;&#10; &lt;td&gt;Compact 对 etcd 键值存储中的事件历史进行压缩。键值存储应定期执行压缩，否则事件历史将无限增长。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="service-lease-apietcdserverpbrpcproto"&gt;服务 &lt;code&gt;Lease&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;方法&lt;/th&gt;&#10; &lt;th scope="col"&gt;请求类型&lt;/th&gt;&#10; &lt;th scope="col"&gt;响应类型&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;LeaseGrant&lt;/td&gt;&#10; &lt;td&gt;LeaseGrantRequest&lt;/td&gt;&#10; &lt;td&gt;LeaseGrantResponse&lt;/td&gt;&#10; &lt;td&gt;LeaseGrant 创建一个租约，若服务器在指定的生存时间（TTL）内未收到保活请求，则该租约将过期。若租约过期，所有关联该租约的键将被过期并删除。每个过期的键都会在事件历史中生成一个删除事件。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;LeaseRevoke&lt;/td&gt;&#10; &lt;td&gt;LeaseRevokeRequest&lt;/td&gt;&#10; &lt;td&gt;LeaseRevokeResponse&lt;/td&gt;&#10; &lt;td&gt;LeaseRevoke 撤销一个租约。所有关联该租约的键将过期并被删除。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;LeaseKeepAlive&lt;/td&gt;&#10; &lt;td&gt;LeaseKeepAliveRequest&lt;/td&gt;&#10; &lt;td&gt;LeaseKeepAliveResponse&lt;/td&gt;&#10; &lt;td&gt;LeaseKeepAlive 通过客户端向服务器流式发送保活请求，并从服务器流式接收保活响应，以维持租约的活跃状态。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;LeaseTimeToLive&lt;/td&gt;&#10; &lt;td&gt;LeaseTimeToLiveRequest&lt;/td&gt;&#10; &lt;td&gt;LeaseTimeToLiveResponse&lt;/td&gt;&#10; &lt;td&gt;LeaseTimeToLive 获取租约信息。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;LeaseLeases&lt;/td&gt;&#10; &lt;td&gt;LeaseLeasesRequest&lt;/td&gt;&#10; &lt;td&gt;LeaseLeasesResponse&lt;/td&gt;&#10; &lt;td&gt;LeaseLeases 列出所有现有的租约。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="service-maintenance-apietcdserverpbrpcproto"&gt;服务 &lt;code&gt;Maintenance&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;方法&lt;/th&gt;&#10; &lt;th scope="col"&gt;请求类型&lt;/th&gt;&#10; &lt;th scope="col"&gt;响应类型&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Alarm&lt;/td&gt;&#10; &lt;td&gt;AlarmRequest&lt;/td&gt;&#10; &lt;td&gt;AlarmResponse&lt;/td&gt;&#10; &lt;td&gt;告警用于激活、停用和查询与集群健康状态相关的告警。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Status&lt;/td&gt;&#10; &lt;td&gt;StatusRequest&lt;/td&gt;&#10; &lt;td&gt;StatusResponse&lt;/td&gt;&#10; &lt;td&gt;状态用于获取成员的状态。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Defragment&lt;/td&gt;&#10; &lt;td&gt;DefragmentRequest&lt;/td&gt;&#10; &lt;td&gt;DefragmentResponse&lt;/td&gt;&#10; &lt;td&gt;碎片整理用于对成员的后端数据库进行碎片整理，以恢复存储空间。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Hash&lt;/td&gt;&#10; &lt;td&gt;HashRequest&lt;/td&gt;&#10; &lt;td&gt;HashResponse&lt;/td&gt;&#10; &lt;td&gt;哈希用于计算整个后端键空间的哈希值，包括存储中的键、租约及其他桶。此功能仅用于测试！请勿在存在持续事务的生产环境中依赖此操作，因为哈希操作不持有 MVCC 锁。如需对“键”桶进行一致性检查，请改用“HashKV” API。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;HashKV&lt;/td&gt;&#10; &lt;td&gt;HashKVRequest&lt;/td&gt;&#10; &lt;td&gt;HashKVResponse&lt;/td&gt;&#10; &lt;td&gt;哈希键用于计算指定修订版本之前所有 MVCC 键的哈希值。它仅遍历后端存储中的“键”桶。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Snapshot&lt;/td&gt;&#10; &lt;td&gt;SnapshotRequest&lt;/td&gt;&#10; &lt;td&gt;SnapshotResponse&lt;/td&gt;&#10; &lt;td&gt;快照通过流将成员的整个后端数据发送给客户端。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;MoveLeader&lt;/td&gt;&#10; &lt;td&gt;MoveLeaderRequest&lt;/td&gt;&#10; &lt;td&gt;MoveLeaderResponse&lt;/td&gt;&#10; &lt;td&gt;转移领导者用于请求当前领导者将其领导权转移给指定接收节点。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Downgrade&lt;/td&gt;&#10; &lt;td&gt;DowngradeRequest&lt;/td&gt;&#10; &lt;td&gt;DowngradeResponse&lt;/td&gt;&#10; &lt;td&gt;降级用于请求降级、验证可行性或取消集群版本的降级操作。自 etcd 3.5 起支持。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="service-watch-apietcdserverpbrpcproto"&gt;服务 &lt;code&gt;Watch&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;方法&lt;/th&gt;&#10; &lt;th scope="col"&gt;请求类型&lt;/th&gt;&#10; &lt;th scope="col"&gt;响应类型&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Watch&lt;/td&gt;&#10; &lt;td&gt;WatchRequest&lt;/td&gt;&#10; &lt;td&gt;WatchResponse&lt;/td&gt;&#10; &lt;td&gt;Watch 用于监听发生的事件或已发生的事件。输入和输出均为流；输入流用于创建和取消监听器，输出流用于发送事件。一个 Watch RPC 可以同时监听多个键范围，一次性流式传输多个监听的事件。可以从最后一次压缩的修订版本开始，监听完整的事件历史。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-alarmmember-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AlarmMember&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;memberID&lt;/td&gt;&#10; &lt;td&gt;memberID 是与触发告警相关的成员的 ID。&lt;/td&gt;&#10; &lt;td&gt;uint64&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;alarm&lt;/td&gt;&#10; &lt;td&gt;alarm 是已触发的告警类型。&lt;/td&gt;&#10; &lt;td&gt;AlarmType&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-alarmrequest-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AlarmRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;action&lt;/td&gt;&#10; &lt;td&gt;action 表示要发出的告警请求类型。action 可以是获取告警状态、激活告警，或停用已触发的告警。&lt;/td&gt;&#10; &lt;td&gt;AlarmAction&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;memberID&lt;/td&gt;&#10; &lt;td&gt;memberID 表示与告警关联的成员 ID。如果 memberID 为 0，则该告警请求涵盖所有成员。&lt;/td&gt;&#10; &lt;td&gt;uint64&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;alarm&lt;/td&gt;&#10; &lt;td&gt;alarm 表示本次请求所考虑的告警类型。&lt;/td&gt;&#10; &lt;td&gt;AlarmType&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-alarmresponse-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AlarmResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;alarms&lt;/td&gt;&#10; &lt;td&gt;alarms 是与告警请求相关联的告警列表。&lt;/td&gt;&#10; &lt;td&gt;(slice of) AlarmMember&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authdisablerequest-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthDisableRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authdisableresponse-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthDisableResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authenablerequest-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthEnableRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authenableresponse-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthEnableResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authroleaddrequest-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthRoleAddRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;name&lt;/td&gt;&#10; &lt;td&gt;name 是要添加到身份认证系统中的角色名称。&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authroleaddresponse-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthRoleAddResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authroledeleterequest-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthRoleDeleteRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;role&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authroledeleteresponse-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthRoleDeleteResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authrolegetrequest-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthRoleGetRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;role&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authrolegetresponse-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthRoleGetResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;perm&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;(切片) authpb.Permission&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authrolegrantpermissionrequest-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthRoleGrantPermissionRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;name&lt;/td&gt;&#10; &lt;td&gt;name 是将被授予权限的角色名称。&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;perm&lt;/td&gt;&#10; &lt;td&gt;perm 是要授予角色的权限。&lt;/td&gt;&#10; &lt;td&gt;authpb.Permission&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authrolegrantpermissionresponse-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthRoleGrantPermissionResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authrolelistrequest-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthRoleListRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authrolelistresponse-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthRoleListResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;roles&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;(slice of) string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authrolerevokepermissionrequest-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthRoleRevokePermissionRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;role&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;key&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;bytes&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;range_end&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;bytes&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authrolerevokepermissionresponse-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthRoleRevokePermissionResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authstatusrequest-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthStatusRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authstatusresponse-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthStatusResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;enabled&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;bool&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;authRevision&lt;/td&gt;&#10; &lt;td&gt;authRevision 是认证存储系统的当前修订版本&lt;/td&gt;&#10; &lt;td&gt;uint64&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authuseraddrequest-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthUserAddRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;name&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;password&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;options&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;authpb.UserAddOptions&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;hashedPassword&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authuseraddresponse-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthUserAddResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authuserchangepasswordrequest-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthUserChangePasswordRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;name&lt;/td&gt;&#10; &lt;td&gt;name 是要更改密码的用户的名称。&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;password&lt;/td&gt;&#10; &lt;td&gt;password 是用户的新密码。请注意，该字段将在 API 层被移除。&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;hashedPassword&lt;/td&gt;&#10; &lt;td&gt;hashedPassword 是用户的新的哈希密码。请注意，该字段将在 API 层被初始化。&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authuserchangepasswordresponse-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthUserChangePasswordResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authuserdeleterequest-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthUserDeleteRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;name&lt;/td&gt;&#10; &lt;td&gt;name 是要删除的用户名称。&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authuserdeleteresponse-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthUserDeleteResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authusergetrequest-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthUserGetRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;name&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authusergetresponse-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthUserGetResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;roles&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;(slice of) string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authusergrantrolerequest-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthUserGrantRoleRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;user&lt;/td&gt;&#10; &lt;td&gt;user 是应被授予指定角色的用户名。&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;role&lt;/td&gt;&#10; &lt;td&gt;role 是应授予用户的角色名称。&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authusergrantroleresponse-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthUserGrantRoleResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authuserlistrequest-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthUserListRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authuserlistresponse-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthUserListResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;users&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;(slice of) string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authuserrevokerolerequest-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthUserRevokeRoleRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;name&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;role&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authuserrevokeroleresponse-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthUserRevokeRoleResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authenticaterequest-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthenticateRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;name&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;password&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authenticateresponse-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthenticateResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;token&lt;/td&gt;&#10; &lt;td&gt;token 是可用于后续 RPC 的授权令牌&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-compactionrequest-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;CompactionRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;p&gt;CompactionRequest 对键值存储执行压缩，直至指定的修订版本。所有修订版本小于压缩修订版本的已覆盖键将被移除。&lt;/p&gt;</description></item><item><title>API 参考：并发</title><link>https://pig.center/zh/docs/etcd/dev-guide/api_concurrency_reference_v3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/etcd/dev-guide/api_concurrency_reference_v3/</guid><description>&lt;p&gt;本文 API 参考由命名的 &lt;code&gt;.proto&lt;/code&gt; 文件自动生成。&lt;/p&gt;&#10;&lt;h5 id="service-lock-serveretcdserverapiv3lockv3lockpbv3lockproto"&gt;服务 &lt;code&gt;Lock&lt;/code&gt; (server/etcdserver/api/v3lock/v3lockpb/v3lock.proto)&#10;&lt;/h5&gt;&#10;&lt;p&gt;锁服务将客户端锁功能以 gRPC 接口的形式暴露。&lt;/p&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;方法&lt;/th&gt;&#10; &lt;th scope="col"&gt;请求类型&lt;/th&gt;&#10; &lt;th scope="col"&gt;响应类型&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Lock&lt;/td&gt;&#10; &lt;td&gt;LockRequest&lt;/td&gt;&#10; &lt;td&gt;LockResponse&lt;/td&gt;&#10; &lt;td&gt;Lock 在指定名称的锁上获取分布式共享锁。成功时，将返回一个唯一键，该键在调用方持有锁期间持续存在。该键可与事务配合使用，以确保对 etcd 的更新仅在持有锁所有权时发生。锁将持续持有，直至对键调用 Unlock，或与所有者关联的租约到期。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Unlock&lt;/td&gt;&#10; &lt;td&gt;UnlockRequest&lt;/td&gt;&#10; &lt;td&gt;UnlockResponse&lt;/td&gt;&#10; &lt;td&gt;Unlock 接收 Lock 返回的键，并释放对锁的持有。等待获取锁的下一个 Lock 调用者将被唤醒，并获得锁的所有权。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-lockrequest-serveretcdserverapiv3lockv3lockpbv3lockproto"&gt;消息 &lt;code&gt;LockRequest&lt;/code&gt; (server/etcdserver/api/v3lock/v3lockpb/v3lock.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;name&lt;/td&gt;&#10; &lt;td&gt;name 是要获取的分布式共享锁的标识符。&lt;/td&gt;&#10; &lt;td&gt;bytes&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;lease&lt;/td&gt;&#10; &lt;td&gt;lease 是将附加到锁所有权的租约 ID。如果该租约到期或被撤销且当前持有锁，则锁会自动释放。使用相同租约调用 Lock 将被视为一次获取；使用相同租约两次锁定为无操作。&lt;/td&gt;&#10; &lt;td&gt;int64&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-lockresponse-serveretcdserverapiv3lockv3lockpbv3lockproto"&gt;消息 &lt;code&gt;LockResponse&lt;/code&gt; (server/etcdserver/api/v3lock/v3lockpb/v3lock.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;etcdserverpb.ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;key&lt;/td&gt;&#10; &lt;td&gt;键是在锁持有者持有锁期间存在于 etcd 中的键。用户不应修改此键，否则锁可能表现出未定义行为。&lt;/td&gt;&#10; &lt;td&gt;bytes&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-unlockrequest-serveretcdserverapiv3lockv3lockpbv3lockproto"&gt;消息 &lt;code&gt;UnlockRequest&lt;/code&gt; (server/etcdserver/api/v3lock/v3lockpb/v3lock.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;key&lt;/td&gt;&#10; &lt;td&gt;key 是由 Lock 分配的锁所有权键。&lt;/td&gt;&#10; &lt;td&gt;bytes&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-unlockresponse-serveretcdserverapiv3lockv3lockpbv3lockproto"&gt;消息 &lt;code&gt;UnlockResponse&lt;/code&gt; (server/etcdserver/api/v3lock/v3lockpb/v3lock.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;etcdserverpb.ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="service-election-serveretcdserverapiv3electionv3electionpbv3electionproto"&gt;服务 &lt;code&gt;Election&lt;/code&gt; (server/etcdserver/api/v3election/v3electionpb/v3election.proto)&#10;&lt;/h5&gt;&#10;&lt;p&gt;选举服务通过 gRPC 接口向客户端暴露选举功能。&lt;/p&gt;</description></item></channel></rss>