Análisis de las similitudes y diferencias entre la arquitectura SeaweedFS y JuiceFS

SeaweedFS es un sistema de almacenamiento de archivos distribuido eficiente. El primer prototipo de diseño se refiere a Haystack de Facebook, que tiene la capacidad de leer y escribir rápidamente pequeños bloques de datos. Este artículo ayudará a los lectores a tomar una decisión más adecuada comparando las diferencias de diseño y función entre SeaweedFS y JuiceFS.

Estructura del sistema SeaweedFS

SeaweedFS consta de 3 partes, el servidor de volumen para el almacenamiento de archivos subyacente, el servidor maestro para la gestión de clústeres y un componente de archivador opcional que proporciona más funciones hacia arriba.

Servidor de volumen 与 Servidor maestro

En términos de operación del sistema, Volume Server y Master Server sirven para el almacenamiento de archivos juntos. Volume Server se enfoca en la escritura y lectura de datos, mientras que Master Server tiende a ser un servicio de administración de clústeres y volúmenes.

Al leer y escribir datos, la implementación de SeaweedFS es similar a la de Haystack.Un Volumen creado por el usuario es un archivo de disco grande (Superblock en la figura a continuación). En este volumen, todos los archivos escritos por el usuario (Needle en la figura a continuación) se fusionarán en este gran archivo de disco.

Antes de comenzar a escribir datos, la persona que llama debe aplicar a SeaweedFS (Servidor maestro), y luego SeaweedFS devolverá una ID de archivo (compuesta por ID de volumen y compensación) de acuerdo con el volumen de datos actual. También se escribe la información de metadatos (longitud del archivo, fragmento y otra información); cuando se completa la escritura, la persona que llama debe asociar y guardar el archivo y el ID de archivo devuelto en un sistema externo (como MySQL). Al leer datos, dado que el ID de archivo ya contiene toda la información para calcular la posición del archivo (desplazamiento), el contenido del archivo se puede leer de manera eficiente.

Archivador

Además de la unidad de almacenamiento subyacente mencionada anteriormente, SeaweedFS proporciona un componente llamado Filer. Al conectar Volume Server y Master Server hacia abajo, proporciona una gran cantidad de funciones y características (como compatibilidad con POSIX, WebDAV, interfaz S3, etc.). Al igual que JuiceFS, Filer también necesita conectarse a una base de datos externa para guardar información de metadatos.

Para facilitar la explicación, el SeaweedFS al que se hace referencia a continuación incluye el componente Filer.

Estructura del sistema JuiceFS

JuiceFS adopta una arquitectura de almacenamiento separada para "datos" y "metadatos". Los datos del archivo en sí se segmentarán y almacenarán en el almacenamiento de objetos (como Amazon S3), mientras que los metadatos se almacenarán en una base de datos elegida por el usuario (como Redis, MySQL). Al compartir la misma base de datos y el mismo almacenamiento de objetos, JuiceFS implementa un sistema de archivos distribuido con una fuerte garantía de consistencia y también tiene muchas características como "compatibilidad total con POSIX" y "alto rendimiento".

comparación de metadatos

Tanto SeaweedFS como JuiceFS admiten el almacenamiento de información de metadatos del sistema de archivos a través de una base de datos externa. En términos de compatibilidad con bases de datos, SeaweedFS admite hasta 24 bases de datos. JuiceFS tiene altos requisitos para las capacidades de transacción de la base de datos (ver a continuación) y actualmente admite 3 tipos de bases de datos de transacciones en total.

operación atómica

Para garantizar la atomicidad de todas las operaciones de metadatos, JuiceFS necesita utilizar una base de datos con capacidades de procesamiento de transacciones en el nivel de implementación. Sin embargo, SeaweedFS solo permite la transacción de algunas bases de datos (SQL, ArangoDB y TiKV) cuando se realiza la operación de cambio de nombre y tiene requisitos más bajos para la capacidad de transacción de la base de datos. Al mismo tiempo, dado que Seaweed FS no bloquea el directorio o el archivo original al copiar los metadatos durante la operación de cambio de nombre, es posible que se pierdan los datos actualizados en el proceso.

registro de cambios

SeaweedFS generará un registro de cambios para todas las operaciones de metadatos, y este registro se puede usar para la replicación de datos (ver a continuación), la auditoría de operaciones y otras funciones, mientras que JuiceFS aún no ha implementado esta característica.

comparación de almacenamiento

