Class QuorumHierarchical
java.lang.Object
org.apache.zookeeper.server.quorum.flexible.QuorumHierarchical
- All Implemented Interfaces:
QuorumVerifier
This class implements a validator for hierarchical quorums. With this
construction, zookeeper servers are split into disjoint groups, and
each server has a weight. We obtain a quorum if we get more than half
of the total weight of a group for a majority of groups.
The configuration of quorums uses two parameters: group and weight.
Groups are sets of ZooKeeper servers, and we set a group by passing
a colon-separated list of server ids. It is also necessary to assign
weights to server. Here is an example of a configuration that creates
three groups and assigns a weight of 1 to each server:
group.1=1:2:3
group.2=4:5:6
group.3=7:8:9
weight.1=1
weight.2=1
weight.3=1
weight.4=1
weight.5=1
weight.6=1
weight.7=1
weight.8=1
weight.9=1
Note that it is still necessary to define peers using the server keyword.
-
Constructor Summary
ConstructorsConstructorDescriptionQuorumHierarchical
(String filename) This constructor requires the quorum configuration to be declared in a separate file, and it takes the file as an input parameter.This constructor takes a set of properties. -
Method Summary
Modifier and TypeMethodDescriptionboolean
containsQuorum
(Set<Long> set) Verifies if a given set is a quorum.boolean
long
long
getWeight
(long id) Returns the weight of a server.int
hashCode()
void
setVersion
(long ver) toString()
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.apache.zookeeper.server.quorum.flexible.QuorumVerifier
askOracle, getNeedOracle, getOraclePath, overrideQuorumDecision, revalidateOutstandingProp, revalidateVoteset, updateNeedOracle
-
Constructor Details
-
QuorumHierarchical
This constructor requires the quorum configuration to be declared in a separate file, and it takes the file as an input parameter.- Throws:
QuorumPeerConfig.ConfigException
-
QuorumHierarchical
This constructor takes a set of properties. We use it in the unit test for this feature.- Throws:
QuorumPeerConfig.ConfigException
-
-
Method Details
-
hashCode
public int hashCode() -
equals
- Specified by:
equals
in interfaceQuorumVerifier
- Overrides:
equals
in classObject
-
getWeight
public long getWeight(long id) Returns the weight of a server.- Specified by:
getWeight
in interfaceQuorumVerifier
- Parameters:
id
-
-
getAllMembers
- Specified by:
getAllMembers
in interfaceQuorumVerifier
-
toString
- Specified by:
toString
in interfaceQuorumVerifier
- Overrides:
toString
in classObject
-
containsQuorum
Verifies if a given set is a quorum.- Specified by:
containsQuorum
in interfaceQuorumVerifier
-
getVotingMembers
- Specified by:
getVotingMembers
in interfaceQuorumVerifier
-
getObservingMembers
- Specified by:
getObservingMembers
in interfaceQuorumVerifier
-
getVersion
public long getVersion()- Specified by:
getVersion
in interfaceQuorumVerifier
-
setVersion
public void setVersion(long ver) - Specified by:
setVersion
in interfaceQuorumVerifier
-