Raccomandazioni per l'implementazione dell'API REST S3
Seguire questi consigli quando si implementa l'API REST S3 per l'utilizzo con StorageGRID.
Raccomandazioni per la gestione di oggetti inesistenti
Se l'applicazione verifica regolarmente l'esistenza di un oggetto in un percorso in cui non si prevede l'effettiva esistenza dell'oggetto, utilizzare il controllo di coerenza “Available”. Ad esempio, è necessario utilizzare il controllo di coerenza “Available” se l'applicazione dirige una posizione prima DI INSERIRVI.
In caso contrario, se l'operazione HEAD non trova l'oggetto, potrebbe essere visualizzato un numero elevato di errori 500 nel server interno se uno o più nodi di storage non sono disponibili.
È possibile impostare il controllo di coerenza “Available” per ciascun bucket utilizzando LA richiesta di coerenza PUT bucket oppure specificare il controllo di coerenza nell'intestazione della richiesta per una singola operazione API.
Raccomandazioni per le chiavi a oggetti
Seguire questi consigli per i nomi delle chiavi degli oggetti, in base alla prima volta che il bucket è stato creato.
-
Non utilizzare valori casuali come primi quattro caratteri delle chiavi oggetto. Ciò è in contrasto con la precedente raccomandazione AWS per i prefissi principali. Utilizzare invece prefissi non casuali e non univoci, ad esempio
image
. -
Se si segue la precedente raccomandazione AWS per utilizzare caratteri casuali e univoci nei prefissi delle chiavi, inserire un prefisso tra le chiavi degli oggetti e il nome della directory. Ovvero, utilizzare questo formato:
mybucket/mydir/f8e3-image3132.jpg
Invece di questo formato:
mybucket/f8e3-image3132.jpg
Non è necessario limitare i nomi delle chiavi degli oggetti per soddisfare le Best practice di performance. Nella maggior parte dei casi, è possibile utilizzare valori casuali per i primi quattro caratteri dei nomi delle chiavi degli oggetti.
Un'eccezione è rappresentata da un carico di lavoro S3 che rimuove continuamente tutti gli oggetti dopo un breve periodo di tempo. Per ridurre al minimo l'impatto delle performance per questo caso d'utilizzo, modificare una parte iniziale del nome della chiave ogni diverse migliaia di oggetti con qualcosa di simile alla data. Si supponga, ad esempio, che un client S3 scriva in genere 2,000 oggetti al secondo e che il criterio del ciclo di vita di ILM o bucket rimuova tutti gli oggetti dopo tre giorni. Per ridurre al minimo l'impatto delle performance, è possibile assegnare un nome alle chiavi utilizzando un modello come questo: /mybucket/mydir/yyyymmddhhmmss-random_UUID.jpg
|
Raccomandazioni per “range reads”
Se il "opzione globale per comprimere gli oggetti memorizzati" È attivato, le applicazioni client S3 dovrebbero evitare di eseguire operazioni GET Object che specificano un intervallo di byte da restituire. Queste operazioni “range Read” sono inefficienti perché StorageGRID deve decomprimere efficacemente gli oggetti per accedere ai byte richiesti. LE operazioni GET Object che richiedono un piccolo intervallo di byte da un oggetto molto grande sono particolarmente inefficienti; ad esempio, è inefficiente leggere un intervallo di 10 MB da un oggetto compresso da 50 GB.
Se gli intervalli vengono letti da oggetti compressi, le richieste del client possono scadere.
Se è necessario comprimere gli oggetti e l'applicazione client deve utilizzare le letture dell'intervallo, aumentare il timeout di lettura per l'applicazione. |