
Interface Throttler
Throttler defined a simple method used to call throttler implementaton.
public void start()
Implementaton
ThrottleTimerImpl implement Throttler used to cyclical reset service visit counter.
1 | new Timer(true).schedule(new TimerTask() { |
Counter
CallsCount use ConcurrentHashMap to implement multi thread save counter.
private Map<String, AtomicLong> tenantCallsCount = new ConcurrentHashMap<>();
POJO
Tenant represent a kind of business.
have properties name and allowedCallsPerSecond
Service
XXXService call Throttler to start reset thread.XXXService call counter to check whether ths visit under threshold.
1 | String tenantName = tenant.getName(); |
Summary
Throttling is used to limit client visit frequency, so we need:
a overall situation counter
a daemonize thread resetor
a business represent pojo
a limited flow service