consul

作者: Golang_执着 | 来源:发表于2018-05-30 13:02 被阅读0次

    agent--- An agent is the long running daemon on every member of the Consul cluster。agent能以client和server模式运行,可以简称为客户端和服务器。

    client---是一个将所有的RPC转发到服务器的代理。客户端唯一的交互就是参与LAN的八卦池 (LAN gossip pool)。

    server---参与Raft仲裁,维护集群状态,响应RPC查询,与其他数据中心交换WAN信息,以及将查询转发给Leader或remote datacenters.

    datacenter---数据中心定义为专用,低延迟和高带宽的网络环境。保存数据。

    Consensus---Consul使用共识协议 来提供一致性(由CAP定义)。共识协议基于 “Raft:寻找可理解的共识算法”

    LAN Gossip--- 指包含全部位于同一局域网或数据中心的节点的LAN gossip pool。

    WAN Gossip---Refers to the WAN gossip pool which contains only servers. 这些服务器主要位于不同的数据中心,通常通过互联网或广域网进行通信。

    RPC---远程过程调用。这是一个请求/响应机制,允许客户端发出服务器请求。

    在每个数据中心内,我们都有客户端和服务器的混合体。预计有三到五台服务器。这在故障情况下的可用性和性能之间取得了平衡,因为随着更多机器的添加,共识逐渐变慢。但是,客户数量没有限制,而且可以轻松扩展到数千或数万个客户。

    数据中心内的所有节点都参与到八卦协议中。这意味着有一个八卦池包含给定数据中心的所有节点。这有几个目的:首先,不需要为客户端配置服务器的地址; 发现是自动完成的。其次,检测节点故障的工作不是放在服务器上,而是分布式的。这使得故障检测比天真的心跳方案更具可扩展性。第三,它被用作消息层来通知重要事件,例如领导者选举发生。

    每个数据中心中的服务器都是单个Raft对等设备的一部分。这意味着他们一起选择一个单独的领导者,一个具有额外职责的选定服务器(Leader)。当非Leader的服务器收到RPC请求时,它会将其转发给集群Leader,Leader处理后会将结果Replication到各个节点上。

    服务器节点也作为WAN八卦池的一部分运行。此池与LAN池不同,因为它针对互联网的更高延迟进行了优化,并且预计仅包含其他Consul服务器节点。这个池的目的是让数据中心以低触摸的方式发现彼此。在线添加新数据中心就像加入现有的WAN八卦池一样简单。因为这些服务器都在这个池中运行,所以它也支持跨数据中心的请求。当服务器收到对不同数据中心的请求时,会将其转发到正确数据中心中的随机服务器。该服务器可能会转发给当地领导。

    通常,数据不会在不同的Consul数据中心之间复制。当对另一个数据中心中的资源发出请求时,本地Consul服务器将RPC请求转发给该资源的远程Consul服务器并返回结果。如果远程数据中心不可用,那么这些资源也将不可用,但这不会影响本地数据中心。在某些特殊情况下,可以复制有限的数据子集,例如Consul的内置 ACL复制功能或外部工具(如consul-replicate)

    共识协议:consul是通过raft来保持强一致性。通过raft选举出Leader,日志条目的复制来保证数据一致。

    只有Consul服务器节点参与Raft并且是对等设置的一部分。所有client都将请求转发给server 这种设计的部分原因是,随着更多成员被添加到对等设置中,法定数量的大小也会增加。这会引起性能问题,因为您可能会等待数百台机器同意进入而不是少数几台机器。

    不理解: LAN和WAN的八卦协议中的故障检测功能

    Gossip协议:

    领事使用两个不同的八卦池。我们将每个池分别称为LAN或WAN池。Consul运营的每个数据中心都有一个包含数据中心所有成员(包括客户端和服务器)的LAN八卦池。LAN池用于几个目的。成员资格信息允许客户自动发现服务器,从而减少所需的配置数量。分布式故障检测允许整个集群共享故障检测工作,而不是集中在几台服务器上。最后,八卦游戏池允许可靠和快速的事件广播,比如领袖选举。

    WAN池是全球唯一的,因为无论数据中心如何,所有服务器都应该参与WAN池。WAN池提供的成员资格信息允许服务器执行跨数据中心请求。集成的故障检测功能使Consul能够正常处理丢失连接的整个数据中心,或仅处理远程数据中心内的单个服务器。

    信号量(分布式锁)是基于session机制的。

           Consul提供的合约,发生如下任一情况,session都会被销毁:

           •节点销毁

           •任何的健康检查,注销

           •任何健康检查都要进入Critical状态

           •会话被显式销毁

           •TTL到期,如果适用

    当session失效后,会被销毁,不能再使用。如果使用release,任何与该session相关的锁都会被释放,并且持有该锁的key的ModifyIndex也会递增。如果使用了Delete,持有该锁的KEY将会被删除。

    相关文章

      网友评论

          本文标题:consul

          本文链接:https://www.haomeiwen.com/subject/vnuqxftx.html