Campaign 方法

Campaign 方法用于参加选举以期获得领导地位:

  1. // Campaign 等待获得选举的领导地位,如果成功返回 LeaderKey 代表领导地位。
  2. // 然后 LeaderKey 可以用来在选举时发起新的值,在依然持有领导地位时事务性的守护 API 请求,
  3. // 还有从选举中辞职。
  4. rpc Campaign(CampaignRequest) returns (CampaignResponse) {}

消息定义

请求的消息体是 CampaignRequest

  1. message CampaignRequest {
  2. // name 是选举的标识符,用来参加竞选
  3. bytes name = 1;
  4. // lease is the ID of the lease attached to leadership of the election. If the
  5. // lease expires or is revoked before resigning leadership, then the
  6. // leadership is transferred to the next campaigner, if any.
  7. // lease 是附加到选举领导地位的租约的ID。如果租约过期或者在放弃领导地位之前取消,
  8. // 则领导地位转移到下一个竞选者,如果有。
  9. int64 lease = 2;
  10. // value 是竞选者赢得选举时设置的初始化公告值。
  11. bytes value = 3;
  12. }

应答的消息体是 CampaignResponse

  1. message CampaignResponse {
  2. etcdserverpb.ResponseHeader header = 1;
  3. // leader 描述用于持有选举的领导地位的资源
  4. LeaderKey leader = 2;
  5. }

LeaderKey 消息体的内容:

  1. message LeaderKey {
  2. // name 是选举标识符,和领导地位 key 对应
  3. bytes name = 1;
  4. // key 是不透明的 key ,代表选举的领导地位。
  5. // 如果 key 被删除,则领导地位丢失
  6. bytes key = 2;
  7. // rev 是 key 的创建修订版本。它可以用来在事务期间测验选举的领导地位,通过测验 key 的创建修订版本匹配 rev
  8. int64 rev = 3;
  9. // lease 是选举领导者的租约 ID
  10. int64 lease = 4;
  11. }