2012-04-25 18 views
6

Actualmente estoy haciendo un juego de ajedrez multijugador en línea. Me preguntaba si sería apropiado para los usuarios desencadenantes para iniciar sesión en cada movimiento.Mysql: cuándo utilizar los desencadenantes

Luego, usando nodejs, verificaría repetitivamente la tabla de activación y actualizaría la visualización para los observadores de los jugadores &.

Como solo necesito hacer cambios en la base de datos, el aspecto visual se realizará de forma automática (utilizando la función recurrente para verificar los datos modificados en la base de datos). El objetivo de esto sería separar los elementos visuales de la lógica involucrada para hacer el juego.

¿Alguno de ustedes recomendaría esta técnica o es simplemente un no ir?

Respuesta

6

Describe una posible solución técnica para su tarea. Pero recomiendo NO hacerlo.

Esto no se escalará muy bien: agrega mucha sobrecarga y carga a su base de datos y servidor de aplicaciones.

Hay otras posibilidades ligeros que escalan mucho mejor:

  • uso de una cola de mensajes similares (por ejemplo) redis con el cliente node_redis. Tiene semántica incorporada pubsub.
  • Resuma sus llamadas a la base de datos y envíe todas las actualizaciones de la base de datos a la cola de mensajes, también.
  • en lugar de usar una función "recurrente" (encuesta AJAX) para obtener actualizaciones de estado, puede usar un transmisor HTTP como jquery-stream o jquery-socket por ejemplo. Esto evita la sobrecarga de abrir una nueva conexión HTTP para cada actualización de cliente.
  • utiliza las características de evento-driven de nodejs en el lado del servidor para enviar nuevos eventos a la conexión del cliente.
+0

Olvidé mencionar que estoy usando nowJS (biblioteca de socket). Al usar esto, el único grupo que se está produciendo será el servidor que lo hace dos veces por segundo para buscar actualizaciones. Una vez que se encuentre una actualización, se enviará a todos los usuarios a través de una solicitud de socket. Incluso si finalmente hay miles de usuarios, la base de datos seguirá siendo agrupada a la misma velocidad, solo por el servidor. ¿Influirá esto en su recomendación? Gracias por tu ayuda. – Louis

+0

@Louis todavía tendrá la carga (evitable) en el servidor de base de datos y el sistema de archivos. – Kaii

+0

¿Qué solución recomendaría a alguien que no utiliza Node.js, sino PHP? –