Comments (3)
@gotascii Hi, yeah in general our hash functions rely on the servers in the list never being re-ordered. Here's how we deal with this. There are a few situations when we might want to change the server list:
- replace a box - in this case we simply replace the host at some index in the list with the new value, without reordering other hosts.
- grow the size of the pool - for this, we take care to only add new boxes at the end of the list
- shrink the pool - similarly, we only remove boxes from the end of the list.
Generally these are the only operations we do on the server lists in the config. Note that none of these should happen too often. For any transient failures, we rely on failover + TKO logic to temporarily disable the box without changing the pool's server list.
If the above doesn't work for you, please consider implementing the additional hash support yourself. It shouldn't be too difficult, you need to add an alternative to HashRoute that would hold a list of DestinationRoutes and use the destination keys to do the hash lookup.
from mcrouter.
Sounds good, thanks for the clarification! If we end up taking a crack at adding ketama we'll send along a PR.
from mcrouter.
Thanks @gotascii!
Let us know if you need anything else!
from mcrouter.
Related Issues (20)
- “Stats files” wiki page has some formatting issues HOT 1
- Simple replication model not working as expected HOT 1
- `mg` for WarmupRoute?
- CentOS 8 RPM/Build Support HOT 1
- Cannot build ubuntu20 docker file HOT 5
- Memcached server specification (TLS/SSL) documentation HOT 1
- Error to build docker image with docker file... HOT 1
- Last stable version
- Warmup related configuration incase we are running mcrouter and memcache on kubernetes
- Mcrouter adds MC_MSG_FLAG_BIG_VALUE flag but never removes it HOT 4
- AsyncSocketException: AsyncMcClient, type = Socket not open HOT 1
- unable to build new py3 thrift changes in upstream
- ubuntu 20.04 building issue HOT 1
- Failed to build on Ubuntu 22.04 HOT 1
- Addition of a pre-populated replica
- New Ubuntu package HOT 2
- Failed to build on ubuntu18.04
- How can I traverse a server in the pool? HOT 1
- Issues after memcached version upgrade
- does AllFastestRoute route consider miss as errors?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mcrouter.