Vous pouvez calculer la quantité de mémoire et le nombre de partitions nécessaires pour votre configuration.
Pour adapter la taille de la mémoire à vos besoins, chargez les données d'application dans une seule JVM. Lorsque l'utilisation de segment de mémoire atteint 60 %, notez le nombre d'objets utilisés. Ce nombre correspond au nombre d'objets maximal recommandé pour chaque machines virtuelles Java. Pour obtenir la définition de taille la mieux adaptée, utilisez des données réalistes et introduisez tout index défini, car les index occupent également de la mémoire. La meilleure méthode pour dimensionner l'utilisation de la mémoire consiste à exécuter une sortie verbosegc de récupération de place, car cette sortie vous donne les valeurs après la récupération de place. Vous pouvez interroger l'utilisation du segment de mémoire à tout moment via des beans gérés ou à l'aide d'une programme, mais ces requêtes ne vous donnent qu'un cliché instantané du segment de mémoire. Ce cliché peut contenir de l'espace non récupéré. Par conséquent, cette méthode n'indique pas précisément la mémoire utilisée.
numShardsPerPartition = 1 + total_number_of_replicas
Nombre de machines virtuelles Java (valeur minNumJVMs)
Pour mettre à l'échelle votre configuration, décidez d'abord du nombre total maximal d'objets à stocker. Pour déterminer le nombre de machines virtuelles Java nécessaire, utilisez la formule suivante :minNumJVMS=(numShardsPerPartition * numObjs) / numObjsPerJVM
Arrondissez cette valeur à l'entier le plus près.Nombre de fragments (valeur numShards)
Lorsque la taille finale est atteinte, utilisez 10 fragments pour chaque JVM. Comme indiqué précédemment, chaque JVM dispose d'un fragment primaire et (N-1) fragments de réplique, soit dans ce cas, neuf répliques. Etant donné que vous disposez déjà du nombre de machines virtuelles Java pour le stockage de données, vous pouvez multiplier le nombre de machines virtuelles Java par 10 pour obtenir le nombre de fragments :numShards = minNumJVMs * 10 shards/JVM
Nombre de partitions
Si une partition dispose déjà d'un fragment primaire et d'un fragment réplique, cette partition a donc deux fragments (le primaire et le réplique). Le nombre de partitions correspond au nombre de fragments divisé par 2 et arrondi au nombre premier le plus proche. Si la partition présente un fragment primaire et deux secondaires, le nombre de partitions correspond au nombre de fragments divisé par 3 et arrondi au nombre premier le plus proche.numPartitions = numShards / numShardsPerPartition
Début de la configuration
A partir des calculs précédents, démarrez avec 250 machines virtuelles Java pour atteindre 500 machines virtuelles Java en cinq ans. Avec cette configuration, vous pouvez gérer la croissance incrémentielle jusqu'à ce que vous accédiez au nombre d'entrées final.Dans cette configuration, environ 200 000 entrées sont stockées par partition (500 millions d'entrées divisées par 2 503 partitions). Dans la mappe qui contient les entrées, affectez au paramètre numberOfBuckets le nombre premier le plus proche, soit 70 887 dans l'exemple, ce qui maintient le rapport autour de trois.
Le nombre maximal de machines virtuelles Java est atteint
Lorsque vous atteignez le nombre maximal de 500 machines virtuelles Java, vous pouvez toujours agrandir votre grille de données. Lorsque le nombre de machines virtuelles Java dépasse le nombre maximal de 500, le nombre de fragments commence à tomber en dessous de 10 pour chaque JVM, ce qui est inférieur au nombre recommandé. La taille des fragments augmente et risque d'entraîner des problèmes. Répétez le processus de dimensionnement en tenant compte de la croissance future de nouveau et redéfinissez le nombre de partitions. Cela requiert un redémarrage de la grille de données complète ou une indisponibilité de votre grille de données.