Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Dimensionamento del cluster DAX
La capacità e la disponibilità totali di un DAX cluster dipendono dal tipo e dal numero di nodi. Un numero maggiore di nodi nel cluster ne aumenta la capacità di lettura, ma non la capacità di scrittura. I tipi di nodi più grandi (fino a r5.8xlarge) possono gestire più scritture, ma un numero troppo basso di nodi può influire sulla disponibilità in caso di guasto del nodo. Per ulteriori informazioni sul dimensionamento del cluster, consulta. DAX DAXguida al dimensionamento dei cluster
Nelle sezioni seguenti vengono descritti i diversi aspetti di dimensionamento da prendere in considerazione per bilanciare il tipo di nodo e il numero di nodi per creare un cluster scalabile ed economico.
In questa sezione
- Pianificazione della disponibilità
- Pianificazione del throughput di scrittura
- Pianificazione, velocità di lettura
- Pianificazione delle dimensioni del set di dati
- Calcolo dei requisiti approssimativi di capacità del cluster
- Approssimazione della capacità di throughput del cluster per tipo di nodo
- Scalabilità della capacità di scrittura nei cluster DAX
Pianificazione della disponibilità
Quando si ridimensiona un DAX cluster, è necessario innanzitutto concentrarsi sulla sua disponibilità mirata. La disponibilità di un servizio in cluster, ad esempioDAX, è una dimensione del numero totale di nodi del cluster. Poiché un cluster a nodo singolo non ha alcuna tolleranza agli errori, la sua disponibilità è pari a un nodo. In un cluster a 10 nodi, la perdita di un singolo nodo ha un impatto minimo sulla capacità complessiva del cluster. Questa perdita non ha un impatto diretto sulla disponibilità perché i nodi rimanenti possono ancora soddisfare le richieste di lettura. Per riprendere le scritture, nomina DAX rapidamente un nuovo nodo primario.
DAXè VPC basato. Utilizza un gruppo di sottoreti per determinare in quali zone di disponibilità
Pianificazione del throughput di scrittura
Tutti i DAX cluster dispongono di un nodo primario per le richieste di scrittura. La dimensione del tipo di nodo per il cluster determina la sua capacità di scrittura. L'aggiunta di repliche di lettura aggiuntive non aumenta la capacità di scrittura del cluster. Pertanto, è necessario considerare la capacità di scrittura durante la creazione del cluster perché non è possibile modificare il tipo di nodo in un secondo momento.
Se l'applicazione necessita della procedura di scrittura DAX per aggiornare la cache degli elementi, prendete in considerazione un maggiore utilizzo delle risorse del cluster per facilitare la scrittura. Le operazioni di scrittura su DAX utilizzano circa 25 volte più risorse rispetto alle operazioni di lettura eseguite tramite cache-hit. Ciò potrebbe richiedere un tipo di nodo più grande rispetto ai cluster di sola lettura.
Per ulteriori indicazioni su come determinare se la scrittura tramite scrittura o scrittura sia la soluzione migliore per l'applicazione in uso, consulta. Strategie di scrittura
Pianificazione, velocità di lettura
La capacità di lettura di un DAX cluster dipende dal rapporto di accesso alla cache del carico di lavoro. Poiché DAX legge i dati da DynamoDB quando si verifica un errore nella cache, consuma circa 10 volte più risorse del cluster rispetto a un problema di cache. Per aumentare gli accessi alla cache, aumenta l'TTLimpostazione della cache per definire il periodo per il quale un elemento viene archiviato nella cache. Una TTL durata maggiore, tuttavia, aumenta la possibilità di leggere versioni precedenti degli elementi, a meno che gli aggiornamenti non vengano scrittiDAX.
Per assicurarti che il cluster abbia una capacità di lettura sufficiente, ridimensiona il cluster orizzontalmente come indicato inRidimensionamento orizzontale di un cluster. L'aggiunta di altri nodi aggiunge repliche di lettura al pool di risorse, mentre la rimozione dei nodi riduce la capacità di lettura. Quando selezioni il numero di nodi e le relative dimensioni per un cluster, considera sia la quantità minima che quella massima di capacità di lettura necessaria. Se non riesci a scalare orizzontalmente un cluster con tipi di nodi più piccoli per soddisfare i requisiti di lettura, utilizza un tipo di nodo più grande.
Pianificazione delle dimensioni del set di dati
Ogni tipo di nodo disponibile ha una dimensione di memoria impostata DAX per la memorizzazione dei dati nella cache. Se un tipo di nodo è troppo piccolo, il set di dati di lavoro richiesto da un'applicazione non entrerà in memoria e la cache non sarà disponibile. Poiché i nodi più grandi supportano cache più grandi, utilizzate un tipo di nodo più grande del set di dati stimato da inserire nella cache. Una cache più grande migliora anche il rapporto di accessi alla cache.
Potresti ottenere rendimenti decrescenti per gli elementi memorizzati nella cache con poche letture ripetute. Calcola la dimensione della memoria per gli elementi a cui si accede di frequente e assicurati che la cache sia sufficientemente grande da memorizzare quel set di dati.
Calcolo dei requisiti approssimativi di capacità del cluster
Puoi stimare le esigenze di capacità totale del tuo carico di lavoro per aiutarti a selezionare la dimensione e la quantità appropriate di nodi del cluster. Per eseguire questa stima, calcola la variabile normalizzata richiesta al secondo (Normalizzata). RPS Questa variabile rappresenta le unità di lavoro totali che l'applicazione richiede al DAX cluster per supportare, inclusi accessi alla cache, errori di cache e scritture. Per calcolare il valore NormalizzatoRPS, utilizzate i seguenti input:
-
ReadRPS_CacheHit
— specifica il numero di letture al secondo che provocano un accesso alla cache. -
ReadRPS_CacheMiss
— specifica il numero di letture al secondo che provocano un errore nella cache. -
WriteRPS
— specifica il numero di scritture al secondo che verranno eseguite. DAX -
DaxNodeCount
— specifica il numero di nodi nel DAX cluster. -
Size
— specifica la dimensione dell'elemento da scrivere o leggere in KB, arrotondata per eccesso al KB più vicino. -
10x_ReadMissFactor
— Rappresenta un valore di 10. Quando si verifica un errore nella cache, DAX utilizza circa 10 volte più risorse rispetto agli accessi alla cache. -
25x_WriteFactor
— Rappresenta un valore pari a 25 perché una procedura di DAX scrittura utilizza circa 25 volte più risorse rispetto agli accessi alla cache.
Utilizzando la formula seguente, è possibile calcolare il valore Normalizzato. RPS
Normalized RPS = (ReadRPS_CacheHit * Size) + (ReadRPS_CacheMiss * Size * 10x_ReadMissFactor) + (WriteRequestRate * 25x_WriteFactor * Size * DaxNodeCount)
Ad esempio, considera i seguenti valori di input:
-
ReadRPS_CacheHit
= 50.000 -
ReadRPS_CacheMiss
= 1.000 -
ReadMissFactor
= 1 -
Size
= 2 KB -
WriteRPS
= 100 -
WriteFactor
= 1 -
DaxNodeCount
= 3
Sostituendo questi valori nella formula, è possibile calcolare il Normalizzato RPS come segue.
Normalized RPS = (50,000 Cache Hits/Sec * 2KB) + (1,000 Cache Misses/Sec * 2KB * 10) + (100 Writes/Sec * 25 * 2KB * 3)
In questo esempio, il valore calcolato di RPS Normalized è 135.000. Tuttavia, questo RPS valore normalizzato non tiene conto del mantenimento dell'utilizzo del cluster al di sotto del 100% o della perdita di nodi. Si consiglia di tenere conto della capacità aggiuntiva. A tale scopo, determina il maggiore dei due fattori di moltiplicazione: l'utilizzo del target o la tolleranza alla perdita dei nodi. Quindi, moltiplica Normalizzato RPS per il fattore maggiore per ottenere una richiesta target al secondo (Target). RPS
-
Utilizzo dell'obiettivo
Poiché gli impatti sulle prestazioni aumentano gli errori di cache, non è consigliabile eseguire il DAX cluster al 100% di utilizzo. Idealmente, è consigliabile mantenere l'utilizzo del cluster pari o inferiore al 70%. Per ottenere ciò, moltiplica il valore Normalizzato per 1,43. RPS
-
Tolleranza alla perdita dei nodi
Se un nodo si guasta, l'applicazione deve essere in grado di distribuire le richieste tra i nodi rimanenti. Per assicurarti che i nodi rimangano al di sotto del 100% di utilizzo, scegli un tipo di nodo sufficientemente grande da assorbire traffico aggiuntivo fino a quando il nodo guasto non torna online. Per un cluster con meno nodi, ogni nodo deve tollerare aumenti di traffico maggiori in caso di guasto di un nodo.
In caso di guasto di un nodo primario, DAX viene eseguito automaticamente il failover su una replica di lettura e la designa come nuova replica principale. In caso di guasto di un nodo di replica, gli altri nodi del DAX cluster possono ancora soddisfare le richieste fino al ripristino del nodo guasto.
Ad esempio, un DAX cluster a 3 nodi con un errore di nodo richiede una capacità aggiuntiva del 50% sui due nodi rimanenti. Ciò richiede un fattore di moltiplicazione pari a 1,5. Al contrario, un cluster a 11 nodi con un nodo guasto richiede una capacità aggiuntiva del 10% sui nodi rimanenti o un fattore moltiplicatore di 1,1.
Utilizzando la formula seguente, è possibile calcolare il Target. RPS
Target RPS = Normalized RPS * CEILING(TargetUtilization, NodeLossTolerance)
Ad esempio, per calcolare TargetRPS, considera i seguenti valori:
-
Normalized RPS
= 135.000 -
TargetUtilization
= 1,43Poiché miriamo a un utilizzo massimo del cluster del 70%, l'impostazione
TargetUtilization
è 1.43. -
NodeLossTolerance
= 1,5Supponiamo di utilizzare un cluster a 3 nodi, quindi impostiamo una
NodeLossTolerance
capacità del 50%.
Sostituendo questi valori nella formula, puoi calcolare il Target come RPS segue.
Target RPS = 135,000 * CEILING(1.43, 1.5)
In questo esempio, poiché il valore di NodeLossTolerance
è maggiore diTargetUtilization
, calcoliamo il valore di Target RPS con. NodeLossTolerance
Questo ci dà un Target RPS di 202.500, che è la quantità totale di capacità che il DAX cluster deve supportare. Per determinare il numero di nodi necessari in un cluster, RPS associa Target a una colonna appropriata nella tabella seguente. Per questo esempio di Target RPS di 202.500, è necessario il tipo di nodo dax.r5.large con tre nodi.
Approssimazione della capacità di throughput del cluster per tipo di nodo
UtilizzandoTarget RPS formula, è possibile stimare la capacità del cluster per diversi tipi di nodi. La tabella seguente mostra le capacità approssimative per i cluster con 1, 3, 5 e 11 tipi di nodi. Queste capacità non sostituiscono la necessità di eseguire test di carico DAX con modelli di dati e richieste personalizzati. Inoltre, queste capacità non includono le istanze di tipo t a causa della mancanza di capacità fissa. CPU L'unità per tutti i valori nella tabella seguente è Normalizzata. RPS
Tipo di nodo (memoria) | 1 nodo | 3 nodi | 5 nodi | 11 nodi |
---|---|---|---|---|
dax.r5.24xlarge (768 GB) | 1 M | 3 M | 5 M | 11 M |
dax.r5.16xlarge (512 GB) | 1 M | 3 M | 5 M | 11 M |
dax.r5.12 xlarge (384 GB) | 1 M | 3 M | 5 M | 11 M |
dax.r5.8xlarge (256 GB) | 1 M | 3 M | 5 M | 11 M |
dax.r5.4xlarge (128 GB) | 600 k | 1,8 M | 3 M | 6,6 M |
dax.r5.2xlarge (64 GB) | 300 k | 900 k | 1,5 M | 3,3 M |
dax.r5.xlarge (32 GB) | 150 k | 450 k | 750 k | 1,65 M |
dax.r5.large (16 GB) | 75 k | 225 k | 375 k | 825 k |
A causa del limite massimo di 1 milione NPS (operazioni di rete al secondo) per ogni nodo, i nodi di tipo dax.r5.8xlarge o superiore non forniscono ulteriore capacità del cluster. I tipi di nodi più grandi di 8xlarge potrebbero non contribuire alla capacità di throughput totale del cluster. Tuttavia, questi tipi di nodi possono essere utili per archiviare in memoria un set di dati di lavoro più ampio.
Scalabilità della capacità di scrittura nei cluster DAX
Ogni scrittura su DAX consuma 25 richieste normalizzate su ogni nodo. Poiché esiste un RPS limite di 1 milione per nodo, un DAX cluster è limitato a 40.000 scritture al secondo, senza contare l'utilizzo di lettura.
Se il tuo caso d'uso richiede più di 40.000 scritture al secondo nella cache, devi utilizzare DAX cluster separati e suddividere le scritture tra di essi. Analogamente a DynamoDB, puoi eseguire l'hash della chiave di partizione per i dati che stai scrivendo nella cache. Quindi, usa modulus per determinare su quale shard scrivere i dati.
L'esempio seguente calcola l'hash di una stringa di input. Quindi calcola il modulo del valore hash con 10.
def hash_modulo(input_string): # Compute the hash of the input string hash_value = hash(input_string) # Compute the modulus of the hash value with 10 bucket_number = hash_value % 10 return bucket_number #Example usage if _name_ == "_main_": input_string = input("Enter a string: ") result = hash_modulo(input_string) print(f"The hash modulo 10 of '{input_string}' is: {result}.")