Class QuorumHierarchical
- java.lang.Object
-
- org.apache.zookeeper.server.quorum.flexible.QuorumHierarchical
-
- All Implemented Interfaces:
QuorumVerifier
public class QuorumHierarchical extends java.lang.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(int numGroups, java.util.HashMap<java.lang.Long,java.lang.Long> serverWeight, java.util.HashMap<java.lang.Long,java.lang.Long> serverGroup)
This contructor takes the two hash maps needed to enable validating quorums.QuorumHierarchical(java.lang.String filename)
This contructor requires the quorum configuration to be declared in a separate file, and it takes the file as an input parameter.QuorumHierarchical(java.util.Properties qp)
This constructor takes a set of properties.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
containsQuorum(java.util.Set<java.lang.Long> set)
Verifies if a given set is a quorum.long
getWeight(long id)
Returns the weight of a server.
-
-
-
Constructor Detail
-
QuorumHierarchical
public QuorumHierarchical(java.lang.String filename) throws QuorumPeerConfig.ConfigException
This contructor 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(java.util.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
-
QuorumHierarchical
public QuorumHierarchical(int numGroups, java.util.HashMap<java.lang.Long,java.lang.Long> serverWeight, java.util.HashMap<java.lang.Long,java.lang.Long> serverGroup)
This contructor takes the two hash maps needed to enable validating quorums. We use it with QuorumPeerConfig. That is, we declare weights and groups in the server configuration file along with the other parameters.- Parameters:
numGroups
-serverWeight
-serverGroup
-
-
-
Method Detail
-
getWeight
public long getWeight(long id)
Returns the weight of a server.- Specified by:
getWeight
in interfaceQuorumVerifier
- Parameters:
id
-
-
containsQuorum
public boolean containsQuorum(java.util.Set<java.lang.Long> set)
Verifies if a given set is a quorum.- Specified by:
containsQuorum
in interfaceQuorumVerifier
-
-