Como se mencionó anteriormente, el almacenamiento de datos de SeaweedFS es implementado por Volume Server + Master Server, que admite funciones como "almacenamiento combinado" y "código de borrado" de pequeños bloques de datos. El almacenamiento de datos de JuiceFS se basa en el servicio de almacenamiento de objetos, y el almacenamiento de objetos seleccionado por el usuario también proporciona características relacionadas.

división de archivos

Al almacenar datos, tanto SeaweedFS como JuiceFS dividirán el archivo en varios bloques pequeños y los conservarán en el sistema de datos subyacente. SeaweedFS divide los archivos en bloques de 8 MB, y para archivos muy grandes (más de 8 GB), también guardará el índice Chunk en el sistema de datos subyacente. JuiceFS se desarma primero en un trozo de 64 MB y luego se desarma en un objeto de 4 MB. A través del concepto de un segmento interno, se optimiza el rendimiento de la escritura aleatoria, la lectura secuencial y la escritura repetida. (Para más detalles, véase Leer flujo de procesamiento de solicitud de compensación )

Almacenamiento jerárquico

Para los volúmenes recién creados, SeaweedFS almacenará los datos localmente, mientras que para los volúmenes más antiguos, SeaweedFS permite cargarlos en la nube para separar los datos fríos y calientes . En este sentido, JuiceFS necesita confiar en servicios externos.

compresión de datos

JuiceFS admite el uso de LZ4 o ZStandard para comprimir todos los datos escritos, mientras que SeaweedFS elige comprimir según la extensión y el tipo de archivo del archivo escrito.

cifrado de almacenamiento

JuiceFS admite cifrado en tránsito (cifrado en tránsito) y cifrado en reposo (cifrado en reposo). Cuando el usuario habilita el cifrado estático, el usuario debe pasar una clave autogestionada y todos los datos escritos se basarán en esta clave. . Consulte " Cifrado de datos " para obtener más detalles.

SeaweedFS también admite el cifrado en tránsito y el cifrado en reposo. Después de habilitar el cifrado de datos, todos los datos escritos en el servidor de volumen se cifrarán con una clave aleatoria y la información correspondiente de la clave aleatoria será administrada por el "Archivador" que mantiene los "metadatos".

acuerdo de acceso

Compatibilidad POSIX

JuiceFS es totalmente compatible con POSIX , mientras que SeaweedFS solo es parcialmente compatible con POSIX ( "Issue 1558" y Wiki ), y la función aún se está mejorando.

protocolo S3

JuiceFS implementa la función de puerta de enlace S3 a través de la puerta de enlace MinIO S3 . Proporciona una API RESTful compatible con S3 para archivos en JuiceFS y puede usar s3cmd, AWS CLI, MinIO Client (mc) y otras herramientas para administrar archivos almacenados en JuiceFS cuando no es conveniente montarlos.

SeaweedFS actualmente admite alrededor de 20 API de S3, que cubren solicitudes de uso común, como lectura, escritura, consulta y eliminación, y también ha creado extensiones funcionales para algunas solicitudes específicas (como Lectura). Para obtener más información, consulte Amazon-S3- API .

Protocolo WebDAV

Tanto JuiceFS como SeaweedFS son compatibles con el protocolo WebDAV.

Compatibilidad HDFS

JuiceFS es totalmente compatible con la API de HDFS . No solo es compatible con Hadoop 2.x y Hadoop 3.x, sino que también es compatible con varios componentes del ecosistema Hadoop. SeaweedFS proporciona compatibilidad básica con la API de HDFS , pero aún no admite algunas operaciones (como turncate, concat, checksum y atributos extendidos, etc.).

controlador CSI

Tanto JuiceFS como SeaweedFS proporcionan un "controlador CSI de Kubernetes" para ayudar a los usuarios a utilizar el sistema de archivos correspondiente en el ecosistema de Kubernetes.

extensiones

caché del cliente

JuiceFS tiene una variedad de estrategias de almacenamiento en caché del lado del cliente, que cubren todas las partes, desde los metadatos hasta el almacenamiento en caché de datos, lo que permite a los usuarios ajustar según sus propios escenarios de aplicación ( detalles ), mientras que SeaweedFS no tiene capacidades de almacenamiento en caché del lado del cliente.

Replicación de datos de clúster

