I'm an engineer at Google. Previously I worked at HashiCorp, Chef Software, CustomInk, and some Pittsburgh-based startups.
- ๐ฌ Ask me about: Go, Ruby
- ๐ Pronouns: he/him
- ๐ Website
Go rate limiter interface for Redis
License: Apache License 2.0
I'm an engineer at Google. Previously I worked at HashiCorp, Chef Software, CustomInk, and some Pittsburgh-based startups.
I noticed that if a key is getting constant Take
requests, then the originally set rate limit for the key will never be overwritten, no matter a new Store
was initialized with new limits. The original key should expire - not get traffic for 3 * original interval time - for the new limits to take effect. I'm wondering what's your take on this.
An example scenario:
I see there's a Set
method that can be used to change the limits on the fly, but it feels like a bit of an overhead to call that for every request while we want to reset the limits only once.
I was wondering if we can make a rate limit check during Take
and do a Set
like action if they have been modified. This might have an unexpected side effect though if multiple versions of the service - having different rate limits - are live and constantly overwriting the rate limits during a rolling deployment.
Another idea was to expire the rate limit config (separately from the other data), so the new limits will take affect in e.g. in 3 * original interval time even if there's constant load. (For a rolling deployment it probably means 3 * original interval time after there's no old version of the service running.)
What do you think? Any other approaches you would suggest? I'm happy to contribute if there's a solution emerging.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.