node

package
v0.0.0-...-4b30ddc Latest Latest
Warning

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

Go to latest
Published: Feb 28, 2023 License: MIT Imports: 26 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewRaft

func NewRaft(ctx context.Context, config *HaSqliteRaftConfig, fsm raft.FSM) (*raft.Raft, *transport.Manager, error)

Types

type HaSqliteCmdQueue

type HaSqliteCmdQueue struct {
	// contains filtered or unexported fields
}

func NewHaSqliteCmdQueue

func NewHaSqliteCmdQueue(raft *raft.Raft) *HaSqliteCmdQueue

TODO 目前不满足事务隔离执行

type HaSqliteContext

type HaSqliteContext struct {
	// Config 配置参数
	Config *HaSqliteRaftConfig

	Raft       *raft.Raft
	Sock       net.Listener
	GrpcServer *grpc.Server
	// contains filtered or unexported fields
}

func NewHaSqliteContext

func NewHaSqliteContext(config *HaSqliteRaftConfig) (*HaSqliteContext, error)

func StartHaSqliteBlockNonBlocking

func StartHaSqliteBlockNonBlocking(config *HaSqliteRaftConfig) (*HaSqliteContext, error)

StartHaSqliteBlockNonBlocking 启动服务非阻运行

func (*HaSqliteContext) BeginTx

BeginTx 开始事务执行

func (*HaSqliteContext) Exec

Exec 执行数据库命令

func (*HaSqliteContext) FinishTx

FinishTx 开始事务执行

func (*HaSqliteContext) IsLeader

func (ctx *HaSqliteContext) IsLeader() bool

IsLeader 当前节点是否为 leader

func (*HaSqliteContext) Join

func (*HaSqliteContext) Open

Open 打开数据库

func (*HaSqliteContext) Ping

Ping 验证服务连通性

func (*HaSqliteContext) Query

Query 查询记录

func (*HaSqliteContext) WaitHasLeader

func (ctx *HaSqliteContext) WaitHasLeader()

WaitHasLeader 等待选举 leader 完成

type HaSqliteLeaderNotify

type HaSqliteLeaderNotify struct {
	// contains filtered or unexported fields
}

func NewHaSqliteLeaderNotify

func NewHaSqliteLeaderNotify(raft *raft.Raft) *HaSqliteLeaderNotify

func (*HaSqliteLeaderNotify) WaitHasLeader

func (n *HaSqliteLeaderNotify) WaitHasLeader()

type HaSqliteRaftConfig

type HaSqliteRaftConfig struct {
	// Address TCP host+port for this node
	Address string `mapstructure:"address" yaml:"address"`
	// LocalPort TCP port for this node
	LocalPort string `mapstructure:"local-port" yaml:"local-port"`
	// RaftId Node id used by Raft
	RaftId string `mapstructure:"raft-id" yaml:"raft-id"`
	// DataPath is path to node data. Always set.
	DataPath string `mapstructure:"data-path" yaml:"data-path"`
	// RaftBootstrap Whether to bootstrap the Raft cluster
	RaftBootstrap bool `mapstructure:"raft-bootstrap" yaml:"raft-bootstrap"`
	// RaftAdmin register raftAdmin grpc
	RaftAdmin bool `mapstructure:"raft-admin" yaml:"raft-admin"`
	// JoinAddress auto join cluster
	JoinAddress string `mapstructure:"join-address" yaml:"join-address"`
}

func (*HaSqliteRaftConfig) NodeDataPath

func (c *HaSqliteRaftConfig) NodeDataPath() string

type HaSqliteRaftDBManager

type HaSqliteRaftDBManager struct {
	// contains filtered or unexported fields
}

func NewHaSqliteRaftDBManager

func NewHaSqliteRaftDBManager(raft *raft.Raft, dataPath string) (*HaSqliteRaftDBManager, error)

func (*HaSqliteRaftDBManager) ApplyWal

func (d *HaSqliteRaftDBManager) ApplyWal(c context.Context, dbId int64, b []byte) error

ApplyWal 应用日志

func (*HaSqliteRaftDBManager) BeginTx

BeginTx 开始事务执行

func (*HaSqliteRaftDBManager) Exec

Exec 执行数据库命令

func (*HaSqliteRaftDBManager) FinishTx

FinishTx 开始事务执行

func (*HaSqliteRaftDBManager) GetDB

func (d *HaSqliteRaftDBManager) GetDB(dbId int64) (*db.HaSqliteDB, bool, error)

func (*HaSqliteRaftDBManager) Open

Open 打开数据库(不存在则创建)

func (*HaSqliteRaftDBManager) Query

Query 查询记录

func (*HaSqliteRaftDBManager) TryClose

func (d *HaSqliteRaftDBManager) TryClose(dbId int64)

TryClose 尝试关闭库释放内存

type HaSqliteRaftFSM

type HaSqliteRaftFSM struct {
	// contains filtered or unexported fields
}

HaSqliteRaftFSM Raft 生命周期相关接口实现

func NewHaSqliteRaftFSM

func NewHaSqliteRaftFSM(dataPath string) (*HaSqliteRaftFSM, error)

func (*HaSqliteRaftFSM) Apply

func (fsm *HaSqliteRaftFSM) Apply(l *raft.Log) interface{}

func (*HaSqliteRaftFSM) BeginTx

BeginTx 开始事务执行

func (*HaSqliteRaftFSM) Exec

Exec 执行数据库命令

func (*HaSqliteRaftFSM) FinishTx

FinishTx 开始事务执行

func (*HaSqliteRaftFSM) InitRaft

func (fsm *HaSqliteRaftFSM) InitRaft(r *raft.Raft)

func (*HaSqliteRaftFSM) Open

Open 打开数据库

func (*HaSqliteRaftFSM) Query

Query 查询记录

func (*HaSqliteRaftFSM) Restore

func (fsm *HaSqliteRaftFSM) Restore(r io.ReadCloser) error

func (*HaSqliteRaftFSM) Snapshot

func (fsm *HaSqliteRaftFSM) Snapshot() (raft.FSMSnapshot, error)

type HaSqliteSnapshot

type HaSqliteSnapshot struct {
}

func (*HaSqliteSnapshot) Persist

func (s *HaSqliteSnapshot) Persist(sink raft.SnapshotSink) error

Persist TODO 快照实现,快照时将本地数据库文件归档至s3或磁盘归档并移除不活跃的本地文件(将会在下次活跃时从归档中拉取),将系统库克隆一并归档

func (*HaSqliteSnapshot) Release

func (s *HaSqliteSnapshot) Release()

Jump to

Keyboard shortcuts

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