4 ms·
This is the third Raft implementation for us. The original was goraft, then we attempted to make our own streaming raft implementation for high throughput. Thi
by pauldix 11y ago
This is the third Raft implementation for us. The original was goraft, then we attempted to make our own streaming raft implementation for high throughput.
This time around we realized we should only put very low write throughput stuff through Raft. And we wanted to pick on that has been out for a while and running in production in many places.
So we chose the Hashicorp implementation because we know them and know that it's been in production for a while. Combined with the fact that it can be backed by BoltDB, which we like.
- eternalban 11y agoThanks, Paul. My advice to you is to (a) model in TLA+. Writeup seems fine but, as you note, distribution is non-trivial (since intuition does not sufficiently/effectively inform the mental model). (2) do not rely on monotonic nanosecs from Go runtime. Only usec level precision is guaranteed monotonic. (3) if you don't own the client you are open to byzantine failure.
- ngrilly 11y ago> do not rely on monotonic nanosecs from Go runtime. Only usec level precision is guaranteed monotonic. Interesting! Source? Any link about this?
- eternalban 11y agohttp://play.golang.org/p/Hs7gPYTCgi http://play.golang.org/p/Hs7gPYTCgi The issue is not Go (though imo they should update the doc to share the esoterica): http://stackoverflow.com/questions/4801122/how-to-stop-time-from-running-backwards-on-linux http://stackoverflow.com/questions/4801122/how-to-stop-time-...
- ngrilly 11y agoThanks for the links. They are useful. I understand now.