首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在RAFT中,服务器如何与客户端通信?

在RAFT中,服务器如何与客户端通信?
EN

Stack Overflow用户
提问于 2018-10-17 03:30:40
回答 1查看 419关注 0票数 1

根据RAFT的论文,它提到,除了leader服务器之外,每个服务器都有自己的日志条目和它的状态机,每个状态机处理来自日志的相同命令序列。

对于这个场景,我几乎没有什么疑问。

1如果一个客户端向领导者服务器发出一些请求,这意味着所有的追随者服务器都会处理这些请求并产生输出吗?但是谁会用输出回传给客户端呢?

2如果第一个问题的答案是leader将输出传回客户端,那么多个追随者在他们的状态机中计算/处理来自日志条目的相同输入有什么用?因为已经知道RAFT确保所有日志条目必须以相同的顺序包含相同的命令。仅仅让领导者在其状态机中处理日志中的条目并将其返回给客户端就足够了吗?

3另外,如果有多个客户端向服务器发出相同的请求,是否只有领导者将输出传达给所有客户端,还是跟随者出现在这里?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-17 09:22:06

你第一个问题的答案确实是,领导者的状态机输出是通过基本的Raft协议返回给client.

  • Technically,的,追随者没有理由必须立即将条目应用到他们的状态机。事实上,追随者通常甚至在领导者已经回复客户之后才知道一个条目的承诺。追随者将命令应用于其状态机的主要原因只是为了跟上领导者的步伐。如果领导者崩溃,跟随者将被选举为领导者,并需要接管为客户请求提供服务的工作。一旦当选,新的领导者将必须将所有未应用的命令应用于其状态机,然后才能开始为客户端请求提供服务。在跟随者上应用命令可以减少领导者变更的成本,而且在跟随者上应用命令的成本也很低,因为他们不是在为client requests.

  • There’s服务,这是对跟随者应用命令的另一个原因,而你的第三个问题几乎要揭开它了。只有领导者才会响应客户端的写请求,但追随者可以用宽松的一致性保证(顺序一致性)来响应读请求。为了做到这一点,领导者返回已完成命令的写入索引以及输出。然后,客户端可以查询跟随者,一旦跟随者的状态机至少达到了客户端最后一次写入的索引(由客户端提供),跟随者就可以查询状态机并返回输出。这允许客户端在领导者和追随者之间传播查询,这可能是实用系统确保追随者的状态机试图跟上领导者的状态的最好原因。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52842791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档