Election service

Election service 提供观察键值对变化的支持。

v3election.proto 中 Election service 定义如下:

  1. // Election service 以 gRPC 接口的方式暴露客户端选举机制。
  2. service Election {
  3. // Campaign 等待获得选举的领导地位,如果成功返回 LeaderKey 代表领导地位。
  4. // 然后 LeaderKey 可以用来在选举时发起新的值,在依然持有领导地位时事务性的守护 API 请求,
  5. // 还有从选举中辞职。
  6. rpc Campaign(CampaignRequest) returns (CampaignResponse) {}
  7. // Proclaim 用新值更新领导者的旧值
  8. rpc Proclaim(ProclaimRequest) returns (ProclaimResponse) {}
  9. // Leader 返回当前的选举公告,如果有。
  10. rpc Leader(LeaderRequest) returns (LeaderResponse) {}
  11. // Observe 以流的方式返回选举公告,和被选举的领导者发布的顺序一致。
  12. rpc Observe(LeaderRequest) returns (stream LeaderResponse) {}
  13. // Resign 放弃选举领导地位,以便其他参选人可以在选举中获得领导地位。
  14. rpc Resign(ResignRequest) returns (ResignResponse) {}
  15. }