Armazenamento de objetos assíncronos distribuídos DAOS | Camadas e serviços

arquitetura

        Conforme mostrado no diagrama abaixo, a pilha DAOS é estruturada como uma coleção de serviços de armazenamento em uma arquitetura cliente/servidor.

        Exemplos de serviços DAOS são Pool, Container, Object e Rebuild.

Serviços internos e bibliotecas DAOS

        Os serviços DAOS são distribuídos pelos planos de controle e de dados e se comunicam internamente via dRPC. A maioria dos serviços possui componentes de cliente e servidor que podem ser sincronizados via gRPC ou CART. A comunicação entre serviços é feita diretamente por meio de chamadas de API, e essas funções podem ser invocadas por clientes ou componentes de servidor entre serviços.

        Embora cada serviço DAOS seja projetado para ser autônomo e isolado, alguns serviços são mais fortemente acoplados do que outros. Geralmente, esse é o caso do serviço Rebuild, que precisa interagir estreitamente com os serviços Pool, Container e Object para restaurar a redundância de dados após uma falha do servidor DAOS.

        A arquitetura baseada em serviços fornece flexibilidade e escalabilidade, que é combinada com um conjunto de bibliotecas de infraestrutura que fornecem um rico ecossistema de software acessível a todos os serviços DAOS (por exemplo, comunicação, acesso de armazenamento persistente, execução de tarefas assíncronas com gráfico de dependências, suporte a aceleradores, etc. .).

estrutura do código-fonte

        Cada biblioteca e serviço de infra-estrutura recebe um src/ diretório .

        Os componentes cliente e servidor de um serviço são armazenados em arquivos separados. As funções que são componentes do lado do cliente são prefixadas com  dc_(para cliente DAOS), enquanto as funções do lado do servidor são prefixadas  ds_com (para servidor DAOS). Os protocolos e formatos RPC usados ​​entre os componentes cliente e servidor são geralmente  rpc.h definidos em arquivos de cabeçalho denominados .

        Todo o código Go executado no contexto do plano de controle reside no  src/control diretório. Os serviços de gerenciamento e segurança são distribuídos entre Control Plane (Go) e Data Plane ©, comunicando-se internamente via dRPC.

        Os arquivos de cabeçalho da API DAOS oficial exposta aos usuários finais (ou seja, middleware de E/S ou desenvolvedores de aplicativos) estão localizados no  src/include diretório e usam  daos_ o prefixo.

        Cada biblioteca de infraestrutura exporta uma API, o arquivo de cabeçalho da API está localizado  src/include/daos no diretório e pode ser usado por qualquer serviço. A API do lado do cliente (com prefixo) exportada por um determinado serviço  dc_ também é armazenada  src/include/daos no diretório, enquanto a interface do lado do servidor (com  ds_ prefixo) é armazenada  src/include/daos_srv no diretório.

Biblioteca de infraestrutura

        As bibliotecas GURT (uma biblioteca comum de rotinas e tipos úteis de Gurt) e  Common  ( libdaos_common) fornecem registro, depuração e estruturas de dados comuns (como tabela hash, btree, etc.) para serviços DAOS.

        O armazenamento NVM local é gerenciado pelas   bibliotecas Versioning Object Store (VOS)  e  Blob I/O (BIO) . O VOS implementa índices persistentes no SCM, enquanto o BIO é responsável por armazenar os dados da aplicação em SSD NVMe ou SCM de acordo com a política de alocação. A  camada Versioned Block Allocator (VEA) está integrada ao VOS e é responsável por gerenciar a alocação de blocos em SSDs NVMe.

        Os objetos DAOS são distribuídos em vários destinos para desempenho (fragmentação) e resiliência (replicação ou codificação de eliminação). A  biblioteca Placement implementa diferentes algoritmos (por exemplo, posicionamento baseado em anel, hashing consistente com saltos...) para gerar o layout de objetos a partir de uma lista de alvos e identificadores de objetos.

        A biblioteca Replicated service framework ( RSVC ) fornece alguns códigos comuns para oferecer suporte à tolerância a falhas.

        Os serviços Pool, Container e Management são usados ​​em conjunto com  a biblioteca de banco de dados replicado (RDB)  , que implementa um armazenamento de valor-chave replicado no Raft.

        Para obter mais informações sobre essas bibliotecas de infraestrutura, consulte:

Serviço DAOS

        O diagrama abaixo mostra as camadas internas dos serviços DAOS e a interação com as diferentes bibliotecas mencionadas acima:

Camadas internas DAOS

        As caixas verticais representam serviços DAOS, enquanto as caixas horizontais representam bibliotecas de infraestrutura.

        Para leitura adicional sobre a estrutura interna de cada serviço:

Informação relacionada

GitHub:  https://github.com/storagezhang

E-mail: [email protected]

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

Este artigo foi traduzido de  https://github.com/daos-stack/daos/blob/master/src/README.md

Acho que você gosta

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