o primeiro episódio — servidores para armazenamento eficaz de um grande número de arquivos em um formato compacto, que externamente se parece com um servidor WebDAV normal. Para o armazenamento, utiliza-se uma versão modificada . O código do projeto foi escrito na linguagem Go e sob a licença BSD.
Servidor reduz significativamente o número de pequenos arquivos em sistemas de arquivos comuns ou em cluster com suporte total para bloqueios. O cluster suportado pelos desenvolvedores do wZD armazena cerca de 250 milhões de pequenos arquivos distribuídos por 15 milhões de diretórios no sistema de arquivos em cluster .
o wZD permite mover (arquivar) o conteúdo dos diretórios em arquivos no formato BoltDB e, em seguida, servir esses arquivos a partir desses arquivos (ou colocar arquivos nos arquivos usando o método PUT), reduzindo significativamente o número de arquivos no sistema de arquivos e diminuindo os custos de armazenamento de metadados. Para melhorar a eficiência no tratamento de arquivos grandes, esses arquivos podem ser salvos separadamente dos arquivos Bolt. Essa abordagem permite organizar o armazenamento de um enorme número de pequenos arquivos, sem esbarrar no limite de inode do sistema de arquivos.
O servidor também pode ser usado como um banco de dados NoSQL para dados no formato chave/valor (com sharding baseado na estrutura de diretórios) ou para servir documentos html ou json pré-gerados a partir do banco de dados. Em termos de desempenho, a leitura e gravação de dados usando arquivos Bolt resulta em um aumento de latência de aproximadamente 20-25% na leitura e de 40-50% na gravação. Quanto menor o tamanho do arquivo, menores as diferenças nas latências.
Principais :
- Multithreading;
- Multi-servidor, garantindo resiliência e balanceamento de carga;
- Máxima transparência para o usuário ou desenvolvedor;
- Métodos HTTP suportados: GET, HEAD, PUT e DELETE;
- Gerenciamento de comportamento de leitura e escrita através de cabeçalhos do cliente;
- Suporte a hosts virtuais configuráveis de forma flexível;
- Suporte a integridade de dados CRC na gravação/leitura;
- Buffers semi-dinâmicos para consumo mínimo de memória e otimização do desempenho da rede;
- Compactação de dados adiada;
- Além disso, é oferecido um compactador multithread para mover arquivos para arquivos Bolt sem parar o serviço.
Algumas limitações da versão atual: sem suporte a Multipart, método POST, protocolo HTTPS, bindings para linguagens de programação, remoção recursiva de diretórios, falta de suporte para montagem da estrutura no sistema de arquivos via WebDAV ou FUSE, os arquivos são armazenados sob um único usuário do sistema. O formato de armazenamento é vinculado à arquitetura e não é portável entre sistemas Little Endian e Big Endian. Embora o servidor wZD implemente suporte ao protocolo HTTP, ele deve ser executado apenas atrás de um proxy reverso, como nginx e haproxy.
Fonte: opennet.ru
