Pregunta

Vamos a decir que tengo una aplicación que está garantizado para abrumar un servidor incluso después de optimizaciones. ¿Existe una tecnología que permite a una aplicación web para ser dividido en varios servidores, manteniendo su estado?

Tomemos por ejemplo un reproductor de juego en línea múltiple. Por lo general, en las embarcaciones de la Guerra Mundial hay varios servidores con cada una de ellas con su propio estado del juego. Lo que estoy buscando es algo que permitiría a este estado del juego para ser compartido entre varios servidores.

EDIT: La plataforma realmente no importa ya que se trata de una aplicación web, por lo tanto el backend no importa mucho. Sin embargo, los carriles y Java son posibilidades.

Además, WoW fue sólo un ejemplo, sólo estoy interesado en esta tecnología; un gran juego sería una aplicación buena para él.

¿Fue útil?

Solución

En realidad no hay nada de baja latencia, alto rendimiento aplicaciones en memoria como en tiempo real los juegos en línea, por lo menos no como una pieza de middleware arbitraria.

Proyecto Darkstar hizo un intento admirable en este en el lado de la usabilidad y la complejidad, pero se encontró (como era de esperar) que no iba a reducir.

En última instancia se trata de un problema difícil (aunque no insuperable), donde no hay una solución que está cerca de ser de aplicación universal. En particular, es probable que tenga un equilibrio, entre la necesidad de actuar sobre los datos del juego rancio, por un lado contra la necesidad de intercambiar constantemente los datos compartidos en el otro lado. La falta de crecimiento exponencial corrección frente a la complejidad ... escoger su veneno.

Es digno de mención - especialmente si su dominio de aplicación no es juegos en tiempo real - que a menudo no le importa si se está trabajando con datos obsoletos, siempre y cuando se hace lo suficientemente pronto correcta. En tales casos, los sistemas de almacenamiento en caché simples como Memcache son grandes. Del mismo modo, si necesita más corrección, pero no tienen que preocuparse por el rendimiento tanto, algo así como Hazelcast (mencionado en otra respuesta) puede ser grande, pero para la mayoría de los juegos en línea que son lo suficientemente grandes como para requerir balanceo de carga "miles de operaciones / sec" no es sólo lo suficientemente bueno.

Algunos tecnología MMO hace algún intento de distribuir la aplicación al dividir geográficamente, lo que significa que no hay realmente mucho compartida estado en absoluto, y que requiere este esquema a tener sentido en el mundo del juego y la ficción.

Otro enfoque consiste en dividirla por el servicio, y poner en práctica la mayoría de los servicios con su enfoque preferido RPC off-the-shelf. Esto le permite escalar fácilmente si sus servicios son independientes, pero las dependencias entre los servicios le sitúa a la derecha detrás en un cuadrado.

Otros consejos

Tener un vistazo a Hazelcast . Es de código abierto, la plataforma de distribución de datos altamente escalable para Java. ofertas Hazelcast distribuidos mapa, que será compartido entre los miembros del clúster. se puede fácilmente almacenar sus datos en el mismo. Es super super fácil de usar. Sólo tiene que añadir hazelcast.jar a la ruta de clases. No es necesario instalar ningún servidor.

Microsoft HPC , no para juegos sin embargo. Bastante fácil de configurar y de utilizar.

Usted no menciona su plataforma. Para Java hay terracota

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