memberlist 方法

import "github.com/hashicorp/memberlist"
memberlist是一个库,它使用基于 gossip 的协议管理集群成员关系和成员故障检测。
此类库的用例意义深远:所有分布式系统都需要成员关系,而成员列表是管理集群成员关系和节点故障检测的可重用解决方案.
成员列表最终是一致的,但平均收敛速度很快。它收敛的速度可以通过协议上的各个旋钮进行大量调优。通过尝试通过多个路由与可能死节点通信,可以检测到节点故障并部分容忍网络分区.

方法

  • func DefaultLocalConfig() *Config 返回一个 struct
    DefaultLocalConfig的工作原理与DefaultConfig类似,然而,它返回一个优化的本地环回地址的配置。默认配置仍然是非常保守的,并且需要注意错误。
  • func Create(conf *Config) (*Memberlist, error)
    Create将使用给定的配置创建一个新的成员列表。它还不会连接到任何其他节点(请参见Join),但会启动所有侦听器,以允许其他节点加入这个成员列表。创建成员列表后,用户不应该再修改给定的配置。
  • func (m *Memberlist) GetHealthScore() int
    数字越低越好,0 意味着“完全健康”
  • func (m *Memberlist) Join(existing []string) (int, error)
    Join用于获取现有的成员列表,并尝试通过联系所有给定主机并执行状态同步来连接集群。最初,Memberlist只包含我们自己的状态,因此这样做将导致远程节点意识到这个节点的存在,从而有效地加入集群。
    这将返回成功联系的主机数量,如果无法联系到主机,则返回错误。如果返回错误,则节点没有成功加入集群。
  • func (m *Memberlist) Leave(timeout time.Duration) error
    Leave将广播一条Leave消息,但不会关闭后台侦听器,这意味着节点将继续参与gossip和状态更新。
    这将阻塞,直到成功地将leave消息广播到集群的一个成员(如果有的话),或者直到达到指定的超时。
    这个方法可以安全地多次调用,但是在集群已经关闭之后不能再调用它。
  • func (m *Memberlist) LocalNode() *Node
    LocalNode用于返回本地节点
  • func (m *Memberlist) Members() []*Node
    Members返回所有已知的活着的节点列表。返回的节点结构不能被修改。如果希望修改节点,请先进行复制。
  • func (m *Memberlist) NumMembers() (alive int)
    NumMembers返回当前已知的活着的节点的数量。在调用NumMembers和调用Members的时候,活着节点的数量可能已经改变,所以这个不应该用来确定Members返回多少个members。
  • func (m *Memberlist) Ping(node string, addr net.Addr) (time.Duration, error)
    Ping向具有指定名称的节点发起Ping。
  • func (m *Memberlist) ProtocolVersion() uint8
    返回此memberlist当前使用的协议版本。
  • func (m *Memberlist) SendBestEffort(to *Node, msg []byte) error
    SendBestEffort使用传输的不可靠的数据包的接口以给定节点上的用户消息为目标(不使用gossip机制)。消息的最大大小取决于此memberlist实例的已配置UDPBufferSize。
  • func (m *Memberlist) SendReliable(to *Node, msg []byte) error
    sendreresponsible使用可靠的面向流的传输接口,以指定节点上的用户消息为目标(不使用gossip机制)。如果没有返回错误,并且消息的大小没有限制,则保证交付。
  • func (m *Memberlist) Shutdown() error
    Shutdown将停止此memberlist的网络活动的任何后台维护,导致它显示为“dead”。在此之前,将不会广播leave消息,因此所剩下的集群必须使用探测来检测此节点的关闭。如果希望更优雅地退出集群,请在关闭之前调用Leave。
    这个方法可以安全调用多次。
  • func (m *Memberlist) UpdateNode(timeout time.Duration) error
    UpdateNode is used to trigger re-advertising the local node.
    这将阻塞,直到更新消息成功地广播到集群的一个成员(如果存在更新消息),或者直到达到指定的超时。

你可能感兴趣的:(memberlist 方法)