9 pontos por GN⁺ 2024-02-03 | 1 comentários | Compartilhar no WhatsApp
  • Sistema de arquivos distribuído simples e altamente escalável
  • O objetivo é armazenar bilhões de arquivos e entregá-los rapidamente
  • Implementado com base em ideias do design Haystack do Facebook e do f4: sistema de armazenamento de BLOBs mornos do Facebook
  • O armazenamento de blobs tem busca em disco O(1) e recursos de hierarquização em nuvem
  • O Filer oferece suporte a diretórios e atributos POSIX, incluindo drive em nuvem, replicação ativo-ativo entre DCs, Kubernetes, montagem POSIX FUSE, API S3, gateway S3, Hadoop, WebDAV, criptografia, codificação de apagamento e mais

Recursos

  • Oferece várias opções de replicação, como nível de replicação, reconhecimento de rack e de data center.
  • Sem ponto único de falha, com failover automático do servidor mestre.
  • Suporte a compactação Gzip automática com base no tipo MIME do arquivo.
  • Compactação automática para recuperar espaço em disco após exclusão ou atualização de dados.
  • É possível aumentar o espaço total de armazenamento adicionando servidores.
  • Não há rebalanceamento de dados ao adicionar/remover servidores; isso só é acionado por comando do administrador.
  • Suporte a redimensionamento de imagens, ETag, Accept-Range, Last-Modified e mais.
  • Suporte a ajuste dos modos in-memory/leveldb/readonly para equilibrar memória e desempenho.
  • Oferece múltiplas camadas de armazenamento personalizáveis e integração transparente com a nuvem.
  • A codificação de apagamento 10.4 com reconhecimento de rack para armazenamento morno reduz custos de armazenamento e melhora a disponibilidade.

Recursos do Filer

  • O servidor Filer fornece diretórios e arquivos "normais" via HTTP.
  • Expiração automática de metadados e dos dados reais dos arquivos com TTL de arquivo.
  • É possível ler e gravar arquivos diretamente no filer montado via FUSE.
  • Alta disponibilidade do armazenamento de metadados com replicação do armazenamento do Filer.
  • Acesso a arquivos com ferramentas S3 por meio de API compatível com Amazon S3.
  • Acesso a arquivos em Hadoop/Spark/Flink etc. por meio de sistema de arquivos compatível com Hadoop.
  • Armazenamento criptografado com AES256-GCM para guardar dados com segurança.
  • Suporte ao armazenamento de arquivos grandes com dezenas de TB.
  • Como drive em nuvem, permite montar armazenamento em nuvem no cluster local para leitura e gravação rápidas.

Kubernetes

  • Suporte ao driver CSI do Kubernetes e ao operador do SeaweedFS.

Exemplo de uso do armazenamento de objetos do Seaweed

  • Orientações sobre portas padrão e forma de execução dos nós mestre e de volume.
  • Exemplos de como gravar, ler e excluir arquivos.
  • Explicação sobre replicação com reconhecimento de rack e data center, e como atribuir chaves de arquivo a um data center específico.

Arquitetura

  • O SeaweedFS gerencia volumes de dados sem dividir arquivos em chunks.
  • O servidor mestre gerencia apenas os metadados dos volumes, e os metadados reais dos arquivos são gerenciados pelo servidor de volumes.
  • Fornece uma explicação detalhada do processo de escrita e leitura de arquivos.

Comparação com outros sistemas de arquivos

  • Explica as vantagens do SeaweedFS em comparação com HDFS, GlusterFS, Ceph, MooseFS, MinIO e outros.
  • O SeaweedFS é otimizado para arquivos pequenos e oferece acesso rápido com operações de leitura em disco O(1).

Plano de desenvolvimento

  • Está previsto fornecer mais ferramentas e documentação para administração e expansão do sistema.
  • Suporte à leitura e gravação de dados em fluxo.
  • Suporte a dados estruturados.

Guia de instalação

  • Fornece um guia de instalação para usuários que não estão familiarizados com Golang.

Tópicos relacionados a disco

  • Explicação sobre o desempenho de discos rígidos e SSDs.
  • O SeaweedFS tem uma arquitetura amigável para SSDs.

Benchmark

  • Apresenta resultados pessoais e não científicos de benchmark em máquina única.
  • Orientações sobre como executar benchmarks mistos usando WARP.

Licença

  • Licenciado sob a Apache License, Version 2.0.

