¿Cómo se distribuye un sistema de almacenamiento de archivos en la nube?

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.

El almacenamiento de archivos, también llamado almacenamiento a nivel de archivo o basado en archivos, almacena datos en una estructura jerárquica. Los datos se guardan en archivos y carpetas, y se envían tanto al sistema que los almacena como al sistema que los recupera en el formato común.

Somos DataBagg, el proveedor líder de servicios de almacenamiento de archivos en línea de última generación para todo tipo de organizaciones . ¡Superamos las expectativas al ofrecer servicios que son significativamente mejores que el resto! Un almacenamiento de archivos en línea suministrado por nosotros le permitirá lograr un alto rendimiento elitista.

Los servicios de almacenamiento de archivos en línea de DataBagg le permitirán recibir las diversas recompensas de:

  • Nube privada.
  • Nube pública
  • Equipamiento dedicado.

Existe la capacidad de adaptación de las condiciones virtualizadas, la ejecución total del entorno comprometido y la asombrosa flexibilidad del almacenamiento en la nube , todo disponible para usted.

Bueno, es un gran espacio de intercambio.

Si los archivos con los que está tratando son grandes, es decir, del orden de al menos 100 MB cada uno, vale la pena mirar HDFS [1]. Tiene un pequeño problema de archivo pequeño, así que tenga cuidado con los escenarios que involucran MUCHOS archivos pequeños.

Algo más general que HDFS en mi opinión son los sistemas de archivos escalables, Ceph [2] y GlusterFS [3].

[1] Apache Hadoop
[2] Inicio Ceph
[3] Escribe una vez, lee en todas partes

Los archivos se almacenan físicamente en grandes servidores ubicados en grandes centros de datos, estos centros de datos reciben una adición diaria al sistema de aproximadamente 0.5-1Pb de disco duro nuevo (A Pb = 1000Tb)

El equilibrio de carga funciona en bases de datos y la forma en que está equilibrado es el famoso lenguaje MySQL para equilibrar una base de datos

Continuando, un servidor grande (al menos 4Tb) puede hacer un sistema para almacenar archivos y usted necesita construir una interfaz de software entre su servidor y el HDD para convertirlos en bytes (esto se hace mejor usando C o C ++ y Microsoft Visual Studio)

Si su base de datos está suficientemente escalada y correctamente, solo hacer que almacene los datos y convertirlos es pan comido

Aclamaciones,

Seguiría la sugerencia de Lalith y usaría un sistema de almacenamiento de objetos distribuidos como Ceph u Openstack Swift. Luego colocaría una API encima de ese sistema de archivos distribuido.