¿Qué implica reequilibrar un anillo hash?

Cuando agrega un nuevo nodo o uno de los nodos existentes no está disponible, deberá reequilibrar el anillo. Con un hash constante, todos los nodos deberían obtener aproximadamente el mismo número de claves, pero esto depende en gran medida de la distribución de las claves. Es posible que uno de los nodos en el anillo esté sobrecargado y sirva una porción más grande del rango de teclas. Incluso si las claves están bien distribuidas, aún es posible que un nodo esté sobrevendiendo un rango de claves debido a la actividad sesgada del usuario u otras razones. Por lo tanto, algunos nodos pueden estar muy ocupados atendiendo solicitudes de lectura y escritura mientras que otros están relativamente inactivos. Por lo tanto, hay casos para reequilibrar incluso cuando los nodos tienen poca capacidad, pero tienen un uso sesgado. Por lo tanto, cuando agrega un nodo, puede dejar que el nuevo nodo elija dónde quiere unirse al anillo o puede que desee insertar el nodo específicamente en un rango de teclas dado para disminuir la carga sobre los nodos de servicio. De cualquier manera, el reequilibrio requiere la migración de datos, pero su objetivo debe ser minimizar su efecto en todos los nodos. Es posible que desee echar un vistazo a Cassandra, una solución NoSQL, sobre cómo reequilibran el anillo. Específicamente, eche un vistazo al código debajo de la carpeta dht: https://github.com/apache/cassan….