Opinião do GN⁺:

  • O SeaweedFS é um sistema de arquivos distribuído que busca gerenciar pequenos arquivos com eficiência e entregá-los rapidamente. Isso o torna muito adequado para serviços web modernos que lidam com grandes volumes de dados.
  • Ele oferece flexibilidade por meio da compatibilidade com vários armazenamentos e bancos de dados, e possibilita gestão de dados com boa relação custo-benefício graças aos recursos de integração com a nuvem.
  • Como projeto de código aberto, recebe apoio da comunidade e continua evoluindo, o que também o torna interessante do ponto de vista técnico.

1 comentários

 
GN⁺ 2024-02-03
Comentários no Hacker News
  • Menção ao JuiceFS

    • Nos comentários, foram citadas várias alternativas como Minio, Ceph e GarageFS.
    • Outra alternativa que ainda não havia sido mencionada é o JuiceFS.
    • Há material comparando JuiceFS e SeaweedFS.
  • Experiência de uso com SeaweedFS

    • O SeaweedFS foi usado para armazenar bilhões de documentos XML de tamanho médio, miniaturas de imagens, arquivos PDF etc.
    • Ele preenche a lacuna entre banco de dados e sistema de arquivos.
    • A documentação e as ferramentas operacionais parecem um pouco estranhas no início, mas é rico em recursos e funciona bem.
    • Foi possível recuperar dados após quedas de energia, falhas de hardware e outros problemas.
    • A lacuna no ecossistema de blob stores open source com API S3 parece surpreendente.
  • Experiência negativa com SeaweedFS

    • Decidiu-se não usar o SeaweedFS porque o Postgres não inicializava em um volume POSIX FS montado pelo driver CSI do SeaweedFS.
    • Há necessidade de um sistema SDS que ofereça um POSIX FS completo e volumes S3, seja FOSS e permita fazer administração, monitoramento, recuperação de desastres etc. de forma eficaz.
    • Sistemas como Ceph são descartados. O GarageFS oferece suporte apenas a S3.
  • Opinião do desenvolvedor do SeaweedFS

    • O SeaweedFS é construído sobre um armazenamento de blobs baseado no artigo Haystack, do Facebook.
    • Nem todos os recursos ainda estão totalmente desenvolvidos, mas ele oferece uma nova forma de programar adequada à era da nuvem.
    • Quando é necessário espaço de armazenamento, aloca-se espaço e recebe-se um ID de arquivo, que é usado como um ponteiro para um bloco de memória.
  • Caso de uso do SeaweedFS

    • O SeaweedFS é usado para armazenar mais de 50 TB de gravações (replays) de partidas multiplayer.
    • Usa-se a funcionalidade nativa de expiração, sem problemas no uso, na adição de novos recursos ou em migrações.
  • Opiniões sobre SeaweedFS e Min.io

    • Ao perguntar sobre experiências com soluções self-hosted como S3, usuários de SeaweedFS recomendam Min.io, e usuários de Min.io recomendam SeaweedFS.
  • Usuário de longa data do SeaweedFS

    • Cerca de 250 mil objetos estão armazenados no SeaweedFS, muitos deles em cold storage atrás do Cloudflare.
    • O SeaweedFS é usado há muito tempo por fascínio com o Haystack do Facebook, e tem se mostrado muito estável e eficiente.
  • Histórico das tecnologias de armazenamento da Microsoft

    • A Microsoft tentou várias vezes, no passado, preencher a lacuna entre arquivos e banco de dados, mas a maioria das tentativas fracassou.
    • Menciona-se o interesse de Bill Gates por esse tipo de tecnologia e sua frustração com os resultados.
  • Pontos a considerar ao escolher armazenamento distribuído

    • É preciso considerar se armazenamento distribuído é realmente necessário e se é possível fazer sharding por conta própria.
    • É preciso verificar se os blobs precisam ser modificados ou se ler/modificar/substituir já é suficiente.
    • É preciso considerar a proporção entre leituras e escritas.
    • É preciso considerar a frequência de mudanças nos metadados.
    • É preciso considerar como gerenciar escritas simultâneas no mesmo objeto.
    • É preciso escolher o que priorizar entre disponibilidade, consistência e velocidade.
    • É preciso considerar como recuperar o sistema de falhas simultâneas no armazenamento distribuído.
    • É preciso considerar como será feito o controle de acesso.
  • Comparação de desempenho entre SeaweedFS e Min.io

    • Para armazenar mais de 100 TB de dados de áudio em HDD de forma barata, foram testados SeaweedFS e Min.io.
    • O SeaweedFS apresentou melhor desempenho para esse caso de uso.