Browse Source

raft: add doc for storage

Xiang Li 11 years ago
parent
commit
2dbdf87f86
1 changed files with 5 additions and 3 deletions
  1. 5 3
      raft/doc.go

+ 5 - 3
raft/doc.go

@@ -19,8 +19,8 @@ Package raft provides an implementation of the raft consensus algorithm.
 
 
 The primary object in raft is a Node. You either start a Node from scratch
 The primary object in raft is a Node. You either start a Node from scratch
 using raft.StartNode or start a Node from some initial state using raft.RestartNode.
 using raft.StartNode or start a Node from some initial state using raft.RestartNode.
-
-	n := raft.StartNode(0x01, []int64{0x02, 0x03}, 3, 1)
+	storage := raft.NewMemoryStorage()
+	n := raft.StartNode(0x01, []int64{0x02, 0x03}, 3, 1, storage)
 
 
 Now that you are holding onto a Node you have a few responsibilities:
 Now that you are holding onto a Node you have a few responsibilities:
 
 
@@ -37,6 +37,8 @@ channel returned by n.Ready(). It is important that the user persist any
 entries that require stable storage before sending messages to other peers to
 entries that require stable storage before sending messages to other peers to
 ensure fault-tolerance.
 ensure fault-tolerance.
 
 
+An example MemoryStorage is provided in the raft package.
+
 And finally you need to service timeouts with Tick(). Raft has two important
 And finally you need to service timeouts with Tick(). Raft has two important
 timeouts: heartbeat and the election timeout. However, internally to the raft
 timeouts: heartbeat and the election timeout. However, internally to the raft
 package time is represented by an abstract "tick". The user is responsible for
 package time is represented by an abstract "tick". The user is responsible for
@@ -50,7 +52,7 @@ The total state machine handling loop will look something like this:
 		case <-s.Ticker:
 		case <-s.Ticker:
 			n.Tick()
 			n.Tick()
 		case rd := <-s.Node.Ready():
 		case rd := <-s.Node.Ready():
-			saveToStable(rd.State, rd.Entries)
+			saveToStorage(rd.State, rd.Entries)
 			send(rd.Messages)
 			send(rd.Messages)
 			process(rd.CommittedEntries)
 			process(rd.CommittedEntries)
 			s.Node.Advance()
 			s.Node.Advance()