Adding tipc-discussion and tipc-dek to the thread.
-------- Forwarded Message --------
Subject: Re: TIPC/RAFT?
Date: Sat, 18 Jul 2020 12:07:18 -0400
From: Jon Maloy <jma...@redhat.com>
To: Xue, Ying <ying....@windriver.com>
Hi Ying,
I may be ranting now...
I know that blockchain technologies (Bitcoin, Ethereum etc.) also can be
used to implement consensus algorithms. Furthermore, those are
completely decentralized and very scalable, something that fits much
better into the TIPC philosophy than the leader electing algorithms of
Paxos and Raft.
It might be worth learning more about this before embarking on any major
effort to re-implement Raft.
I don't know much about blockchains yet, so I have no clue if this is at
all feasible regarding code volumes, consensus times and other
properties, but it should at least be considered before any other track
is selected.
I will try to read up on this on my side.
Regards
///jon
On 7/15/20 11:10 AM, Xue, Ying wrote:
Hi Jon,
Raft protocol is much more complex than my initial image. The
complexity mainly comes from: 1.Raft protocol itself is quite complex,
so it's not very easy to totally understand it in a very detailed way;
2. Implementing a raft consensus algorithm might not be very
difficult, but making sure its implementation's quality reaches an
industrial criteria level is very difficult. However, for a consensus
protocol, it must ensure it can work very well in any kinds of
different conditions, otherwise, some distributed values become
inconsistent.
When it comes to this implementation
(https://github.com/willemt/raft), I took a lot time to study,
validate and understand its code so far. Although I have make all test
cases contained in this implementation passed, the scenarios covered
by these test cases are quite basic particularly compared to test
cases included in etcd
(https://github.com/etcd-io/etcd/tree/master/raft). Even in its code,
it clearly comments some corner cases haven't handled yet.
In my previous plan, I wanted to take shortcuts so that I can quickly
port the implementation into Linux kernel, but it was found it's very
difficult to properly adapt it into kernel space if I couldn't totally
understand Raft protocol itself, which wasted my lots of time.
Currently I have to study the following two papers:
https://raft.github.io/raft.pdf
https://github.com/ongardie/dissertation/blob/master/stanford.pdf
While reading and understanding the papers, I am researching the code
and test cases of "etcd", which can help to have a much deeper
understanding of the protocol itself. Honestly, I still don't have a
very well understanding for the protocol. When I read paper, I felt I
had a very good understanding for some parts of the protocol, but when
I came back to research its implementations, I lost again and again.
With my understanding of the protocol becoming deeper and deeper, more
and more concerns with the quality of https://github.com/willemt/raft,
appear in my mind. In sum, I need more time to evaluate its quality
and then consider whether we can use it as a base to implement raft
protocol in TIPC stack or if it's possible for us to well implement
the protocol in kernel space within a not very long time.
Although I have to admit studying and even implementing the protocol
is a pretty challenging thing, I am still quite interested in
continuing working on this topic.
Thanks,
Ying
-----Original Message-----
From: Jon Maloy <jma...@redhat.com>
Sent: Saturday, July 11, 2020 2:29 AM
To: Xue, Ying <ying....@windriver.com>
Subject: TIPC/RAFT?
Hi Ying,
Since I haven't had any news from you for a while, I was just getting
curious.
Did you have any time to look into the RAFT implementation references
I sent you?
Do you have any thougths about this?
BR
///jon
_______________________________________________
tipc-discussion mailing list
tipc-discussion@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tipc-discussion