Puede calcular la cantidad de memoria y particiones necesarias para la configuración específica.
Para calcular el tamaño de la memoria necesaria, cargue los datos de aplicación en una sola JVM . Cuando el uso del almacenamiento dinámico alcanza el 60%, anote el número de objetos que se utilizan. Este número máximo de objetos recomendado para cada una de las Mäquinas virtuales Java. Para obtener el tamaño más preciso, utilice datos realistas e incluya todos los índices definidos en el tamaño porque los índices también consumen memoria. El mejor forma de dimensionar el uso de memoria es ejecutar la salida verbosegc de la recogida de basura, ya que esta salida le proporciona los números después de la recogida. Puede consultar el uso del almacenamiento dinámico en cualquier momento mediante los MBeans o mediante programación, pero estas consultas le proporcionan solo una instantánea actual del almacenamiento dinámico. Es posible que esta instantánea incluya basura sin recoger, así que la utilización de ese método no es una indicación precisa de la memoria consumida.
numShardsPerPartition = 1 + número_total_de_réplicas
Número de Mäquinas virtuales Java (valor minNumJVMs)
Para dimensionar la configuración, primero decida sobre el número máximo de objetos que es necesario almacenar en total. Para determinar el número de Mäquinas virtuales Java que necesita, utilice la siguiente fórmula:minNumJVMS=(numShardsPerPartition * numObjs) / numObjsPerJVM
Redondee este valor al valor entero más cercano. Número de fragmentos (valor de numShards)
En el tamaño de crecimiento final, utilice 10 fragmentos para cada JVM . Como se ha descrito anteriormente, cada JVM tiene un fragmento primario y (N-1) fragmentos para las réplicas o, en este caso, nuevo réplicas. Puesto que ya tiene un número de Mäquinas virtuales Java para almacenar los datos, puede multiplicar el número de Mäquinas virtuales Java por 10 para determinar el número de fragmentos:numShards = minNumJVMs * 10 shards/JVM
Número de particiones
Si una partición tiene un fragmento primario y un fragmento de réplica, la partición tiene dos fragmentos (primario y réplica). El número particiones es el total de fragmentos dividido por 2, redondeado por arriba hasta el número primo más cercano. Si la partición tiene un fragmento primario y dos réplicas, el número de particiones es el total de fragmentos dividido por 3, redondeado por arriba hasta el número primo más cercano.numPartitions = numShards / numShardsPerPartition
Inicio de la configuración
En función de los cálculos anteriores, empiece con 250 Mäquinas virtuales Java y vaya creciendo hacia 500 Mäquinas virtuales Java a lo largo de cinco años. Con esta configuración, puede gestionar el crecimiento incremental hasta que llegue al número final de entradas.En esta configuración, se almacenan aproximadamente 200.000 entradas por partición (500 millones de entradas divididas entre 2503 particiones). Establezca el parámetro numberOfBuckets en la correlación que aloja las entradas en el número primo más alto más cercano, en este ejemplo 70887, lo que mantiene la proporción en 3 aproximadamente.
Cuando se alcanza el máximo número de Mäquinas virtuales Java
Cuando llegue al número máximo de 500 Mäquinas virtuales Java, aún podrá seguir aumentando el tamaño de la cuadrícula de datos. Como el número de Mäquinas virtuales Java aumentas hasta superar 500, el total de fragmentos empieza a caer por debajo de 10 para cada JVM , que está por debajo del número recomendado. Los fragmentos empiezan a crecer, lo que puede causar problemas. Repita el proceso de dimensionamiento considerando de nuevo el crecimiento futuro, y restablezca el recuento de particiones. Éste método requiere un reinicio completo o una interrupción de la cuadrícula de datos.