Class QuorumHierarchical
- java.lang.Object
-
- org.apache.zookeeper.server.quorum.flexible.QuorumHierarchical
-
- All Implemented Interfaces:
QuorumVerifier
public class QuorumHierarchical extends Object implements 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
Constructors Constructor Description QuorumHierarchical(String filename)
This constructor requires the quorum configuration to be declared in a separate file, and it takes the file as an input parameter.QuorumHierarchical(Properties qp)
This constructor takes a set of properties.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
containsQuorum(Set<Long> set)
Verifies if a given set is a quorum.boolean
equals(Object o)
Map<Long,QuorumPeer.QuorumServer>
getAllMembers()
Map<Long,QuorumPeer.QuorumServer>
getObservingMembers()
long
getVersion()
Map<Long,QuorumPeer.QuorumServer>
getVotingMembers()
long
getWeight(long id)
Returns the weight of a server.int
hashCode()
void
setVersion(long ver)
String
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 Detail
-
QuorumHierarchical
public QuorumHierarchical(String filename) throws QuorumPeerConfig.ConfigException
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
public QuorumHierarchical(Properties qp) throws QuorumPeerConfig.ConfigException
This constructor takes a set of properties. We use it in the unit test for this feature.- Throws:
QuorumPeerConfig.ConfigException
-
-
Method Detail
-
equals
public boolean equals(Object o)
- 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
public Map<Long,QuorumPeer.QuorumServer> getAllMembers()
- Specified by:
getAllMembers
in interfaceQuorumVerifier
-
toString
public String toString()
- Specified by:
toString
in interfaceQuorumVerifier
- Overrides:
toString
in classObject
-
containsQuorum
public boolean containsQuorum(Set<Long> set)
Verifies if a given set is a quorum.- Specified by:
containsQuorum
in interfaceQuorumVerifier
-
getVotingMembers
public Map<Long,QuorumPeer.QuorumServer> getVotingMembers()
- Specified by:
getVotingMembers
in interfaceQuorumVerifier
-
getObservingMembers
public Map<Long,QuorumPeer.QuorumServer> 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
-
-