• 13761642169
    2019-09-29
    使用raft协议的系统,只有leader可以接受写请求,follower接受读请求?

    作者回复: Etcd支持以下两种read:

    1. Linearizable read(默认): 需要由Leader发起,Leader发送一个请求给所有节点,在收到多数节点的响应之后,才把结果返回给客户端。如果一个follower收到linearizable read的请求,需要转发给leader来处理。
    2. Serializable read(使用Get API的话要加WithSerializable选项): Leader和follower都可以在本地处理,时延低。

    只有Etcd的leader才能处理write。Follower在接到write请求后,要转发给leader来处理。

    参见https://github.com/etcd-io/etcd/blob/master/Documentation/faq.md#do-clients-have-to-send-requests-to-the-etcd-leader:
    > Raft is leader-based; the leader handles all client requests which need cluster consensus. However, the client does not need to know which node is the leader. Any request that requires consensus sent to a follower is automatically forwarded to the leader. Requests that do not require consensus (e.g., serialized reads) can be processed by any cluster member.

    
     1
  • Goober
    2020-02-10
    这里存在一个问题就是 是协议微调的:s5 下线后,s1 上线 这时候已经是(4,3),那么s5 不会再成为leader 所以不存在(3,2)覆盖 (2,2)
    
    
我们在线,来聊聊吧