0

I have been studying distributed mutual exclusion algorithms based on the concept of Quorums.

Quoting: A Coterie C is defined as a set of sets, where each set g ∈ C is called a quorum.

The following properties hold for quorums in a coterie:

1) Intersection property: For every quorum g, h ∈ C, g ∩ h= ∅. For example, sets {1,2,3}, {2,5,7} and {5,7,9} cannot be quorums in a coterie because the first and third sets do not have a common element.

2) Minimality property: There should be no quorums g, h in coterie C such that g ⊇ h. For example, sets {1,2,3} and {1,3} cannot be quorums in a coterie because the first set is a superset of the second.

I would like to know that, given a set of nodes in a distributed system, how are such coteries or set of quorums formed from such nodes? What are the algorithms or techniques to do this?

UPDATE: To put the problem in other words - "Given 'N' nodes, what is the best way to form 'K' quorums such that any two of them have 'J' number of nodes in common?"

sg1
  • 477
  • 1
  • 4
  • 21

1 Answers1

0

Simple algorithms for reading or writing would be, that you have to read from every node in a quorum and write to every node in a quorum. This way you can be sure that every other party in the system will read the latest written item.

Since your title is about mutual exclusions, A peer in the system can ask every node in a quorum for a lock to a resource. Due to the 1st rule, no other peer can get the lock from the whole quorum.

As far as I know you contact in practice random nodes and use as a quorum n/2 + 1 but as you can see, you can also define more sophisticated distributions which allow you to have smaller quorums, which again improves the performance.

Update:

Examples for such quorums with 9 servers could be the following:

  • 2 quorums: servers 1-5 are one quorum and 5-9 would be another (simple majority)
  • 3 quorums: servers 1,2,3,4; 4,5,6,7; and 7,8,9,1 could be 3 different quorums
  • more quorums: servers 1,2,3; 3,4,5; 5,6,1; 6,7,3; 8,3,1; 9,3,1; could be 6 different quorums. However here you can see that server 1 and 3 are part of 4 quorums each and will need to handle much more traffic for this reason.
  • you could potentially also create quorums like 1,2; 1,3; 1,4; 1,5; 1,6; 1,7; 1,8; 1,9; But this is the same as just having server 1.
peter
  • 14,348
  • 9
  • 62
  • 96
  • I want to know how to define those "sophisticated distributions". Thanks for your response but this still doesn't solve my problem. – sg1 Mar 05 '14 at 15:05
  • I've added some examples for a set up with 9 servers, the easiest is to draw them on a paper probably, to see the quorums better and why it would work. – peter Mar 05 '14 at 16:03
  • Thanks. I understand. But do you know of any research paper / algorithm / reference where I could read about forming such quorums in a more structured way? For instance: given 'N' nodes, divide them into 'K' sets such that any two sets have 'J' number of nodes common... (and probably some more constraints) ... – sg1 Mar 05 '14 at 17:14
  • No, basically you have already the formula as you described it in your question. I think that defining a quorum is in most cases rather trivial and the complexity is to realise when connections and nodes broke to not block any new operations unnecessarily. That's why there aren't too many papers about that. – peter Mar 06 '14 at 13:47