Documentation
¶
Index ¶
- func NewRaft(ctx context.Context, config *HaSqliteRaftConfig, fsm raft.FSM) (*raft.Raft, *transport.Manager, error)
- type HaSqliteCmdQueue
- type HaSqliteContext
- func (ctx *HaSqliteContext) BeginTx(c context.Context, req *proto.BeginTxRequest) (*proto.BeginTxResponse, error)
- func (ctx *HaSqliteContext) Exec(c context.Context, req *proto.ExecRequest) (*proto.ExecResponse, error)
- func (ctx *HaSqliteContext) FinishTx(c context.Context, req *proto.FinishTxRequest) (*proto.FinishTxResponse, error)
- func (ctx *HaSqliteContext) IsLeader() bool
- func (ctx *HaSqliteContext) Join(c context.Context, req *proto.JoinRequest) (*proto.JoinResponse, error)
- func (ctx *HaSqliteContext) Open(c context.Context, req *proto.OpenRequest) (*proto.OpenResponse, error)
- func (ctx *HaSqliteContext) Ping(c context.Context, req *proto.PingRequest) (*proto.PingResponse, error)
- func (ctx *HaSqliteContext) Query(c context.Context, req *proto.QueryRequest) (*proto.QueryResponse, error)
- func (ctx *HaSqliteContext) WaitHasLeader()
- type HaSqliteLeaderNotify
- type HaSqliteRaftConfig
- type HaSqliteRaftDBManager
- func (d *HaSqliteRaftDBManager) ApplyWal(c context.Context, dbId int64, b []byte) error
- func (d *HaSqliteRaftDBManager) BeginTx(c context.Context, req *proto.BeginTxRequest) (*proto.BeginTxResponse, error)
- func (d *HaSqliteRaftDBManager) Exec(c context.Context, req *proto.ExecRequest) (*proto.ExecResponse, error)
- func (d *HaSqliteRaftDBManager) FinishTx(c context.Context, req *proto.FinishTxRequest) (*proto.FinishTxResponse, error)
- func (d *HaSqliteRaftDBManager) GetDB(dbId int64) (*db.HaSqliteDB, bool, error)
- func (d *HaSqliteRaftDBManager) Open(c context.Context, req *proto.OpenRequest) (*proto.OpenResponse, error)
- func (d *HaSqliteRaftDBManager) Query(c context.Context, req *proto.QueryRequest) (*proto.QueryResponse, error)
- func (d *HaSqliteRaftDBManager) TryClose(dbId int64)
- type HaSqliteRaftFSM
- func (fsm *HaSqliteRaftFSM) Apply(l *raft.Log) interface{}
- func (fsm *HaSqliteRaftFSM) BeginTx(c context.Context, req *proto.BeginTxRequest) (*proto.BeginTxResponse, error)
- func (fsm *HaSqliteRaftFSM) Exec(c context.Context, req *proto.ExecRequest) (*proto.ExecResponse, error)
- func (fsm *HaSqliteRaftFSM) FinishTx(c context.Context, req *proto.FinishTxRequest) (*proto.FinishTxResponse, error)
- func (fsm *HaSqliteRaftFSM) InitRaft(r *raft.Raft)
- func (fsm *HaSqliteRaftFSM) Open(c context.Context, req *proto.OpenRequest) (*proto.OpenResponse, error)
- func (fsm *HaSqliteRaftFSM) Query(c context.Context, req *proto.QueryRequest) (*proto.QueryResponse, error)
- func (fsm *HaSqliteRaftFSM) Restore(r io.ReadCloser) error
- func (fsm *HaSqliteRaftFSM) Snapshot() (raft.FSMSnapshot, error)
- type HaSqliteSnapshot
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
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 ¶
func (ctx *HaSqliteContext) BeginTx(c context.Context, req *proto.BeginTxRequest) (*proto.BeginTxResponse, error)
BeginTx 开始事务执行
func (*HaSqliteContext) Exec ¶
func (ctx *HaSqliteContext) Exec(c context.Context, req *proto.ExecRequest) (*proto.ExecResponse, error)
Exec 执行数据库命令
func (*HaSqliteContext) FinishTx ¶
func (ctx *HaSqliteContext) FinishTx(c context.Context, req *proto.FinishTxRequest) (*proto.FinishTxResponse, error)
FinishTx 开始事务执行
func (*HaSqliteContext) IsLeader ¶
func (ctx *HaSqliteContext) IsLeader() bool
IsLeader 当前节点是否为 leader
func (*HaSqliteContext) Join ¶
func (ctx *HaSqliteContext) Join(c context.Context, req *proto.JoinRequest) (*proto.JoinResponse, error)
func (*HaSqliteContext) Open ¶
func (ctx *HaSqliteContext) Open(c context.Context, req *proto.OpenRequest) (*proto.OpenResponse, error)
Open 打开数据库
func (*HaSqliteContext) Ping ¶
func (ctx *HaSqliteContext) Ping(c context.Context, req *proto.PingRequest) (*proto.PingResponse, error)
Ping 验证服务连通性
func (*HaSqliteContext) Query ¶
func (ctx *HaSqliteContext) Query(c context.Context, req *proto.QueryRequest) (*proto.QueryResponse, error)
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) BeginTx ¶
func (d *HaSqliteRaftDBManager) BeginTx(c context.Context, req *proto.BeginTxRequest) (*proto.BeginTxResponse, error)
BeginTx 开始事务执行
func (*HaSqliteRaftDBManager) Exec ¶
func (d *HaSqliteRaftDBManager) Exec(c context.Context, req *proto.ExecRequest) (*proto.ExecResponse, error)
Exec 执行数据库命令
func (*HaSqliteRaftDBManager) FinishTx ¶
func (d *HaSqliteRaftDBManager) FinishTx(c context.Context, req *proto.FinishTxRequest) (*proto.FinishTxResponse, error)
FinishTx 开始事务执行
func (*HaSqliteRaftDBManager) GetDB ¶
func (d *HaSqliteRaftDBManager) GetDB(dbId int64) (*db.HaSqliteDB, bool, error)
func (*HaSqliteRaftDBManager) Open ¶
func (d *HaSqliteRaftDBManager) Open(c context.Context, req *proto.OpenRequest) (*proto.OpenResponse, error)
Open 打开数据库(不存在则创建)
func (*HaSqliteRaftDBManager) Query ¶
func (d *HaSqliteRaftDBManager) Query(c context.Context, req *proto.QueryRequest) (*proto.QueryResponse, error)
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 ¶
func (fsm *HaSqliteRaftFSM) BeginTx(c context.Context, req *proto.BeginTxRequest) (*proto.BeginTxResponse, error)
BeginTx 开始事务执行
func (*HaSqliteRaftFSM) Exec ¶
func (fsm *HaSqliteRaftFSM) Exec(c context.Context, req *proto.ExecRequest) (*proto.ExecResponse, error)
Exec 执行数据库命令
func (*HaSqliteRaftFSM) FinishTx ¶
func (fsm *HaSqliteRaftFSM) FinishTx(c context.Context, req *proto.FinishTxRequest) (*proto.FinishTxResponse, error)
FinishTx 开始事务执行
func (*HaSqliteRaftFSM) InitRaft ¶
func (fsm *HaSqliteRaftFSM) InitRaft(r *raft.Raft)
func (*HaSqliteRaftFSM) Open ¶
func (fsm *HaSqliteRaftFSM) Open(c context.Context, req *proto.OpenRequest) (*proto.OpenResponse, error)
Open 打开数据库
func (*HaSqliteRaftFSM) Query ¶
func (fsm *HaSqliteRaftFSM) Query(c context.Context, req *proto.QueryRequest) (*proto.QueryResponse, error)
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()
Click to show internal directories.
Click to hide internal directories.