Class ZoneawareEnsemblePlacementPolicy
- All Implemented Interfaces:
EnsemblePlacementPolicy,ITopologyAwareEnsemblePlacementPolicy<BookieNode>
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.bookkeeper.client.ZoneawareEnsemblePlacementPolicyImpl
ZoneawareEnsemblePlacementPolicyImpl.ZoneAwareNodeLocationNested classes/interfaces inherited from class org.apache.bookkeeper.client.TopologyAwareEnsemblePlacementPolicy
TopologyAwareEnsemblePlacementPolicy.DefaultResolver, TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator, TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints, TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble, TopologyAwareEnsemblePlacementPolicy.TruePredicateNested classes/interfaces inherited from interface org.apache.bookkeeper.client.EnsemblePlacementPolicy
EnsemblePlacementPolicy.PlacementPolicyAdherence, EnsemblePlacementPolicy.PlacementResult<T>Nested classes/interfaces inherited from interface org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy
ITopologyAwareEnsemblePlacementPolicy.Ensemble<T extends Node>, ITopologyAwareEnsemblePlacementPolicy.Predicate<T extends Node> -
Field Summary
FieldsFields inherited from class org.apache.bookkeeper.client.ZoneawareEnsemblePlacementPolicyImpl
address2NodePlacement, desiredNumZonesPerWriteQuorum, enforceStrictZoneawarePlacement, failedToResolveNetworkLocationCounter, LOG, maxWeightMultiple, minNumZonesPerWriteQuorum, myNode, myZone, numWritableBookiesInDefaultFaultDomain, reorderReadsRandom, reorderThresholdPendingRequests, slowBookies, stabilizePeriodSeconds, statsLogger, timer, UNKNOWN_ZONE, unresolvedNodeLocationFields inherited from class org.apache.bookkeeper.client.TopologyAwareEnsemblePlacementPolicy
bookieAddressResolver, bookieInfoMap, bookiesJoinedCounter, bookiesLeftCounter, dnsResolver, historyBookies, isWeighted, knownBookies, readOnlyBookies, REPP_DNS_RESOLVER_CLASS, rwLock, topology, weightedSelection -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidhandleBookiesThatJoined(Set<BookieId> joinedBookies) Handle bookies that joined.voidhandleBookiesThatLeft(Set<BookieId> leftBookies) Handle bookies that left.initialize(ClientConfiguration conf, Optional<DNSToSwitchMapping> optionalDnsResolver, io.netty.util.HashedWheelTimer timer, FeatureProvider featureProvider, StatsLogger statsLogger, BookieAddressResolver bookieAddressResolver) Initialize the policy.newEnsemble(int ensembleSize, int writeQuorumSize, int ackQuorumSize, Map<String, byte[]> customMetadata, Set<BookieId> excludeBookies) Choose numBookies bookies for ensemble.onClusterChanged(Set<BookieId> writableBookies, Set<BookieId> readOnlyBookies) A consistent view of the cluster (what bookies are available as writable, what bookies are available as readonly) is updated when any changes happen in the cluster.replaceBookie(int ensembleSize, int writeQuorumSize, int ackQuorumSize, Map<String, byte[]> customMetadata, List<BookieId> currentEnsemble, BookieId bookieToReplace, Set<BookieId> excludeBookies) Choose a new bookie to replace bookieToReplace.voidUninitialize the policy.Methods inherited from class org.apache.bookkeeper.client.ZoneawareEnsemblePlacementPolicyImpl
addDefaultFaultDomainBookies, areAckedBookiesAdheringToPlacementPolicy, getDefaultFaultDomain, getZoneAwareNodeLocation, getZoneAwareNodeLocation, isEnsembleAdheringToPlacementPolicy, newEnsemble, registerSlowBookie, reorderReadLACSequence, reorderReadSequence, selectFromNetworkLocation, selectFromNetworkLocation, selectFromNetworkLocation, withDefaultFaultDomainMethods inherited from class org.apache.bookkeeper.client.TopologyAwareEnsemblePlacementPolicy
convertBookiesToNodes, convertBookieToNode, createBookieNode, createDummyLocalBookieNode, differBetweenBookies, getDefaultRack, getNetworkLocations, onBookieRackChange, resolveNetworkLocation, shuffleWithMask, updateBookieInfoMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.apache.bookkeeper.client.EnsemblePlacementPolicy
areAckedBookiesAdheringToPlacementPolicy, getStickyReadBookieIndex, isEnsembleAdheringToPlacementPolicy, registerSlowBookie, reorderReadLACSequence, reorderReadSequence, replaceToAdherePlacementPolicy, updateBookieInfoMethods inherited from interface org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy
newEnsemble, onBookieRackChange, selectFromNetworkLocation, selectFromNetworkLocation, selectFromNetworkLocation
-
Field Details
-
slave
-
-
Constructor Details
-
ZoneawareEnsemblePlacementPolicy
public ZoneawareEnsemblePlacementPolicy()
-
-
Method Details
-
initialize
public EnsemblePlacementPolicy initialize(ClientConfiguration conf, Optional<DNSToSwitchMapping> optionalDnsResolver, io.netty.util.HashedWheelTimer timer, FeatureProvider featureProvider, StatsLogger statsLogger, BookieAddressResolver bookieAddressResolver) Description copied from interface:EnsemblePlacementPolicyInitialize the policy.- Specified by:
initializein interfaceEnsemblePlacementPolicy- Overrides:
initializein classZoneawareEnsemblePlacementPolicyImpl- Parameters:
conf- client configurationoptionalDnsResolver- dns resolvertimer- timerfeatureProvider- feature providerstatsLogger- stats logger
-
uninitalize
public void uninitalize()Description copied from interface:EnsemblePlacementPolicyUninitialize the policy.- Specified by:
uninitalizein interfaceEnsemblePlacementPolicy- Overrides:
uninitalizein classZoneawareEnsemblePlacementPolicyImpl
-
onClusterChanged
Description copied from interface:EnsemblePlacementPolicyA consistent view of the cluster (what bookies are available as writable, what bookies are available as readonly) is updated when any changes happen in the cluster.The implementation should take actions when the cluster view is changed. So subsequent
EnsemblePlacementPolicy.newEnsemble(int, int, int, Map, Set)andEnsemblePlacementPolicy.replaceBookie(int, int, int, java.util.Map, java.util.List, BookieId, java.util.Set)can choose proper bookies.- Specified by:
onClusterChangedin interfaceEnsemblePlacementPolicy- Overrides:
onClusterChangedin classTopologyAwareEnsemblePlacementPolicy- Parameters:
writableBookies- All the bookies in the cluster available for write/read.readOnlyBookies- All the bookies in the cluster available for readonly.- Returns:
- the dead bookies during this cluster change.
-
newEnsemble
public EnsemblePlacementPolicy.PlacementResult<List<BookieId>> newEnsemble(int ensembleSize, int writeQuorumSize, int ackQuorumSize, Map<String, byte[]> customMetadata, Set<BookieId> excludeBookies) throws BKException.BKNotEnoughBookiesExceptionDescription copied from interface:EnsemblePlacementPolicyChoose numBookies bookies for ensemble. If the count is more than the number of available nodes,BKException.BKNotEnoughBookiesExceptionis thrown.The implementation should respect to the replace settings. The size of the returned bookie list should be equal to the provide
ensembleSize.customMetadatais the same user defined data that user provides whenBookKeeper.createLedger(int, int, int, BookKeeper.DigestType, byte[], Map).If 'enforceMinNumRacksPerWriteQuorum' config is enabled then the bookies belonging to default faultzone (rack) will be excluded while selecting bookies.
- Specified by:
newEnsemblein interfaceEnsemblePlacementPolicy- Overrides:
newEnsemblein classZoneawareEnsemblePlacementPolicyImpl- Parameters:
ensembleSize- Ensemble SizewriteQuorumSize- Write Quorum SizeackQuorumSize- the value of ackQuorumSize (added since 4.5)customMetadata- the value of customMetadata. it is the same user defined metadata that user provides inBookKeeper.createLedger(int, int, int, BookKeeper.DigestType, byte[])excludeBookies- Bookies that should not be considered as targets.- Returns:
- a placement result containing list of bookie addresses for the ensemble.
- Throws:
BKException.BKNotEnoughBookiesException- if not enough bookies available.
-
replaceBookie
public EnsemblePlacementPolicy.PlacementResult<BookieId> replaceBookie(int ensembleSize, int writeQuorumSize, int ackQuorumSize, Map<String, byte[]> customMetadata, List<BookieId> currentEnsemble, BookieId bookieToReplace, Set<BookieId> excludeBookies) throws BKException.BKNotEnoughBookiesExceptionDescription copied from interface:EnsemblePlacementPolicyChoose a new bookie to replace bookieToReplace. If no bookie available in the cluster,BKException.BKNotEnoughBookiesExceptionis thrown.If 'enforceMinNumRacksPerWriteQuorum' config is enabled then the bookies belonging to default faultzone (rack) will be excluded while selecting bookies.
- Specified by:
replaceBookiein interfaceEnsemblePlacementPolicy- Overrides:
replaceBookiein classZoneawareEnsemblePlacementPolicyImpl- Parameters:
ensembleSize- the value of ensembleSizewriteQuorumSize- the value of writeQuorumSizeackQuorumSize- the value of ackQuorumSize (added since 4.5)customMetadata- the value of customMetadata. it is the same user defined metadata that user provides inBookKeeper.createLedger(int, int, int, BookKeeper.DigestType, byte[])currentEnsemble- the value of currentEnsemblebookieToReplace- bookie to replaceexcludeBookies- bookies that should not be considered as candidate.- Returns:
- a placement result containing the new bookie address.
- Throws:
BKException.BKNotEnoughBookiesException
-
handleBookiesThatLeft
Description copied from interface:ITopologyAwareEnsemblePlacementPolicyHandle bookies that left.- Specified by:
handleBookiesThatLeftin interfaceITopologyAwareEnsemblePlacementPolicy<BookieNode>- Overrides:
handleBookiesThatLeftin classTopologyAwareEnsemblePlacementPolicy- Parameters:
leftBookies- bookies that left
-
handleBookiesThatJoined
Description copied from interface:ITopologyAwareEnsemblePlacementPolicyHandle bookies that joined.- Specified by:
handleBookiesThatJoinedin interfaceITopologyAwareEnsemblePlacementPolicy<BookieNode>- Overrides:
handleBookiesThatJoinedin classTopologyAwareEnsemblePlacementPolicy- Parameters:
joinedBookies- bookies that joined.
-