Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ( // NewRaft 创建节点. /* @param conf *raft.Config 节点配置 @param fsm raft.FSM 有限状态机(finite state machine) @param logs raft.LogStore 用来存储raft的日志 @param stable raft.StableStore 稳定存储,用来存储raft集群的节点信息等 @param snaps raft.SnapshotStore 快照存储,用来存储节点的快照信息 @param trans raft.Transport raft节点内部的通信通道 */ NewRaft func(conf *raft.Config, fsm raft.FSM, logs raft.LogStore, stable raft.StableStore, snaps raft.SnapshotStore, trans raft.Transport) (*raft.Raft, error) = raft.NewRaft // RecoverCluster RecoverCluster func(conf *raft.Config, fsm raft.FSM, logs raft.LogStore, stable raft.StableStore, snaps raft.SnapshotStore, trans raft.Transport, configuration raft.Configuration) error = raft.RecoverCluster // BootstrapCluster BootstrapCluster func(conf *raft.Config, logs raft.LogStore, stable raft.StableStore, snaps raft.SnapshotStore, trans raft.Transport, configuration raft.Configuration) error = raft.BootstrapCluster // GetConfiguration GetConfiguration func(conf *raft.Config, fsm raft.FSM, logs raft.LogStore, stable raft.StableStore, snaps raft.SnapshotStore, trans raft.Transport) (raft.Configuration, error) = raft.GetConfiguration // HasExistingState HasExistingState func(logs raft.LogStore, stable raft.StableStore, snaps raft.SnapshotStore) (bool, error) = raft.HasExistingState )
View Source
var ( // NewDiscardSnapshotStore /* PS: (1) DiscardSnapshotStore: 不存储,忽略快照,相当于/dev/null(一般用于测试) (2) 实现了接口: raft.SnapshotStore */ NewDiscardSnapshotStore func() *raft.DiscardSnapshotStore = raft.NewDiscardSnapshotStore // NewFileSnapshotStore /* PS: (1) FileSnapshotStore: 文件持久化存储 (2) 实现了接口: raft.SnapshotStore */ NewFileSnapshotStore func(base string, retain int, logOutput io.Writer) (*raft.FileSnapshotStore, error) = raft.NewFileSnapshotStore // NewInmemSnapshotStore /* PS: (1) InmemSnapshotStore: 内存存储,不持久化,重启程序会丢失 (2) 实现了接口: raft.SnapshotStore */ NewInmemSnapshotStore func() *raft.InmemSnapshotStore = raft.NewInmemSnapshotStore )
View Source
var ( // NewTCPTransport /* PS: (1) Transport是raft集群内部节点之间的通信渠道,节点之间需要通过这个通道来进行日志同步、leader选举等; (2) TCPTransport: 基于tcp,可以跨机器跨网络通信. */ NewTCPTransport func(bindAddr string, advertise net.Addr, maxPool int, timeout time.Duration, logOutput io.Writer) (*raft.NetworkTransport, error) = raft.NewTCPTransport NewTCPTransportWithLogger func(bindAddr string, advertise net.Addr, maxPool int, timeout time.Duration, logger hclog.Logger) (*raft.NetworkTransport, error) = raft.NewTCPTransportWithLogger NewTCPTransportWithConfig func(bindAddr string, advertise net.Addr, config *raft.NetworkTransportConfig) (*raft.NetworkTransport, error) = raft.NewTCPTransportWithConfig )
View Source
var ( // DefaultConfig 默认的配置. DefaultConfig func() *raft.Config = raft.DefaultConfig )
View Source
var ( // NewInmemStore /* PS: (1) 实现了接口: raft.LogStore、raft.StableStore */ NewInmemStore func() *raft.InmemStore = raft.NewInmemStore )
Functions ¶
func NewBoltStore ¶
NewBoltStore
PS: (1) hashicorp提供了一个 raft-boltdb 来实现底层存储,它是一个嵌入式的数据库,能够 持久化 存储数据,我们直接用它来实现 LogStore 和 StableStore. (2) 实现了接口: raft.LogStore、raft.StableStore @param filePath string 存储路径(建议以".bolt"为文件后缀)
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.