MultiRaft implementation

766 views
Skip to first unread message

Manish R Jain

unread,
Mar 22, 2016, 1:55:54 AM3/22/16
to etcd...@googlegroups.com
Hey guys,

At DGraph: https://github.com/dgraph-io/dgraph, we're planning to use
Etcd RAFT for providing replication and high availability. Cockroach DB
guys had modified RAFT to produce MultiRaft:
https://www.cockroachlabs.com/blog/scaling-raft/

Was MultiRaft ever merged back into Etcd's Raft? We have similar
concerns about network usage; and want to batch up the heartbeats by
multiple groups per server. So, something like MultiRaft would be really
useful.

Curious about what the status of MultiRaft is, and if we can use it; or
do we need to make similar modifications to RAFT ourselves?

Cheers,
Manish

Xiang Li

unread,
Mar 22, 2016, 4:23:45 PM3/22/16
to Manish R Jain, etcd...@googlegroups.com
Hi Manish,

It was merged back. But after a few iterations, we decided to expose the raw raft node here: https://github.com/coreos/etcd/blob/master/raft/rawnode.go instead of putting the multiRaft inside the minimum raft pkg.

The reason is multiraft is usually (prove by cockroach and other guys who implemented similar thing with etcd/raft) tightly coupled with application's storage and networking for better control/optimization. Here is a detailed doc talking about why cockroach uses raw node to implement "multiRaft" inside their storage pkg: https://github.com/cockroachdb/cockroach/blob/d825150a9f59dd86ef6678a52f224ee5cb52dec9/docs/RFCS/dismantle_multiraft.md

Ben the maintainer of raft pkg and cockroach might provide more detail if needed. 

Thanks,
Xiang



--
You received this message because you are subscribed to the Google Groups "etcd-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to etcd-dev+u...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Xiang Li

unread,
Mar 22, 2016, 8:07:22 PM3/22/16
to Manish R Jain, etcd...@googlegroups.com
On Mon, Mar 21, 2016 at 10:55 PM, Manish R Jain <manis...@gmail.com> wrote:
I missed your last question. No, you do not need to change anything in etcd/raft to implement multiraft. If there is anything need to be changed, we are happy to change in etcd/raft. etcd/raft is designed to be as flexible as possible. 

Xiang Li

unread,
Apr 1, 2016, 6:05:07 PM4/1/16
to Manish R Jain, etcd...@googlegroups.com
I created an issue on github: https://github.com/coreos/etcd/issues/4932

Manish Rai Jain

unread,
Apr 1, 2016, 7:48:57 PM4/1/16
to Xiang Li, etcd...@googlegroups.com, Ashwin Ramesh
Cc ashwin 
--
Sent from iPhone 6+
Reply all
Reply to author
Forward
0 new messages