Almacenamiento de objetos asíncrono distribuido DAOS|Capas y servicios

arquitectura

        Como se muestra en el diagrama siguiente, la pila DAOS está estructurada como una colección de servicios de almacenamiento en una arquitectura cliente/servidor.

        Ejemplos de servicios DAOS son Pool, Container, Object y Rebuild.

Bibliotecas y servicios internos de DAOS

        Los servicios DAOS se distribuyen en los planos de control y datos y se comunican internamente a través de dRPC. La mayoría de los servicios tienen componentes de cliente y servidor que se pueden sincronizar mediante gRPC o CART. La comunicación entre servicios se realiza directamente a través de llamadas API, y estas funciones pueden ser invocadas por componentes de servidor o cliente entre servicios.

        Si bien cada servicio DAOS está diseñado para ser autónomo y aislado, algunos servicios están más estrechamente acoplados que otros. Este suele ser el caso del servicio de reconstrucción, que necesita interactuar estrechamente con los servicios de grupo, contenedor y objetos para restaurar la redundancia de datos después de una falla del servidor DAOS.

        La flexibilidad y la escalabilidad son proporcionadas por una arquitectura basada en servicios, que se combina con un conjunto de bibliotecas de infraestructura que brindan un rico ecosistema de software accesible a todos los servicios DAOS (por ejemplo, comunicación, acceso persistente al almacenamiento, ejecución de tareas asincrónicas de gráficos, soporte de acelerador, etc.). .).

estructura del código fuente

        A cada biblioteca y servicio de infraestructura se src/ le .

        Los componentes de cliente y servidor de un servicio se almacenan en archivos separados. Las funciones que son componentes del lado del cliente tienen el prefijo  dc_(para DAOS Client), mientras que las funciones del lado del servidor tienen el prefijo  ds_(para DAOS Server). Los protocolos y formatos RPC utilizados entre los componentes del cliente y del servidor generalmente se  rpc.h definen en archivos de encabezado denominados .

        Todo el código Go ejecutado en el contexto del plano de control se encuentra en  src/control el directorio. Los servicios de gestión y seguridad se distribuyen entre Control Plane (Go) y Data Plane ©, comunicándose internamente a través de dRPC.

        Los archivos de encabezado de la API DAOS oficial expuestos a los usuarios finales (es decir, middleware de E/S o desarrolladores de aplicaciones) se encuentran en el  src/include directorio y utilizan  daos_ el prefijo.

        Cada biblioteca de infraestructura exporta una API, el archivo de encabezado de la API se encuentra  src/include/daos en el directorio y puede ser utilizado por cualquier servicio. La API del lado del cliente (con prefijo) exportada por un servicio determinado  dc_ también se almacena en  src/include/daos el directorio, mientras que la interfaz del lado del servidor (con  ds_ prefijo) se almacena  src/include/daos_srv en el directorio.

Biblioteca de infraestructura

        Las bibliotecas GURT (una biblioteca común de rutinas y tipos útiles de Gurt) y  común  ( libdaos_common) proporcionan registro, depuración y estructuras de datos comunes (como tabla hash, btree, etc.) para servicios DAOS.

        El almacenamiento NVM local se administra mediante  las bibliotecas Versioning Object Store (VOS)  y  Blob I/O (BIO)  . VOS implementa índices persistentes en SCM, mientras que BIO es responsable de almacenar los datos de la aplicación en NVMe SSD o SCM según la política de asignación. La  capa Versioned Block Allocator (VEA) está integrada en VOS y es responsable de gestionar la asignación de bloques en SSD NVMe.

        Los objetos DAOS se distribuyen en múltiples objetivos para lograr rendimiento (fragmentación) y resiliencia (replicación o codificación de borrado). La  biblioteca de Ubicación implementa diferentes algoritmos (por ejemplo, ubicación basada en anillos, hash consistente con saltos...) para generar el diseño de los objetos a partir de la lista de objetivos y los identificadores de objetos.

        La biblioteca del marco de servicio replicado ( RSVC ) proporciona código común para admitir la tolerancia a fallas.

        Los servicios de grupo, contenedor y administración se utilizan junto con  la  biblioteca de base de datos replicada (RDB), que implementa un almacén de valores clave replicado en Raft.

        Para obtener más información sobre estas bibliotecas de infraestructura, consulte:

servicio DAOS

        El siguiente diagrama muestra las capas internas de los servicios DAOS y la interacción con las diferentes bibliotecas mencionadas anteriormente:

Capas internas DAOS

        Los cuadros verticales representan servicios DAOS, mientras que los cuadros horizontales representan bibliotecas de infraestructura.

        Para más información sobre la estructura interna de cada servicio:

Información relacionada

GitHub:  https://github.com/storagezhang

Correo electrónico: [email protected]

DAOS: https://github.com/daos-stack/daos

Este artículo está traducido de  https://github.com/daos-stack/daos/blob/master/src/README.md

Supongo que te gusta

Origin blog.csdn.net/iamonlyme/article/details/132305908
Recomendado
Clasificación