Documentation
¶
Index ¶
- Constants
- func PersisterDaemon(per *Persister)
- func ReadContentFromFile(filepath string) ([]byte, error)
- func WriteContentToFile(vals []byte, outfile string, strategy int) error
- type Persister
- func (ps *Persister) Copy() *Persister
- func (ps *Persister) RaftStateSize() int
- func (ps *Persister) ReadRaftState() []byte
- func (ps *Persister) ReadRaftStateFromFile() []byte
- func (ps *Persister) ReadSnapshot() []byte
- func (ps *Persister) ReadSnapshotFromFile() []byte
- func (ps *Persister) SaveRaftState(state []byte)
- func (ps *Persister) SaveSnapshot(snapshot []byte)
- func (ps *Persister) SaveStateAndSnapshot(state []byte, snapshot []byte)
- func (ps *Persister) SnapshotSize() int
Constants ¶
View Source
const ( Always = iota // 每条操作都进行刷盘,这样看来就不需要守护进程了 Everysec // 每秒进行一次刷盘,把raftstate和snapshot分别存到不同的文件中 No // 不主动刷盘 )
模仿redis AOF的命名,其实总体来看更像是RDB
Variables ¶
This section is empty.
Functions ¶
func PersisterDaemon ¶
func PersisterDaemon(per *Persister)
* @brief: 负责按照策略进行持久化,其实这个守护协程值执行everysec策略
func ReadContentFromFile ¶
* @brief: 从文件中读出数据 * @return: 返回文件的[]byte和错误类型 * @notes: 使用这个函数的时候必须先判断err,再使用[]byte,被调用于服务器启动时,先读取两个文件,放到persister,然后传递给Raft,启动时就会自动读取了
func WriteContentToFile ¶
- @brief: 向文件写入数据
- @return: 返回错误类型
- @notes: 暂定给出存盘策略,遵循所选择策略刷入磁盘,一个守护协程负责按照策略刷入磁盘;no和everysec都会进入,everysec会刷盘.
TODO 目前需要json中选择持久化策略和存储的文件名, 记得查一下操作系统对于文件和文件夹的名称限制
需要在raft开始时跑一个守护协程,负责周期刷盘 并在服务器解析出文件名的时候进行读取,把数据传给persist,persist传给Raft
Types ¶
type Persister ¶
type Persister struct { // 持久化文件名取决于用户给予了用户很高的自由度,同时方便了测试 SnapshotFileName string // 快照的持久化文件名 RaftstateFileName string // raft状态的持久化名 PersistenceStrategy int // 对应着三条策略 // contains filtered or unexported fields }
func MakePersister ¶
func MakePersister() *Persister
func (*Persister) RaftStateSize ¶
func (*Persister) ReadRaftState ¶
func (*Persister) ReadRaftStateFromFile ¶
* @brief: 从raftstate.hdb中读取RaftState * @return: 返回文件内容的[]byte
func (*Persister) ReadSnapshot ¶
func (*Persister) ReadSnapshotFromFile ¶
* @brief: 根据SnapshotFileName读取快照文件
func (*Persister) SaveRaftState ¶
func (*Persister) SaveSnapshot ¶
func (*Persister) SaveStateAndSnapshot ¶
Save both Raft state and K/V snapshot as a single atomic action, to help avoid them getting out of sync.
func (*Persister) SnapshotSize ¶
Click to show internal directories.
Click to hide internal directories.