Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • Step1: Adding the first PID for user will create a bloom filter for this user in the cached map (let call it bloom_filter_1)
    • Any new PIDs will be added to this cache within for the first half of producer.id.quota.window.size.seconds 
  • Step2: A new bloom filter will be created along side the old one for the user once we exceed for the second half of producer.id.quota.window.size.seconds (let's call it bloom_filter_2).
    • All new PIDs from this point will be added to the new filter. 
    • Both bloom filters will be used to check if we came across the same PID before or not. 
  • Step3: The old bloom filter (bloom_filter_1) will be disposed once we reach 1.5 x  producer.id.quota.window.size.seconds . Leaving only bloom_filter_2
  • From this point the cache will be only using bloom_filter_2 until the next producer.id.quota.window.size.seconds start
  • Step4: Repeat steps 2, and 3 on bloom_filter_2 once we reach next producer.id.quota.window.size.secondsImage Removed

Image Added

User entry in the cached map will be entirely removed from the caching layer if it doesn't have any active bloom filters attached to it anymore. 

...

NameTypeDefaultDescription
producer.id.quota.window.num Int11

The number of samples to retain in memory for alter producer id quotas

producer.id.quota.window.size.seconds Int13600

The time span of each sample for producer id quotas. Default is 1hr.

producer.id.quota.cache.cleanup.scheduler.interval.ms

Int10

The frequency in ms that the producer id quota manager will check for disposed cached window.

...