public class RegionAwareEnsemblePlacementPolicy extends RackawareEnsemblePlacementPolicy
EnsemblePlacementPolicyTopologyAwareEnsemblePlacementPolicy.DefaultResolver, TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator, TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints, TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble, TopologyAwareEnsemblePlacementPolicy.TruePredicateITopologyAwareEnsemblePlacementPolicy.Ensemble<T extends org.apache.bookkeeper.net.Node>, ITopologyAwareEnsemblePlacementPolicy.Predicate<T extends org.apache.bookkeeper.net.Node>EnsemblePlacementPolicy.PlacementPolicyAdherence, EnsemblePlacementPolicy.PlacementResult<T>| Modifier and Type | Field and Description |
|---|---|
protected java.util.concurrent.ConcurrentMap<org.apache.bookkeeper.net.BookieId,java.lang.String> |
address2Region |
protected Feature |
disableDurabilityFeature |
protected java.lang.String |
disallowBookiePlacementInRegionFeatureName |
protected boolean |
enableValidation |
protected boolean |
enforceDurabilityInReplace |
protected FeatureProvider |
featureProvider |
(package private) static org.slf4j.Logger |
LOG |
(package private) static int |
MINIMUM_REGIONS_FOR_DURABILITY_DEFAULT |
protected int |
minRegionsForDurability |
protected java.lang.String |
myRegion |
protected java.util.Map<java.lang.String,TopologyAwareEnsemblePlacementPolicy> |
perRegionPlacement |
static java.lang.String |
REGION_AWARE_ANOMALOUS_ENSEMBLE |
(package private) static int |
REGIONID_DISTANCE_FROM_LEAVES |
(package private) static int |
REMOTE_NODE_IN_REORDER_SEQUENCE |
static java.lang.String |
REPP_DISABLE_DURABILITY_ENFORCEMENT_FEATURE |
static java.lang.String |
REPP_DISABLE_DURABILITY_FEATURE_NAME |
static java.lang.String |
REPP_DISALLOW_BOOKIE_PLACEMENT_IN_REGION_FEATURE_NAME |
static java.lang.String |
REPP_ENABLE_DURABILITY_ENFORCEMENT_IN_REPLACE |
static java.lang.String |
REPP_ENABLE_VALIDATION |
static java.lang.String |
REPP_MINIMUM_REGIONS_FOR_DURABILITY |
static java.lang.String |
REPP_REGIONS_TO_WRITE |
(package private) static java.lang.String |
UNKNOWN_REGION |
slaveenforceDurability, enforceMinNumRacksPerWriteQuorum, failedToResolveNetworkLocationCounter, ignoreLocalNodeInPlacementPolicy, LOCAL_FAIL_MASK, LOCAL_MASK, localNode, MASK_BITS, maxWeightMultiple, minNumRacksPerWriteQuorum, numWritableBookiesInDefaultRack, RACKNAME_DISTANCE_FROM_LEAVES, READ_ONLY_MASK, readReorderedCounter, REMOTE_FAIL_MASK, REMOTE_MASK, reorderReadsRandom, reorderThresholdPendingRequests, REPP_DNS_RESOLVER_CLASS, REPP_RANDOM_READ_REORDERING, SLOW_MASK, slowBookies, stabilizePeriodSeconds, statsLogger, timer, UNAVAIL_MASKbookieAddressResolver, bookieInfoMap, bookiesJoinedCounter, bookiesLeftCounter, dnsResolver, isWeighted, knownBookies, readOnlyBookies, rwLock, topology, weightedSelection| Constructor and Description |
|---|
RegionAwareEnsemblePlacementPolicy() |
| Modifier and Type | Method and Description |
|---|---|
protected java.lang.String |
getLocalRegion(org.apache.bookkeeper.net.BookieNode node) |
protected java.lang.String |
getRegion(org.apache.bookkeeper.net.BookieId addr) |
void |
handleBookiesThatJoined(java.util.Set<org.apache.bookkeeper.net.BookieId> joinedBookies)
Handle bookies that joined.
|
void |
handleBookiesThatLeft(java.util.Set<org.apache.bookkeeper.net.BookieId> leftBookies)
Handle bookies that left.
|
RegionAwareEnsemblePlacementPolicy |
initialize(ClientConfiguration conf,
java.util.Optional<org.apache.bookkeeper.net.DNSToSwitchMapping> optionalDnsResolver,
io.netty.util.HashedWheelTimer timer,
FeatureProvider featureProvider,
org.apache.bookkeeper.stats.StatsLogger statsLogger,
org.apache.bookkeeper.proto.BookieAddressResolver bookieAddressResolver)
Initialize the policy.
|
EnsemblePlacementPolicy.PlacementPolicyAdherence |
isEnsembleAdheringToPlacementPolicy(java.util.List<org.apache.bookkeeper.net.BookieId> ensembleList,
int writeQuorumSize,
int ackQuorumSize)
returns AdherenceLevel if the Ensemble is strictly/softly/fails adhering
to placement policy, like in the case of
RackawareEnsemblePlacementPolicy, bookies in the writeset are from
'minNumRacksPerWriteQuorum' number of racks.
|
EnsemblePlacementPolicy.PlacementResult<java.util.List<org.apache.bookkeeper.net.BookieId>> |
newEnsemble(int ensembleSize,
int writeQuorumSize,
int ackQuorumSize,
java.util.Map<java.lang.String,byte[]> customMetadata,
java.util.Set<org.apache.bookkeeper.net.BookieId> excludedBookies)
Choose numBookies bookies for ensemble.
|
DistributionSchedule.WriteSet |
reorderReadLACSequence(java.util.List<org.apache.bookkeeper.net.BookieId> ensemble,
BookiesHealthInfo bookiesHealthInfo,
DistributionSchedule.WriteSet writeSet)
Reorder the read last add confirmed sequence of a given write quorum writeSet.
|
DistributionSchedule.WriteSet |
reorderReadSequence(java.util.List<org.apache.bookkeeper.net.BookieId> ensemble,
BookiesHealthInfo bookiesHealthInfo,
DistributionSchedule.WriteSet writeSet)
Reorder the read sequence of a given write quorum writeSet.
|
EnsemblePlacementPolicy.PlacementResult<org.apache.bookkeeper.net.BookieId> |
replaceBookie(int ensembleSize,
int writeQuorumSize,
int ackQuorumSize,
java.util.Map<java.lang.String,byte[]> customMetadata,
java.util.List<org.apache.bookkeeper.net.BookieId> currentEnsemble,
org.apache.bookkeeper.net.BookieId bookieToReplace,
java.util.Set<org.apache.bookkeeper.net.BookieId> excludeBookies)
Choose a new bookie to replace bookieToReplace.
|
protected org.apache.bookkeeper.net.BookieNode |
replaceFromRack(org.apache.bookkeeper.net.BookieNode bookieNodeToReplace,
java.util.Set<org.apache.bookkeeper.net.Node> excludeBookies,
ITopologyAwareEnsemblePlacementPolicy.Predicate<org.apache.bookkeeper.net.BookieNode> predicate,
ITopologyAwareEnsemblePlacementPolicy.Ensemble<org.apache.bookkeeper.net.BookieNode> ensemble,
boolean enforceDurability) |
protected java.util.List<org.apache.bookkeeper.net.BookieNode> |
selectRandomFromRegions(java.util.Set<java.lang.String> availableRegions,
int numBookies,
java.util.Set<org.apache.bookkeeper.net.Node> excludeBookies,
ITopologyAwareEnsemblePlacementPolicy.Predicate<org.apache.bookkeeper.net.BookieNode> predicate,
ITopologyAwareEnsemblePlacementPolicy.Ensemble<org.apache.bookkeeper.net.BookieNode> ensemble) |
initialize, newEnsemble, onClusterChanged, selectFromNetworkLocation, selectFromNetworkLocation, selectFromNetworkLocation, uninitalizeaddDefaultRackBookiesIfMinNumRacksIsEnforced, areAckedBookiesAdheringToPlacementPolicy, getDefaultRack, newEnsembleInternal, registerSlowBookie, reorderReadSequenceWithRegion, selectRandom, selectRandomFromRack, selectRandomInternal, withDefaultRackconvertBookiesToNodes, createBookieNode, createDummyLocalBookieNode, getNetworkLocations, onBookieRackChange, resolveNetworkLocation, shuffleWithMask, updateBookieInfoclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitonBookieRackChangeareAckedBookiesAdheringToPlacementPolicy, getStickyReadBookieIndex, registerSlowBookie, updateBookieInfostatic final org.slf4j.Logger LOG
public static final java.lang.String REPP_REGIONS_TO_WRITE
public static final java.lang.String REPP_MINIMUM_REGIONS_FOR_DURABILITY
public static final java.lang.String REPP_ENABLE_DURABILITY_ENFORCEMENT_IN_REPLACE
public static final java.lang.String REPP_DISABLE_DURABILITY_FEATURE_NAME
public static final java.lang.String REPP_DISALLOW_BOOKIE_PLACEMENT_IN_REGION_FEATURE_NAME
public static final java.lang.String REPP_DISABLE_DURABILITY_ENFORCEMENT_FEATURE
public static final java.lang.String REPP_ENABLE_VALIDATION
public static final java.lang.String REGION_AWARE_ANOMALOUS_ENSEMBLE
static final int MINIMUM_REGIONS_FOR_DURABILITY_DEFAULT
static final int REGIONID_DISTANCE_FROM_LEAVES
static final java.lang.String UNKNOWN_REGION
static final int REMOTE_NODE_IN_REORDER_SEQUENCE
protected final java.util.Map<java.lang.String,TopologyAwareEnsemblePlacementPolicy> perRegionPlacement
protected final java.util.concurrent.ConcurrentMap<org.apache.bookkeeper.net.BookieId,java.lang.String> address2Region
protected FeatureProvider featureProvider
protected java.lang.String disallowBookiePlacementInRegionFeatureName
protected java.lang.String myRegion
protected int minRegionsForDurability
protected boolean enableValidation
protected boolean enforceDurabilityInReplace
protected Feature disableDurabilityFeature
protected java.lang.String getRegion(org.apache.bookkeeper.net.BookieId addr)
protected java.lang.String getLocalRegion(org.apache.bookkeeper.net.BookieNode node)
public void handleBookiesThatLeft(java.util.Set<org.apache.bookkeeper.net.BookieId> leftBookies)
ITopologyAwareEnsemblePlacementPolicyhandleBookiesThatLeft in interface ITopologyAwareEnsemblePlacementPolicy<org.apache.bookkeeper.net.BookieNode>handleBookiesThatLeft in class RackawareEnsemblePlacementPolicyleftBookies - bookies that leftpublic void handleBookiesThatJoined(java.util.Set<org.apache.bookkeeper.net.BookieId> joinedBookies)
ITopologyAwareEnsemblePlacementPolicyhandleBookiesThatJoined in interface ITopologyAwareEnsemblePlacementPolicy<org.apache.bookkeeper.net.BookieNode>handleBookiesThatJoined in class RackawareEnsemblePlacementPolicyjoinedBookies - bookies that joined.public RegionAwareEnsemblePlacementPolicy initialize(ClientConfiguration conf, java.util.Optional<org.apache.bookkeeper.net.DNSToSwitchMapping> optionalDnsResolver, io.netty.util.HashedWheelTimer timer, FeatureProvider featureProvider, org.apache.bookkeeper.stats.StatsLogger statsLogger, org.apache.bookkeeper.proto.BookieAddressResolver bookieAddressResolver)
EnsemblePlacementPolicyinitialize in interface EnsemblePlacementPolicyinitialize in class RackawareEnsemblePlacementPolicyImplconf - client configurationoptionalDnsResolver - dns resolvertimer - timerfeatureProvider - feature providerstatsLogger - stats loggerprotected java.util.List<org.apache.bookkeeper.net.BookieNode> selectRandomFromRegions(java.util.Set<java.lang.String> availableRegions,
int numBookies,
java.util.Set<org.apache.bookkeeper.net.Node> excludeBookies,
ITopologyAwareEnsemblePlacementPolicy.Predicate<org.apache.bookkeeper.net.BookieNode> predicate,
ITopologyAwareEnsemblePlacementPolicy.Ensemble<org.apache.bookkeeper.net.BookieNode> ensemble)
throws BKException.BKNotEnoughBookiesException
public EnsemblePlacementPolicy.PlacementResult<java.util.List<org.apache.bookkeeper.net.BookieId>> newEnsemble(int ensembleSize, int writeQuorumSize, int ackQuorumSize, java.util.Map<java.lang.String,byte[]> customMetadata, java.util.Set<org.apache.bookkeeper.net.BookieId> excludedBookies) throws BKException.BKNotEnoughBookiesException
EnsemblePlacementPolicyBKException.BKNotEnoughBookiesException is thrown.
The implementation should respect to the replace settings. The size of the returned bookie list
should be equal to the provide ensembleSize.
customMetadata is the same user defined data that user provides
when BookKeeper.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.
newEnsemble in interface EnsemblePlacementPolicynewEnsemble in class RackawareEnsemblePlacementPolicyensembleSize - 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 in BookKeeper.createLedger(int, int, int, BookKeeper.DigestType, byte[])excludedBookies - Bookies that should not be considered as targets.BKException.BKNotEnoughBookiesException - if not enough bookies available.public EnsemblePlacementPolicy.PlacementResult<org.apache.bookkeeper.net.BookieId> replaceBookie(int ensembleSize, int writeQuorumSize, int ackQuorumSize, java.util.Map<java.lang.String,byte[]> customMetadata, java.util.List<org.apache.bookkeeper.net.BookieId> currentEnsemble, org.apache.bookkeeper.net.BookieId bookieToReplace, java.util.Set<org.apache.bookkeeper.net.BookieId> excludeBookies) throws BKException.BKNotEnoughBookiesException
EnsemblePlacementPolicyBKException.BKNotEnoughBookiesException is thrown.
If 'enforceMinNumRacksPerWriteQuorum' config is enabled then the bookies belonging to default faultzone (rack) will be excluded while selecting bookies.
replaceBookie in interface EnsemblePlacementPolicyreplaceBookie in class RackawareEnsemblePlacementPolicyensembleSize - 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 in BookKeeper.createLedger(int, int, int, BookKeeper.DigestType, byte[])currentEnsemble - the value of currentEnsemblebookieToReplace - bookie to replaceexcludeBookies - bookies that should not be considered as candidate.BKException.BKNotEnoughBookiesExceptionprotected org.apache.bookkeeper.net.BookieNode replaceFromRack(org.apache.bookkeeper.net.BookieNode bookieNodeToReplace,
java.util.Set<org.apache.bookkeeper.net.Node> excludeBookies,
ITopologyAwareEnsemblePlacementPolicy.Predicate<org.apache.bookkeeper.net.BookieNode> predicate,
ITopologyAwareEnsemblePlacementPolicy.Ensemble<org.apache.bookkeeper.net.BookieNode> ensemble,
boolean enforceDurability)
throws BKException.BKNotEnoughBookiesException
public final DistributionSchedule.WriteSet reorderReadSequence(java.util.List<org.apache.bookkeeper.net.BookieId> ensemble, BookiesHealthInfo bookiesHealthInfo, DistributionSchedule.WriteSet writeSet)
EnsemblePlacementPolicyreorderReadSequence in interface EnsemblePlacementPolicyreorderReadSequence in class RackawareEnsemblePlacementPolicyensemble - Ensemble to read entries.bookiesHealthInfo - Health info for bookieswriteSet - Write quorum to read entries. This will be modified, rather than
allocating a new WriteSet.public final DistributionSchedule.WriteSet reorderReadLACSequence(java.util.List<org.apache.bookkeeper.net.BookieId> ensemble, BookiesHealthInfo bookiesHealthInfo, DistributionSchedule.WriteSet writeSet)
EnsemblePlacementPolicyreorderReadLACSequence in interface EnsemblePlacementPolicyreorderReadLACSequence in class RackawareEnsemblePlacementPolicyensemble - Ensemble to read entries.bookiesHealthInfo - Health info for bookieswriteSet - Write quorum to read entries. This will be modified, rather than
allocating a new WriteSet.public EnsemblePlacementPolicy.PlacementPolicyAdherence isEnsembleAdheringToPlacementPolicy(java.util.List<org.apache.bookkeeper.net.BookieId> ensembleList, int writeQuorumSize, int ackQuorumSize)
EnsemblePlacementPolicyisEnsembleAdheringToPlacementPolicy in interface EnsemblePlacementPolicyisEnsembleAdheringToPlacementPolicy in class RackawareEnsemblePlacementPolicyImplensembleList - list of BookieId of bookies in the ensemblewriteQuorumSize - writeQuorumSize of the ensembleackQuorumSize - ackQuorumSize of the ensembleCopyright © 2011–2024 The Apache Software Foundation. All rights reserved.