Hibernating Rhinos Ltd
Oren Eini l CEO l Mobile: + 972-52-548-6969
Office: +972-4-622-7811 l Fax: +972-153-4-622-7811
--
You received this message because you are subscribed to the Google Groups "raft-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to raft-dev+u...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
It's not easy to answer to such a question, but we can imagine a case of use like a shop or a restaurant, so at most 100 hundred nodes with frequently departure and joining.
You received this message because you are subscribed to a topic in the Google Groups "raft-dev" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/raft-dev/8qJLpf-xfqk/unsubscribe.
To unsubscribe from this group and all its topics, send an email to raft-dev+u...@googlegroups.com.
Yeah I know, but I know also that usually consensus means distributed which means cloud...and in cloud clusters we have thousands of node! Maybe the problem that you're talking about is the high joining/departure rate? Btw I cannot go to much in detail, but as I told initially, until now our goal is to find a good leader election system and a replication system. We want to create a cloud cluster formed by mobile devices.
Raft was designed for a configuration that change sometimes,for example if a server or if we want to add new nodes, so something like once per day. In our case we're talking once every 10 seconds. Obviously how good Raft can handle this situation is implementation-dependent, but what do you think about this problem?
Since Android is designed to run Java (and other languages like C or C++, but with more problems) which implementation in this language do you suggest me for such a case?
Still, it feels like there may be some better alternatives to consensus, but that depends on your consistency requirements.\
Thanks for your answer, it was very detailed, helpful and it confirmed some of my doubts (like "what happens if one node leaves the network forever"?).
I still don't know if consistency is a mandatory point, since there are many possible interesting case of use for each kind of consistency, but could you please refer me some document/book/article where different kind of consistency (with relative application of use and algorithm that implement them) are described? For now, the only algorithms that I know for are Paxos, Raft (for strong consistency) and Dynamo (which is not an algorithm, but a system, for weak consistency). I'm asking this since I've heard of CRDT or distributed applications for consistent hashing.
Again, thanks so much for all your help!
Best regards,
Luca Lovagnini
You received this message because you are subscribed to a topic in the Google Groups "raft-dev" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/raft-dev/8qJLpf-xfqk/unsubscribe.
To unsubscribe from this group and all its topics, send an email to raft-dev+u...@googlegroups.com.
Jordan, you helped me already when I tried to implement a Raft version written in Java for my project school and now you helped me so much with this answer. What can I say? Thanks so much! I'll update this post for eventual further questions.
Best Regards,Luca Lovagnini
Dynamo was what I was thinking about when I mentioned consistent hashing. It uses consistent hashing to map partitions to nodes IIRC (haven't studied it extensively). It's really designed for scalability, but the same concepts (consistent hashing) can be applied without partitions to achieve high availability. Of course, in terms of fault tolerance the same is true of this algorithm as is true of having a portion of your cluster participate in the Raft algorithm. If you're mapping keys to partitions, and each partition is hashed to a primary and n replicas, the simultaneous failure (disconnection) of those n replicas will result in the loss of state. IIRC the Dynamo paper mentions they had an administrator intervene to rebalance the cluster when a node crashed forever, but this process can also be done automatically as well. I think Hazelcast may do something like that.But you can also just implement a gossip protocol with some form of conflict resolution. Gossip protocols are comparatively easy to implement, and depending on your requirements conflict resolution can be easy or may be difficult. For example, a gossip protocol with vector clocks for partial ordering of updates can be fairly easy to implement and result in a highly available system. The simplest form of conflict resolution would be to simply write updates with timestamps and use a last-write-wins policy. In that case, the gossip protocol would simply share the latest update/timestamp tuple and the node receiving it would choose the greatest timestamp. But there are all sorts of issues with using timestamps in distributed systems. Lamport clocks or vector clocks would do effectively the same thing, but with a mechanism that doesn't require clock synchronization (which I assume you can't rely on anyways).This Quora answer covers a lot of these topics and might give you some ideas: https://www.quora.com/What-are-the-seminal-papers-in-distributed-systems-WhyLamport's paper "Time, Clocks and Ordering of Events in a Distributed System" is one of the foundational papers in distributed systems, is easy to understand, and provides the foundation for vector clocks. Aside from that, perhaps the reading list can help you explore.Kyle Kingsbury's blog post on consistency models is a great explanation of some of the most common strong consistency models, but weak consistency models don't seem to be covered:
Thanks for your answer, it was very detailed, helpful and it confirmed some of my doubts (like "what happens if one node leaves the network forever"?).
I still don't know if consistency is a mandatory point, since there are many possible interesting case of use for each kind of consistency, but could you please refer me some document/book/article where different kind of consistency (with relative application of use and algorithm that implement them) are described? For now, the only algorithms that I know for are Paxos, Raft (for strong consistency) and Dynamo (which is not an algorithm, but a system, for weak consistency). I'm asking this since I've heard of CRDT or distributed applications for consistent hashing.
Again, thanks so much for all your help!
Best regards,
Luca Lovagnini
To unsubscribe from this group and stop receiving emails from it, send an email to raft...@googlegroups.com.
--
You received this message because you are subscribed to a topic in the Google Groups "raft-dev" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/raft-dev/8qJLpf-xfqk/unsubscribe.
To unsubscribe from this group and all its topics, send an email to raft...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "raft-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to raft...@googlegroups.com.
--
You received this message because you are subscribed to a topic in the Google Groups "raft-dev" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/raft-dev/8qJLpf-xfqk/unsubscribe.
To unsubscribe from this group and all its topics, send an email to raft...@googlegroups.com.