Recomendações para a implementação da API REST do S3
Você deve seguir estas recomendações ao implementar a API REST do S3 para uso com o StorageGRID.
Recomendações para heads to non-existent objects
Se seu aplicativo verificar rotineiramente para ver se um objeto existe em um caminho onde você não espera que o objeto realmente exista, você deve usar o controle de consistência ""disponível"". Por exemplo, você deve usar o controle de consistência "disponível" se seu aplicativo dirigir um local antes DE COLOCÁ-lo.
Caso contrário, se a operação PRINCIPAL não encontrar o objeto, você poderá receber um número alto de 500 erros de servidor interno se um ou mais nós de storage não estiverem disponíveis.
Você pode definir o controle de consistência "'disponível'" para cada bucket usando a solicitação de consistência do PUT Bucket, ou você pode especificar o controle de consistência no cabeçalho da solicitação para uma operação de API individual.
Recomendações para chaves de objeto
Siga estas recomendações para nomes de chave de objeto, com base em quando o intervalo foi criado pela primeira vez.
-
Não use valores aleatórios como os primeiros quatro carateres de chaves de objeto. Isso contrasta com a antiga recomendação da AWS para prefixos-chave. Em vez disso, use prefixos não aleatórios e não exclusivos, como
image
. -
Se você seguir a antiga recomendação da AWS para usar carateres aleatórios e exclusivos em prefixos de chave, prefix as chaves de objeto com um nome de diretório. Ou seja, use este formato:
mybucket/mydir/f8e3-image3132.jpg
Em vez deste formato:
mybucket/f8e3-image3132.jpg
Não é necessário restringir nomes de chaves de objeto para atender às práticas recomendadas de desempenho. Na maioria dos casos, você pode usar valores aleatórios para os primeiros quatro carateres de nomes de chave de objeto.
Uma exceção a isso é uma carga de trabalho S3 que remove continuamente todos os objetos após um curto período de tempo. Para minimizar o impacto no desempenho desse caso de uso, varie uma parte principal do nome da chave a cada milhares de objetos com algo como a data. Por exemplo, suponha que um cliente S3 normalmente grava 2.000 objetos/segundo e que a política de ciclo de vida ILM ou bucket remove todos os objetos após três dias. Para minimizar o impactos no desempenho, você pode nomear chaves usando um padrão como este: /mybucket/mydir/yyyymmddhhmmss-random_UUID.jpg
|
Recomendações para "leituras de intervalo"
Se o "opção global para comprimir objetos armazenados" estiver ativado, os aplicativos cliente S3 devem evitar executar operações GET Object que especificem um intervalo de bytes que sejam retornados. Essas operações de leitura de intervalo são ineficientes porque o StorageGRID deve descompactar efetivamente os objetos para acessar os bytes solicitados. As operações GET Object que solicitam um pequeno intervalo de bytes de um objeto muito grande são especialmente ineficientes; por exemplo, é ineficiente ler um intervalo de 10 MB a partir de um objeto compactado de 50 GB.
Se os intervalos forem lidos a partir de objetos compatados, as solicitações do cliente podem expirar.
Se você precisar compactar objetos e seu aplicativo cliente precisar usar leituras de intervalo, aumente o tempo limite de leitura para o aplicativo. |