Tengo un sitio web que se desarrolla utilizando ASP.NET y MY DB es MySQL. Actualmente está alojado en servidores de EE. UU. Pero cuando intento acceder a él cerca de India, los contenidos dinámicos se cargan demasiado lentamente. Es aceptable ya que la solicitud tiene que ir a otro lado del mundo. En Estados Unidos es muy rápido. Ya conecté este sitio con cloudflare CDN. Pero CDN es útil para contenidos estáticos. Casi todas mis páginas tienen contenidos dinámicos.
Entonces quiero escalar este sitio web. Entonces, si una solicitud vino de Estados Unidos, quiero manejar esa solicitud del servidor de EE. UU. Y si una solicitud vino de ASIA, quiero que se maneje desde un servidor ASIAN. Pero tenga en cuenta que no importa dónde fueron redirigidos, el contenido debe ser el mismo en dos servidores. (Dos servidores deben estar sincronizados)
Entonces, ¿cómo lograr esta arquitectura?
¿Cómo google, Facebook, Yahoo hacen esto? ¿Cómo sirven en todo el mundo? Creo que tienen centros de datos en todos los continentes. ¿Cómo se sincronizan entre sí?
Hay situaciones en las que le gustaría tener:
Lamentablemente, la combinación de todo lo anterior no es físicamente posible. Estarás limitado por la velocidad de la luz.
En cambio, debe considerar sus requisitos exactos. Para algunos datos, la precisión limitada es lo suficientemente buena. Considere el contador de vistas en un video de YouTube. A la mayoría de las personas no les importa si el contador de vistas está temporalmente apagado. Si todavía no se incluyen las vistas que ocurrieron hace 10 segundos en el otro lado del mundo, pero se incluyen las vistas que ocurrieron hace 5 segundos más cerca, todavía es lo suficientemente preciso. Si está tan relajado con la integridad del contador de vistas, corre el riesgo de que dos personas diferentes puedan pensar que fueron el espectador número 100 de ese video en particular. Pero la mayoría de la gente consideraría que el daño causado por eso es insignificante.
En otros casos, la integridad de los datos es más importante. Considere dos personas que intentan registrarse simultáneamente con el mismo nombre de usuario. No es aceptable decirles a ambas personas que obtuvieron el nombre de usuario, por lo que en tal situación elegiría un enfoque más lento con mayor integridad. Es aceptable decirles a ambas personas que se tomó el nombre de usuario, por lo que un posible enfoque sería tratar de reservar el nombre de usuario en cada réplica y solo informar el éxito si tuvo éxito en más del 50% de las réplicas. No es improbable que este enfoque haga que el usuario espere medio segundo para obtener una respuesta. Pero los usuarios no pasan por este proceso con la frecuencia suficiente como para molestarse por ese retraso.
En otros casos, es posible que necesite buena integridad y actualizaciones rápidas, pero solo una persona puede actualizar esta información en particular. En ese caso, puede colocar la copia autorizada de los datos en un servidor que cree que está cerca de ese usuario, y dejar que otros servidores tengan una versión en caché, que en su mayoría está actualizada.
fuente