Class ResourceGroup
- java.lang.Object
-
- org.apache.pulsar.broker.resourcegroup.ResourceGroup
-
public class ResourceGroup extends java.lang.ObjectThe resource group (RG) data structure. One of these is created internally for every resource group configured. The RG name is considered a key, and must be unique. Being the key, the name can't be modified after the RG is created. Tenants and Namespaces directly reference RGs. The usage is "vertical": i.e., a tenant or namespace references the same RG across all of the monitoring classes it uses (Publish/Dispatch/...), instead of referencing one RG for publish, another one for dispatch, etc.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classResourceGroup.BytesAndMessagesCountConvenience class for bytes and messages counts, which are used together in a lot of the following code.protected static classResourceGroup.PerBrokerUsageStatsprotected static classResourceGroup.PerMonitoringClassFieldsstatic classResourceGroup.ResourceGroupMonitoringClassUsage "sense" for resource groups: publish and dispatch for now; may be more later (e.g., storage-monitoring) ToDo: "class" is vague; is there a better term to call this?static classResourceGroup.ResourceGroupRefTypesThe entities that might reference RGs are tenants, namespaces (and maybe topics, later).
-
Field Summary
Fields Modifier and Type Field Description ResourceGroup.PerMonitoringClassFields[]monitoringClassFieldsjava.lang.StringresourceGroupNameprotected ResourceGroupPublishLimiterresourceGroupPublishLimiter
-
Constructor Summary
Constructors Modifier Constructor Description ResourceGroup(ResourceGroup other)protectedResourceGroup(ResourceGroupService rgs, java.lang.String name, org.apache.pulsar.common.policies.data.ResourceGroup rgConfig)protectedResourceGroup(ResourceGroupService rgs, java.lang.String rgName, org.apache.pulsar.common.policies.data.ResourceGroup rgConfig, ResourceUsagePublisher rgPublisher, ResourceUsageConsumer rgConsumer)
-
Method Summary
-
-
-
Field Detail
-
resourceGroupName
public final java.lang.String resourceGroupName
-
monitoringClassFields
public ResourceGroup.PerMonitoringClassFields[] monitoringClassFields
-
resourceGroupPublishLimiter
protected ResourceGroupPublishLimiter resourceGroupPublishLimiter
-
-
Constructor Detail
-
ResourceGroup
protected ResourceGroup(ResourceGroupService rgs, java.lang.String name, org.apache.pulsar.common.policies.data.ResourceGroup rgConfig)
-
ResourceGroup
protected ResourceGroup(ResourceGroupService rgs, java.lang.String rgName, org.apache.pulsar.common.policies.data.ResourceGroup rgConfig, ResourceUsagePublisher rgPublisher, ResourceUsageConsumer rgConsumer)
-
ResourceGroup
public ResourceGroup(ResourceGroup other)
-
-
Method Detail
-
updateResourceGroup
protected void updateResourceGroup(org.apache.pulsar.common.policies.data.ResourceGroup rgConfig)
-
getResourceGroupNumOfNSRefs
protected long getResourceGroupNumOfNSRefs()
-
getResourceGroupNumOfTenantRefs
protected long getResourceGroupNumOfTenantRefs()
-
registerUsage
protected ResourceGroupService.ResourceGroupOpStatus registerUsage(java.lang.String name, ResourceGroup.ResourceGroupRefTypes refType, boolean ref, ResourceUsageTransportManager transportManager)
-
getID
public java.lang.String getID()
-
rgFillResourceUsage
public void rgFillResourceUsage(ResourceUsage resourceUsage)
-
rgResourceUsageListener
public void rgResourceUsageListener(java.lang.String broker, ResourceUsage resourceUsage)
-
getConfLimits
protected ResourceGroup.BytesAndMessagesCount getConfLimits(ResourceGroup.ResourceGroupMonitoringClass monClass) throws org.apache.pulsar.client.admin.PulsarAdminException
- Throws:
org.apache.pulsar.client.admin.PulsarAdminException
-
incrementLocalUsageStats
protected void incrementLocalUsageStats(ResourceGroup.ResourceGroupMonitoringClass monClass, ResourceGroup.BytesAndMessagesCount stats) throws org.apache.pulsar.client.admin.PulsarAdminException
- Throws:
org.apache.pulsar.client.admin.PulsarAdminException
-
getLocalUsageStats
protected ResourceGroup.BytesAndMessagesCount getLocalUsageStats(ResourceGroup.ResourceGroupMonitoringClass monClass) throws org.apache.pulsar.client.admin.PulsarAdminException
- Throws:
org.apache.pulsar.client.admin.PulsarAdminException
-
getLocalUsageStatsCumulative
protected ResourceGroup.BytesAndMessagesCount getLocalUsageStatsCumulative(ResourceGroup.ResourceGroupMonitoringClass monClass) throws org.apache.pulsar.client.admin.PulsarAdminException
- Throws:
org.apache.pulsar.client.admin.PulsarAdminException
-
getLocalUsageStatsFromBrokerReports
protected ResourceGroup.BytesAndMessagesCount getLocalUsageStatsFromBrokerReports(ResourceGroup.ResourceGroupMonitoringClass monClass) throws org.apache.pulsar.client.admin.PulsarAdminException
- Throws:
org.apache.pulsar.client.admin.PulsarAdminException
-
getGlobalUsageStats
protected ResourceGroup.BytesAndMessagesCount getGlobalUsageStats(ResourceGroup.ResourceGroupMonitoringClass monClass) throws org.apache.pulsar.client.admin.PulsarAdminException
- Throws:
org.apache.pulsar.client.admin.PulsarAdminException
-
updateLocalQuota
protected ResourceGroup.BytesAndMessagesCount updateLocalQuota(ResourceGroup.ResourceGroupMonitoringClass monClass, ResourceGroup.BytesAndMessagesCount newQuota) throws org.apache.pulsar.client.admin.PulsarAdminException
- Throws:
org.apache.pulsar.client.admin.PulsarAdminException
-
getRgPublishRateLimiterValues
protected ResourceGroup.BytesAndMessagesCount getRgPublishRateLimiterValues()
-
getRgRemoteUsageByteCount
protected static double getRgRemoteUsageByteCount(java.lang.String rgName, java.lang.String monClassName, java.lang.String brokerName)
-
getRgRemoteUsageMessageCount
protected static double getRgRemoteUsageMessageCount(java.lang.String rgName, java.lang.String monClassName, java.lang.String brokerName)
-
getRgUsageReportedCount
protected static double getRgUsageReportedCount(java.lang.String rgName, java.lang.String monClassName)
-
accumulateBMCount
protected static ResourceGroup.BytesAndMessagesCount accumulateBMCount(ResourceGroup.BytesAndMessagesCount... bmCounts)
-
setUsageInMonitoredEntity
protected boolean setUsageInMonitoredEntity(ResourceGroup.ResourceGroupMonitoringClass monClass, NetworkUsage p)
-
-