Estamos implementando un código en nuestra página de inicio que depende de una búsqueda de geoip para cada vistor único y tenemos la opción de consultar un servicio web de geodatos (Maxmind) o descargar la base de datos y consultarla localmente. El servidor es actualmente una instancia de Linode de 512 MB y solo recibe alrededor de 1500 únicos por día, sin embargo, nos preocupa lo que sucederá durante un pico de tráfico.¿Cómo consultar una API web remota contra una base de datos MySQL local durante un pico de tráfico?
Está claro para mí que la búsqueda local sería más rápida, pero seguramente bajo carga golpear la base de datos sería mucho más RAM/CPU que procesar una solicitud http adicional. Obviamente, la actualización de la memoria de los servidores se logra fácilmente si ir localmente es la mejor ruta. Me imagino que a través de una cierta cantidad de conexiones por segundo, es más probable que el servidor no esté disponible consultando su base de datos local que una API web (asumiendo por supuesto que los servidores de API web pueden manejar las solicitudes http).
Cualquier contribución sobre qué solución sería la solución más robusta a largo plazo para manejar la ocasional inundación del tráfico sin denegación de servicio sería muy apreciada.
EDITAR: Solo para intentar cuantificar esto un poco más, digamos que el servidor necesitaría poder manejar hasta 200 conexiones por segundo. Cada conexión requiere una única consulta DB o una solicitud http.
¿Alguien siente que esto es más adecuado para serverfault? No estaba seguro de dónde encajaría mejor. – Michelle
Voy con el servicio web. –
No llamaría a la red io sobre http una manera ligera de trabajar fuera de la granja. Identificación se sorprenderá si no fuera mucho más caro que simplemente buscarlo localmente. las bases de datos pueden ser muy muy eficientes. – goat