18 | Hashicorp Raft(二):如何以“集群节点”为中心使用API?

上一讲结束后,相信有的同学已经跃跃欲试,想把 Hashicorp Raft 使用起来了。不过,也有一些同学跟我反馈,说自己看到 Hashicorp Raft 的Godoc,阅读完接口文档后,感觉有些不知所措,无从下手,Hashicorp Raft 支持了那么多的函数,自己却不知道如何将这些函数使用起来。

这似乎是一个共性的问题,在我看来,之所以出现这个问题,是因为文档里虽然提到了 API 的功能,但并没有提如何在实际场景中使用这些 API,每个 API 都是孤立的点,缺乏一些场景化的线将它们串联起来。

所以,为了更好地理解 Hashicorp Raft 的 API 接口,在实践中将它们用起来,以“集群节点”为核心,通过创建、增加、移除集群节点,查看集群节点状态这 4 个典型的场景,具体聊一聊在 Hashicorp Raft 中,通过哪些 API 接口能创建、增加、移除集群节点,查看集群节点状态。这样一来,我们会一步一步,循序渐进地彻底吃透 Hashicorp Raft 的 API 接口用法。

我们知道,开发实现一个 Raft 集群的时候,首先要做的第一个事情就是创建 Raft 节点,那么在 Hashicorp Raft 中如何创建节点呢?

如何创建 Raft 节点

在 Hashicorp Raft 中,可以通过 NewRaft() 函数,来创建 Raft 节点。强调一下,NewRaft() 是非常核心的函数,是 Raft 节点的抽象实现,NewRaft() 函数的原型是这样的:

func NewRaft(
        conf *Config, 
        fsm FSM, 
        logs LogStore, 
        stable StableStore, 
        snaps SnapshotStore, 
        trans Transport) (*Raft, error)

可以从这段代码中看到,NewRaft() 函数有这么几种类型的参数,它们分别是:

Config(节点的配置信息);

FSM(有限状态机);

LogStore(用来存储 Raft 的日志);

StableStore(稳定存储,用来存储 Raft 集群的节点信息等);

SnapshotStore(快照存储,用来存储节点的快照信息);

Transport(Raft 节点间的通信通道)。

这 6 种类型的参数决定了 Raft 节点的配置、通讯、存储、状态机操作等核心信息,所以带你详细了解一下,在这个过程中,你要注意是如何创建这些参数信息的。

Config 是节点的配置信息,可通过函数 DefaultConfig(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值