O que você faz quando seu site dimensiona tanto que o uploaded_media não cabe em uma máquina? [fechadas]

2

O que você faz quando o site escala tanto que o seu uploaded_media (no Django, onde todos os arquivos de mídia enviados pelos usuários são armazenados) não cabe em uma máquina?

Meu caso pessoal, estou usando o Django e tenho um servidor uploaded_media realmente grande com mais de 600GB de armazenamento (mas esse espaço está se esgotando.)

Possíveis soluções que eu fiz brainstorming:
1) Tente construir uma máquina de armazenamento maior.
2) Mover para um sistema mais abstraído onde a localização e os caminhos para uploaded_media são armazenados em um banco de dados (cada arquivo recebe um ID DB e esse banco de dados armazena onde o arquivo é armazenado em vários servidores uploaded_media.)

    
por MikeN 16.12.2011 / 02:16

2 respostas

5

Mova sua mídia estática para outro subsistema de armazenamento. Isso pode assumir a forma de um grande NAS, com o NFS exportando para seu servidor da Web ou, preferencialmente, usar um armazenamento de objetos como o Amazon S3 para sua mídia estática. Com os encantamentos certos, você pode fazer com que os navegadores de seus usuários façam upload de arquivos diretamente para o S3. Se isso não estiver nos cartões, no entanto, você pode armazenar arquivos carregados localmente por um curto período de tempo e, em seguida, ter um trabalho executado periodicamente e carregar itens no S3 (também atualizando seu banco de dados quanto ao local correto).

    
por 16.12.2011 / 03:21
2

Algumas opções vêm à mente:

  1. Adicione mais armazenamento (por exemplo, um segundo disco rígido) (e, possivelmente, configure-o como JBOD para que pareça contíguo ao servidor).
  2. Considere um sistema de arquivos em rede como o GlusterFS. Isso permitirá que você tenha dados armazenados em várias máquinas, todos transparentemente acessíveis para a máquina local.
  3. Considere o uso de um serviço de armazenamento externo, como o S3 da Amazon. Você pode montá-lo como armazenamento local (por exemplo, usando S3fuse) e ele será escalonado de acordo com suas necessidades (além do custo, há um pouco de limitação de desempenho neste cenário - definitivamente não é adequado para algo como um banco de dados, mas para arquivos de mídia deve ser bastante adequado).
  4. Uma má opção (pelo menos na minha opinião) seria usar um sistema de arquivos compactado (fusecompress, btrfs) para ganhar um pouco de espaço extra - dependendo do tipo de arquivos, isso poderia resultar em economias substanciais de espaço (por exemplo para documentos) ou quase nenhuma (para imagens / música / vídeo). Há, é claro, um impacto significativo no desempenho que seria incorrido.

Pode ser possível combinar alguns dos itens acima (por exemplo, usar seu armazenamento existente e S3 sobre o GlusterFS para um resultado uniforme - mas quanto mais camadas você adicionar, menor será o desempenho. Então, novamente, para uma configuração que é principalmente armazenar arquivos, isso pode não ser uma consideração importante).

    
por 16.12.2011 / 02:35

Tags