abstract class TopologyAwareEnsemblePlacementPolicy extends java.lang.Object implements ITopologyAwareEnsemblePlacementPolicy<org.apache.bookkeeper.net.BookieNode>
| Modifier and Type | Class and Description |
|---|---|
(package private) static class |
TopologyAwareEnsemblePlacementPolicy.DefaultResolver |
(package private) static class |
TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator
Decorator for any existing dsn resolver.
|
protected static class |
TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints |
protected static class |
TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble
A predicate checking the rack coverage for write quorum in
RoundRobinDistributionSchedule,
which ensures that a write quorum should be covered by at least two racks. |
protected static class |
TopologyAwareEnsemblePlacementPolicy.TruePredicate |
ITopologyAwareEnsemblePlacementPolicy.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 org.apache.bookkeeper.proto.BookieAddressResolver |
bookieAddressResolver |
protected java.util.Map<org.apache.bookkeeper.net.BookieNode,WeightedRandomSelection.WeightedObject> |
bookieInfoMap |
protected org.apache.bookkeeper.stats.OpStatsLogger |
bookiesJoinedCounter |
protected org.apache.bookkeeper.stats.OpStatsLogger |
bookiesLeftCounter |
protected org.apache.bookkeeper.net.DNSToSwitchMapping |
dnsResolver |
protected java.util.Map<org.apache.bookkeeper.net.BookieId,org.apache.bookkeeper.net.BookieNode> |
historyBookies |
(package private) boolean |
isWeighted |
protected java.util.Map<org.apache.bookkeeper.net.BookieId,org.apache.bookkeeper.net.BookieNode> |
knownBookies |
(package private) static org.slf4j.Logger |
LOG |
protected com.google.common.collect.ImmutableSet<org.apache.bookkeeper.net.BookieId> |
readOnlyBookies |
static java.lang.String |
REPP_DNS_RESOLVER_CLASS |
protected java.util.concurrent.locks.ReentrantReadWriteLock |
rwLock |
protected org.apache.bookkeeper.net.NetworkTopology |
topology |
protected WeightedRandomSelection<org.apache.bookkeeper.net.BookieNode> |
weightedSelection |
| Constructor and Description |
|---|
TopologyAwareEnsemblePlacementPolicy() |
| Modifier and Type | Method and Description |
|---|---|
protected java.util.Set<org.apache.bookkeeper.net.Node> |
convertBookiesToNodes(java.util.Collection<org.apache.bookkeeper.net.BookieId> bookies) |
protected org.apache.bookkeeper.net.BookieNode |
convertBookieToNode(org.apache.bookkeeper.net.BookieId addr) |
protected org.apache.bookkeeper.net.BookieNode |
createBookieNode(org.apache.bookkeeper.net.BookieId addr) |
protected org.apache.bookkeeper.net.BookieNode |
createDummyLocalBookieNode(java.lang.String hostname) |
static int |
differBetweenBookies(java.util.List<org.apache.bookkeeper.net.BookieId> bookiesA,
java.util.List<org.apache.bookkeeper.net.BookieId> bookiesB) |
(package private) static java.util.Set<java.lang.String> |
getNetworkLocations(java.util.Set<org.apache.bookkeeper.net.Node> bookieNodes) |
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.
|
void |
onBookieRackChange(java.util.List<org.apache.bookkeeper.net.BookieId> bookieAddressList)
Handle rack change for the bookies.
|
java.util.Set<org.apache.bookkeeper.net.BookieId> |
onClusterChanged(java.util.Set<org.apache.bookkeeper.net.BookieId> writableBookies,
java.util.Set<org.apache.bookkeeper.net.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.
|
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.
|
protected java.lang.String |
resolveNetworkLocation(org.apache.bookkeeper.net.BookieId addr) |
(package private) static void |
shuffleWithMask(DistributionSchedule.WriteSet writeSet,
int mask,
int bits)
Shuffle all the entries of an array that matches a mask.
|
void |
updateBookieInfo(java.util.Map<org.apache.bookkeeper.net.BookieId,BookieInfoReader.BookieInfo> bookieInfoMap)
Send the bookie info details.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitnewEnsemble, selectFromNetworkLocation, selectFromNetworkLocation, selectFromNetworkLocationareAckedBookiesAdheringToPlacementPolicy, getStickyReadBookieIndex, initialize, isEnsembleAdheringToPlacementPolicy, newEnsemble, registerSlowBookie, replaceBookie, replaceToAdherePlacementPolicy, uninitalizestatic final org.slf4j.Logger LOG
public static final java.lang.String REPP_DNS_RESOLVER_CLASS
protected final java.util.Map<org.apache.bookkeeper.net.BookieId,org.apache.bookkeeper.net.BookieNode> knownBookies
protected final java.util.Map<org.apache.bookkeeper.net.BookieId,org.apache.bookkeeper.net.BookieNode> historyBookies
protected final java.util.concurrent.locks.ReentrantReadWriteLock rwLock
protected java.util.Map<org.apache.bookkeeper.net.BookieNode,WeightedRandomSelection.WeightedObject> bookieInfoMap
protected com.google.common.collect.ImmutableSet<org.apache.bookkeeper.net.BookieId> readOnlyBookies
boolean isWeighted
protected WeightedRandomSelection<org.apache.bookkeeper.net.BookieNode> weightedSelection
protected org.apache.bookkeeper.net.NetworkTopology topology
protected org.apache.bookkeeper.net.DNSToSwitchMapping dnsResolver
protected org.apache.bookkeeper.proto.BookieAddressResolver bookieAddressResolver
@StatsDoc(name="BOOKIES_JOINED",
help="The distribution of number of bookies joined the cluster on each network topology change")
protected org.apache.bookkeeper.stats.OpStatsLogger bookiesJoinedCounter
@StatsDoc(name="BOOKIES_LEFT",
help="The distribution of number of bookies left the cluster on each network topology change")
protected org.apache.bookkeeper.stats.OpStatsLogger bookiesLeftCounter
static java.util.Set<java.lang.String> getNetworkLocations(java.util.Set<org.apache.bookkeeper.net.Node> bookieNodes)
static void shuffleWithMask(DistributionSchedule.WriteSet writeSet, int mask, int bits)
public DistributionSchedule.WriteSet reorderReadSequence(java.util.List<org.apache.bookkeeper.net.BookieId> ensemble, BookiesHealthInfo bookiesHealthInfo, DistributionSchedule.WriteSet writeSet)
EnsemblePlacementPolicyreorderReadSequence in interface EnsemblePlacementPolicyensemble - 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 DistributionSchedule.WriteSet reorderReadLACSequence(java.util.List<org.apache.bookkeeper.net.BookieId> ensemble, BookiesHealthInfo bookiesHealthInfo, DistributionSchedule.WriteSet writeSet)
EnsemblePlacementPolicyreorderReadLACSequence in interface EnsemblePlacementPolicyensemble - 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 java.util.Set<org.apache.bookkeeper.net.BookieId> onClusterChanged(java.util.Set<org.apache.bookkeeper.net.BookieId> writableBookies,
java.util.Set<org.apache.bookkeeper.net.BookieId> readOnlyBookies)
EnsemblePlacementPolicyThe implementation should take actions when the cluster view is changed. So subsequent
EnsemblePlacementPolicy.newEnsemble(int, int, int, Map, Set) and
EnsemblePlacementPolicy.replaceBookie(int, int, int, java.util.Map, java.util.List, BookieId, java.util.Set)
can choose proper bookies.
onClusterChanged in interface EnsemblePlacementPolicywritableBookies - All the bookies in the cluster available for write/read.readOnlyBookies - All the bookies in the cluster available for readonly.public void handleBookiesThatLeft(java.util.Set<org.apache.bookkeeper.net.BookieId> leftBookies)
ITopologyAwareEnsemblePlacementPolicyhandleBookiesThatLeft in interface ITopologyAwareEnsemblePlacementPolicy<org.apache.bookkeeper.net.BookieNode>leftBookies - bookies that leftpublic void handleBookiesThatJoined(java.util.Set<org.apache.bookkeeper.net.BookieId> joinedBookies)
ITopologyAwareEnsemblePlacementPolicyhandleBookiesThatJoined in interface ITopologyAwareEnsemblePlacementPolicy<org.apache.bookkeeper.net.BookieNode>joinedBookies - bookies that joined.public void onBookieRackChange(java.util.List<org.apache.bookkeeper.net.BookieId> bookieAddressList)
ITopologyAwareEnsemblePlacementPolicyonBookieRackChange in interface ITopologyAwareEnsemblePlacementPolicy<org.apache.bookkeeper.net.BookieNode>public static int differBetweenBookies(java.util.List<org.apache.bookkeeper.net.BookieId> bookiesA,
java.util.List<org.apache.bookkeeper.net.BookieId> bookiesB)
public void updateBookieInfo(java.util.Map<org.apache.bookkeeper.net.BookieId,BookieInfoReader.BookieInfo> bookieInfoMap)
EnsemblePlacementPolicyupdateBookieInfo in interface EnsemblePlacementPolicybookieInfoMap - A map that has the bookie to BookieInfoprotected org.apache.bookkeeper.net.BookieNode createBookieNode(org.apache.bookkeeper.net.BookieId addr)
protected org.apache.bookkeeper.net.BookieNode createDummyLocalBookieNode(java.lang.String hostname)
protected java.lang.String resolveNetworkLocation(org.apache.bookkeeper.net.BookieId addr)
protected java.util.Set<org.apache.bookkeeper.net.Node> convertBookiesToNodes(java.util.Collection<org.apache.bookkeeper.net.BookieId> bookies)
protected org.apache.bookkeeper.net.BookieNode convertBookieToNode(org.apache.bookkeeper.net.BookieId addr)
Copyright © 2011–2024 The Apache Software Foundation. All rights reserved.