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> excludeBookies) |
protected org.apache.bookkeeper.net.BookieNode |
createBookieNode(org.apache.bookkeeper.net.BookieId addr) |
protected org.apache.bookkeeper.net.BookieNode |
createDummyLocalBookieNode(java.lang.String hostname) |
(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, 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
#replaceBookie(int, int, int, java.util.Map, java.util.Set,
org.apache.bookkeeper.net.BookieSocketAddress, 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 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> excludeBookies)
Copyright © 2011–2024 The Apache Software Foundation. All rights reserved.