Nuestros servidores web (IIS 10) comparten una base de datos común (SQL Server 2016). Sondean algunos datos de la base de datos a intervalos regulares. Cuando uno de los servidores web procesa una solicitud que conduce a un cambio en esos datos, actualizará la base de datos y sus propios datos. Pero las otras instancias del servidor web no conocen este cambio de datos, por lo que tienen datos antiguos hasta la próxima encuesta.
¿Cómo deberíamos indicar a las otras instancias del servidor web que actualicen sus datos al instante?
Ejemplo:
- La tabla de base de datos tblUserRoles almacena todos los roles de todos los usuarios.
- Los servidores web sondean esta lista una vez al día.
- Cuando el administrador revoca los derechos de un usuario, el servidor web que procesa la solicitud sabe que debe actualizar la base de datos y su propia UserRoleList inmediatamente.
- Pero, ¿cómo saben los otros servidores web que deben actualizar su UserRoleList?
Solución posible:
- Un servicio interno mantiene una lista de todas las instancias de servidor web activas.
- Cuando un servidor web [A] procesa una solicitud que cambia los datos, actualiza la base de datos, actualiza su propia lista de datos y solicita la lista de servidores activos [BZ].
- El servidor web A invoca la actualización de la lista de datos para los servidores BZ llamando a cada uno de ellos mediante una URL interna (por ejemplo, /internal/update-user-roles)
- Los servidores BZ ahora actualizan sus datos sondeando datos de la base de datos.