He hecho un par de años de desarrollo de servidores de juegos a gran escala en PHP. Un equilibrador de carga delega las solicitudes entrantes a un servidor en un clúster. En nombre de un mejor rendimiento, comenzamos a almacenar en caché todos los datos estáticos (esencialmente los objetos del modelo del mundo del juego) en cada una de las instancias de ese clúster, directamente en la memoria compartida de Apache, usando apc_store
y apc_fetch
.¿Qué es un buen análogo de Flask/Python/WSGI para las tiendas de memoria compartida PHP Apache como apc_store/apc_fetch?
Por una serie de razones, ahora estamos empezando a desarrollar un marco de juego similar en Python, utilizando el microframework Flask. A primera vista, la tienda de memoria de esta instancia es la única pieza que no parece traducirse directamente a Python/Flask. Actualmente estamos considerando ejecutar Memcached localmente en cada instancia (para evitar la transmisión de objetos modelo bastante grandes por cable desde nuestro clúster Memcached principal).
¿Qué podemos usar en su lugar?
Utilizo Membase centralizado para mi verdadero data store y Memcache centralizado para clave/valor efímero. Como mencioné en mi publicación, el punto es "evitar la transmisión de objetos modelo bastante grandes por cable desde nuestro clúster Memcached principal". Hacer este cambio en la memoria local en un juego anterior me dio un gran aumento de rendimiento. Todo el conjunto de datos estáticos para un juego como este tiene menos de 50 mb, por lo que el almacenamiento/carga no es un problema.Después de todo, vas a tener que sacarlo a la memoria local eventualmente; mucho mejor si está almacenado allí para comenzar :) –
La premisa básica es que los datos que deben centralizarse deben estar centralizados y los datos que pueden enviarse a los servidores de aplicaciones (es decir, datos estáticos/mundiales del juego que son apátridas e idénticos en los nodos) debe ser empujado a los servidores de aplicaciones. –
Lo siento, no puedo aceptar esta respuesta ya que ignora dos puntos importantes de mi búsqueda: [1] Solo estoy hablando de datos estáticos, y [2] ya uso Memcached centralizado. –