Para la replicación de datos entre varios clústeres, SeaweedFS admite dos modos de replicación asincrónica, "Activo-Activo" y "Activo-Pasivo". Ambos modos logran la coherencia entre los datos en diferentes clústeres pasando el registro de cambios y volviendo a aplicar el mecanismo. Para cada registro de cambios, habrá una información de firma para garantizar que la misma modificación no se repetirá varias veces. En el modo Activo-Activo con más de 2 nodos en el clúster, algunas operaciones de SeaweedFS (como el cambio de nombre de directorios) estarán sujetas a algunas restricciones.

JuiceFS no admite de forma nativa la sincronización de datos entre clústeres y necesita confiar en el motor de metadatos y en las capacidades de replicación de datos propias del almacenamiento de objetos.

Caché de datos en la nube

SeaweedFS se puede usar como caché para el almacenamiento de objetos en la nube y admite el precalentamiento manual de datos a través de comandos. Las modificaciones de los datos almacenados en caché se sincronizan de forma asíncrona con el almacenamiento de objetos. JuiceFS necesita almacenar archivos en el almacenamiento de objetos en fragmentos y aún no admite la aceleración de almacenamiento en caché para los datos que ya están en el almacenamiento de objetos.

papelera de reciclaje

JuiceFS habilita la función de papelera de reciclaje de forma predeterminada, que moverá automáticamente los archivos eliminados por el usuario al directorio .trash en el directorio raíz de JuiceFS y conservará los datos durante un tiempo específico antes de limpiarlos. SeaweedFS aún no es compatible con esta función.

Herramienta de operación y mantenimiento

JuiceFS proporciona dos subcomandos, juciefs stats y juicefs profile, que permiten a los usuarios ver los indicadores de rendimiento actuales o de reproducción durante un cierto período de tiempo en tiempo real. Al mismo tiempo, JuiceFS también desarrolla la interfaz de métricas externamente y los usuarios pueden conectar fácilmente los datos de monitoreo a Prometheus y Grafana.

SeaweedFS realiza dos formas de conectar Prometheus y Grafana al mismo tiempo , empujar y tirar , y proporciona una herramienta interactiva de shell de malezas para facilitar a los usuarios realizar una serie de tareas de operación y mantenimiento (como ver el estado actual del clúster, listar listas de archivos , etc.).

otro

  • En términos de tiempo de lanzamiento, SeaweedFS se lanzó en abril de 2015 y actualmente tiene un total de 16,400 estrellas, mientras que JuiceFS se lanzó en enero de 2021 y tiene un total de 7,300 estrellas hasta el momento.

  • En cuanto a los proyectos, tanto JuiceFS como SeaweedFS adoptan la licencia Apache 2.0, que es más comercial y amigable.SeaweedFS es mantenido principalmente por Chris Lu, mientras que JuiceFS es mantenido principalmente por Juicedata.

  • Tanto JuiceFS como SeaweedFS están escritos en lenguaje Go.

lista de comparación

algas marinas JugoFS
metadatos multimotor multimotor
Atomicidad de las operaciones de metadatos no garantizado Garantizado por transacciones de base de datos
registro de cambios tener ninguno
almacenamiento de datos Incluir servicio externo
código de borrado apoyo Confíe en servicios externos
fusión de datos apoyo Confíe en servicios externos
división de archivos 8MB 64 MB + 4 MB
Almacenamiento jerárquico apoyo Confíe en servicios externos
compresión de datos Compatible (basado en la extensión) Soporte (configuración global)
cifrado de almacenamiento apoyo apoyo
Compatibilidad POSIX básico entero
protocolo S3 básico básico
Protocolo WebDAV apoyo apoyo
Compatibilidad HDFS básico entero
controlador CSI apoyo apoyo
caché del cliente no apoyo apoyo
Replicación de datos de clúster Asíncrono bidireccional, multimodo no apoyo
Caché de datos en la nube Soporte (sincronización manual) no apoyo
papelera de reciclaje no apoyo apoyo
Herramienta de operación y mantenimiento suministrar suministrar
tiempo de liberación 2015.4 2021.1
mantenedor principal Personal (Chris Lu) Empresa (Juicedata Inc)
idioma Ir Ir
acuerdo de fuente abierta Licencia Apache 2.0 Licencia Apache 2.0

Si es de ayuda, preste atención a nuestro proyecto Juicedata/JuiceFS . (0ᴗ0✿)

{{o.nombre}}
{{m.nombre}}

Supongo que te gusta

Origin my.oschina.net/u/5389802/blog/7634308
Recomendado
Clasificación