raftKit

package
v2.8.170 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 5, 2024 License: Apache-2.0 Imports: 7 Imported by: 0

Documentation

Overview

Package raftKit

Transport: raft集群内部节点之间的通信渠道,节点之间需要通过这个通道来进行日志同步、leader选举等.
(1) TCPTransport: 		基于tcp,可以跨机器跨网络通信.
(2) InmemTransport:		以内存为基础的传输层实现,它使用一个缓冲区来存存储请求和响应,并使用一个消费者通道来接收数据.
(3) NetworkTransport:	综合了TCPTransport和InmemTransport的优点的传输层实现,它既支持TCP协议提供的可靠性和高效性,又支持内存提供的简单性和灵活性.

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
	NewFileSnapshotStoreWithLogger func(base string, retain int, logger hclog.Logger) (*raft.FileSnapshotStore, error) = raft.NewFileSnapshotStoreWithLogger

	// NewInmemSnapshotStore
	/*
		PS:
		(1) InmemSnapshotStore: 内存存储,不持久化,重启程序会丢失
		(2) 实现了接口: raft.SnapshotStore
	*/
	NewInmemSnapshotStore func() *raft.InmemSnapshotStore = raft.NewInmemSnapshotStore
)
View Source
var (
	NewTCPTransport func(bindAddr string, advertise net.Addr, maxPool int, timeout time.Duration, logOutput io.Writer) (*raft.NetworkTransport, error) = raft.NewTCPTransport

	NewTCPTransportWithConfig func(bindAddr string, advertise net.Addr, config *raft.NetworkTransportConfig) (*raft.NetworkTransport, error) = raft.NewTCPTransportWithConfig

	NewTCPTransportWithLogger func(bindAddr string, advertise net.Addr, maxPool int, timeout time.Duration, logger hclog.Logger) (*raft.NetworkTransport, error) = raft.NewTCPTransportWithLogger
)
View Source
var (
	NewNetworkTransport           func(stream raft.StreamLayer, maxPool int, timeout time.Duration, logOutput io.Writer) *raft.NetworkTransport = raft.NewNetworkTransport
	NewNetworkTransportWithConfig func(config *raft.NetworkTransportConfig) *raft.NetworkTransport                                              = raft.NewNetworkTransportWithConfig
	NewNetworkTransportWithLogger func(stream raft.StreamLayer, maxPool int, timeout time.Duration, logger hclog.Logger) *raft.NetworkTransport = raft.NewNetworkTransportWithLogger
)
View Source
var (
	// DefaultConfig 默认的配置.
	DefaultConfig func() *raft.Config = raft.DefaultConfig
)
View Source
var NewHcLogger func(opts *hclog.LoggerOptions) hclog.Logger = hclog.New

NewHcLogger

PS: 返回值可以赋值给 raft.Config.Logger

@param opts 可以为nil(将采用默认值: os.Stderr、Info)

View Source
var (
	// NewInmemStore
	/*
		PS:
		(1) 实现了接口: raft.LogStore、raft.StableStore
	*/
	NewInmemStore func() *raft.InmemStore = raft.NewInmemStore
)

Functions

func NewBoltStore

func NewBoltStore(filePath string) (*raftboltdb.BoltStore, error)

NewBoltStore

PS:
(1) hashicorp提供了一个 raft-boltdb 来实现底层存储,它是一个嵌入式的数据库,能够 持久化 存储数据,我们直接用它来实现 LogStore 和 StableStore.
(2) 实现了接口: raft.LogStore、raft.StableStore

@param filePath string 存储路径(建议以".bolt"为文件后缀)

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL