public class LoadManagerShared extends Object
| Modifier and Type | Class and Description |
|---|---|
static interface |
LoadManagerShared.BrokerTopicLoadingPredicate |
| Modifier and Type | Field and Description |
|---|---|
static long |
LOAD_REPORT_UPDATE_MIMIMUM_INTERVAL |
static org.slf4j.Logger |
log |
static int |
MIBI |
| Modifier and Type | Method and Description |
|---|---|
static void |
applyNamespacePolicies(org.apache.pulsar.common.naming.ServiceUnitId serviceUnit,
SimpleResourceAllocationPolicies policies,
Set<String> brokerCandidateCache,
Set<String> availableBrokers,
LoadManagerShared.BrokerTopicLoadingPredicate brokerTopicLoadingPredicate) |
static void |
fillNamespaceToBundlesMap(Set<String> bundles,
org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap<String,org.apache.pulsar.common.util.collections.ConcurrentOpenHashSet<String>> target)
Using the given bundles, populate the namespace to bundle range map.
|
static void |
filterAntiAffinityGroupOwnedBrokers(PulsarService pulsar,
String assignedBundleName,
Set<String> candidates,
org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap<String,org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap<String,org.apache.pulsar.common.util.collections.ConcurrentOpenHashSet<String>>> brokerToNamespaceToBundleRange,
Map<String,String> brokerToDomainMap)
It tries to filter out brokers which own namespace with same anti-affinity-group as given namespace.
|
static void |
filterBrokersWithLargeTopicCount(Set<String> brokerCandidateCache,
LoadData loadData,
int loadBalancerBrokerMaxTopics)
It filters out brokers which owns topic higher than configured threshold at
ServiceConfiguration.loadBalancerBrokerMaxTopics. |
static CompletableFuture<Map<String,Integer>> |
getAntiAffinityNamespaceOwnedBrokers(PulsarService pulsar,
String namespaceName,
org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap<String,org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap<String,org.apache.pulsar.common.util.collections.ConcurrentOpenHashSet<String>>> brokerToNamespaceToBundleRange)
It returns map of broker and count of namespace that are belong to the same anti-affinity group as given
|
static String |
getBundleRangeFromBundleName(String bundleName) |
static String |
getNamespaceNameFromBundleName(String bundleName) |
static org.apache.pulsar.policies.data.loadbalancer.SystemResourceUsage |
getSystemResourceUsage(BrokerHostUsage brokerHostUsage) |
static boolean |
isLoadSheddingEnabled(PulsarService pulsar)
If load balancing is enabled, load shedding is enabled by default unless forced off by dynamic configuration
|
static void |
removeMostServicingBrokersForNamespace(String assignedBundleName,
Set<String> candidates,
org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap<String,org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap<String,org.apache.pulsar.common.util.collections.ConcurrentOpenHashSet<String>>> brokerToNamespaceToBundleRange)
Removes the brokers which have more bundles assigned to them in the same namespace as the incoming bundle than at
least one other available broker from consideration.
|
static boolean |
shouldAntiAffinityNamespaceUnload(String namespace,
String bundle,
String currentBroker,
PulsarService pulsar,
org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap<String,org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap<String,org.apache.pulsar.common.util.collections.ConcurrentOpenHashSet<String>>> brokerToNamespaceToBundleRange,
Set<String> candidateBrokers)
It checks if given anti-affinity namespace should be unloaded by broker due to load-shedding.
|
public static final org.slf4j.Logger log
public static final int MIBI
public static final long LOAD_REPORT_UPDATE_MIMIMUM_INTERVAL
public static void applyNamespacePolicies(org.apache.pulsar.common.naming.ServiceUnitId serviceUnit,
SimpleResourceAllocationPolicies policies,
Set<String> brokerCandidateCache,
Set<String> availableBrokers,
LoadManagerShared.BrokerTopicLoadingPredicate brokerTopicLoadingPredicate)
public static void fillNamespaceToBundlesMap(Set<String> bundles, org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap<String,org.apache.pulsar.common.util.collections.ConcurrentOpenHashSet<String>> target)
bundles - Bundles with which to populate.target - Map to fill.public static String getNamespaceNameFromBundleName(String bundleName)
public static org.apache.pulsar.policies.data.loadbalancer.SystemResourceUsage getSystemResourceUsage(BrokerHostUsage brokerHostUsage) throws IOException
IOExceptionpublic static boolean isLoadSheddingEnabled(PulsarService pulsar)
public static void removeMostServicingBrokersForNamespace(String assignedBundleName, Set<String> candidates, org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap<String,org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap<String,org.apache.pulsar.common.util.collections.ConcurrentOpenHashSet<String>>> brokerToNamespaceToBundleRange)
assignedBundleName - Name of bundle to be assigned.candidates - BrokersBase available for placement.brokerToNamespaceToBundleRange - Map from brokers to namespaces to bundle ranges.public static void filterAntiAffinityGroupOwnedBrokers(PulsarService pulsar, String assignedBundleName, Set<String> candidates, org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap<String,org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap<String,org.apache.pulsar.common.util.collections.ConcurrentOpenHashSet<String>>> brokerToNamespaceToBundleRange, Map<String,String> brokerToDomainMap)
Before: Domain-count BrokersBase-count ____________ ____________ d1-3 b1-2,b2-1 d2-3 b3-2,b4-1 d3-4 b5-2,b6-2 After filtering: "candidates" brokers Domain-count BrokersBase-count ____________ ____________ d1-3 b2-1 d2-3 b4-1 "candidate" broker to own anti-affinity-namespace = b2 or b4
pulsar - assignedBundleName - candidates - brokerToNamespaceToBundleRange - public static CompletableFuture<Map<String,Integer>> getAntiAffinityNamespaceOwnedBrokers(PulsarService pulsar, String namespaceName, org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap<String,org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap<String,org.apache.pulsar.common.util.collections.ConcurrentOpenHashSet<String>>> brokerToNamespaceToBundleRange)
pulsar - namespaceName - brokerToNamespaceToBundleRange - public static boolean shouldAntiAffinityNamespaceUnload(String namespace, String bundle, String currentBroker, PulsarService pulsar, org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap<String,org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap<String,org.apache.pulsar.common.util.collections.ConcurrentOpenHashSet<String>>> brokerToNamespaceToBundleRange, Set<String> candidateBrokers) throws Exception
namespace - bundle - currentBroker - pulsar - brokerToNamespaceToBundleRange - candidateBrokers - Exceptionpublic static void filterBrokersWithLargeTopicCount(Set<String> brokerCandidateCache, LoadData loadData, int loadBalancerBrokerMaxTopics)
ServiceConfiguration.loadBalancerBrokerMaxTopics. brokerCandidateCache - loadData - loadBalancerBrokerMaxTopics - Copyright © 2017–2021 Apache Software Foundation. All rights reserved.