I will try to explain consistent hashing with a real world example.
Let's assume I have a restaurant with 60 tables and 5 servers (waiter).
Each server is given an equal number of tables to serve.
Now let's assume we have addition of a new server (waiter), so his addition will be marked in the circle and he will be receiving tables from the previous server to his distance only. Check the attached example.
Assume a server (waiter) has left the organisation and we have only 4 servers now. Server3 has left the restaurant, so his table will be assigned to server 4.
I am sure you have noticed the load is not equally distributed. But to make the system less prone to addition/removal we just rotate in clockwise and assign range from the previous server to present server. To make sure load is balanced or optimally balanced we need to use virtual nodes.
Check links here:
http://tom-e-white.com/2007/11/consistent-hashing.html
https://www.toptal.com/big-data/consistent-hashing
Let's assume I have a restaurant with 60 tables and 5 servers (waiter).
Each server is given an equal number of tables to serve.
Now let's assume we have addition of a new server (waiter), so his addition will be marked in the circle and he will be receiving tables from the previous server to his distance only. Check the attached example.
Assume a server (waiter) has left the organisation and we have only 4 servers now. Server3 has left the restaurant, so his table will be assigned to server 4.
I am sure you have noticed the load is not equally distributed. But to make the system less prone to addition/removal we just rotate in clockwise and assign range from the previous server to present server. To make sure load is balanced or optimally balanced we need to use virtual nodes.
Check links here:
http://tom-e-white.com/2007/11/consistent-hashing.html
https://www.toptal.com/big-data/consistent-hashing
Comments
Post a Comment