Pregunta

Estoy evaluando Terracotta para ayudarme a ampliar una aplicación que actualmente está limitada a la RAM.Es un filtro colaborativo y almacena alrededor de 2 kilobytes de datos por usuario.Quiero usar EC2 de Amazon, lo que significa que estoy limitado a 14 GB de RAM, lo que me da un límite superior efectivo por servidor de alrededor de 7 millones de usuarios.Necesito poder escalar más allá de esto.

Según mis lecturas hasta ahora, deduzco que Terracotta puede tener un montón agrupado mayor que la RAM disponible en cada servidor.¿Sería viable tener un montón agrupado efectivo de 30 GB o más, donde cada uno de los servidores solo admita 14 GB?

Los datos por usuario (la mayor parte de los cuales son conjuntos de flotantes) cambian con mucha frecuencia, potencialmente cientos de miles de veces por minuto.No es necesario que cada uno de estos cambios se sincronice con otros nodos del clúster en el momento en que ocurren.¿Es posible sincronizar sólo algunos campos de objetos periódicamente?

¿Fue útil?

Solución

Yo diría que la respuesta es un sí matizado.Terracotta le permite trabajar con montones agrupados de mayor tamaño que el tamaño de una única JVM, aunque ese no es el caso de uso más común.

Aún es necesario tener en cuenta a) el tamaño del conjunto de trabajo yb) la cantidad de tráfico de datos.Para a), hay un conjunto de datos que debe estar en la memoria para realizar el trabajo en un momento dado y si el tamaño del conjunto de trabajo > el tamaño del montón, el rendimiento obviamente se verá afectado.Para b), cada dato agregado/actualizado en el montón agrupado debe enviarse al servidor.La terracota es mejor cuando se cambian campos detallados en gráficos pojo.Trabajar con matrices grandes no aprovecha al máximo las capacidades de Terracotta (lo que no quiere decir que la gente no lo use de esa manera a veces).

Si está creando mucha basura, entonces los administradores de memoria de Terracotta y el recolector de basura distribuido deben poder seguir el ritmo.Es difícil decir sin intentarlo si sus volúmenes de datos exceden el ancho de banda disponible allí.

Su aplicación se beneficiará enormemente si ejecuta varios servidores y los datos están particionados por servidor o tienen cierta localidad de referencia.En ese caso, solo necesita los datos de una partición del servidor en el montón y no es necesario almacenar el resto en la memoria.Por supuesto, se producirá un error si es necesario para la conmutación por error/disponibilidad si otros servidores fallan.Lo que esto significa es que en el caso de datos particionados, no se transmite a todos los nodos, solo se envían transacciones al servidor.

Desde el punto de vista numérico, es posible indexar 30 GB de datos, por lo que no se acerca a ningún límite estricto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top