El término / concepto sobre el que debe leer es el hashing consistente . Esta es una familia de algoritmos que utilizan ecuaciones matemáticas para determinar qué tan “cerca” está un objeto de cada servidor en un espacio matemático abstracto. Por ejemplo:
- Definir un espacio circular. Usando la metáfora de una esfera de reloj, esto nos da las posiciones 1, 2, 3, …, 12.
- Coloque los servidores en ese espacio, de modo que esté dividido equitativamente. Digamos que hay tres servidores en 4, 8 y 12.
- Coloque un objeto en ese espacio, tomando el hash de su nombre o ID y dividiéndolo por el número de posiciones. Si el hash es 37, esto nos da la posición 37% 12 = 1.
- El servidor que “debería” contener un objeto es el más cercano a él en el sentido de las agujas del reloj , en este caso el de 4.
Este enfoque tiene dos características muy útiles.
- Requiere mucha menos información que un directorio que asigna cada objeto individual a un servidor. Menos información también significa menos complejidad para mantenerla actualizada y coherente.
- Los servidores se pueden agregar o quitar sin afectar la ubicación de la mayoría de los objetos. Si la asignación de un objeto a un servidor no cambia, no es necesario mover el objeto. Las posiciones de los servidores existentes / restantes en el anillo pueden incluso ajustarse para reducir aún más esta carga de “reequilibrio”.
Hay, por supuesto, muchas variaciones. Algunos algoritmos de hash consistentes se basan en un árbol o una malla en lugar de un anillo. Incluso con un anillo, los “nodos virtuales” se pueden usar para permitir que un solo servidor aparezca en múltiples posiciones en el anillo en lugar de solo uno. Existen diferentes definiciones matemáticas de “distancia” que se utilizan para elegir el servidor “más cercano”. Los objetos pueden asignarse primero a los depósitos, con solo depósitos (no objetos individuales) asignados a los servidores. Sin embargo, todos estos enfoques diferentes comparten las características y ventajas básicas mencionadas anteriormente. Se pueden aplicar en su servidor de metadatos o directamente en una biblioteca cliente utilizada para acceder a su sistema de almacenamiento.
- ¿Puede perder sus archivos con un almacenamiento en la nube si tienen una falla en la unidad?
- Cómo iniciar sesión en una instancia de AWS ec2 creada por un script de terraform
- ¿Cuál es la diferencia entre LVM y RAID?
- Virtualización: ¿Cómo afecta Openstack a VMware?
- ¿Cómo compararías el Surface Pro 2 con el Lenovo ThinkPad Helix?