En los sistemas WAVE con más de un (1) servidor, todas las bases de datos del servidor formarán un "Subárbol del servidor" y se sincronizarán casi en tiempo real, dadas las restricciones de red.
¿Qué información se sincroniza entre los servidores?
- Usuarios y derechos
- Configuraciones de dispositivos (incluidas las ubicaciones de índice de archivo, pero no el archivo en sí)
- Reglas de alarmas y eventos
- Configuraciones del servidor
- Configuraciones del sistema
- Configuraciones de diseño
¿Qué información no está sincronizada?
- Información asociada con la línea de tiempo/archivo: medios (vídeo/audio grabado), pistas de auditoría, registros de eventos.
- Archivos de vídeo e índices de movimiento que residen en el disco duro físico donde se graban los medios (NAS, DAS, disco duro local o SSD).
¿Qué tipo de conexiones de red pueden sincronizar los servidores?
La sincronización funciona en CUALQUIER tipo de red: LAN, WAN o Internet. Se llevará a cabo siempre que todos los servidores en un subárbol puedan ver al menos otro servidor en un subárbol. Incluso en entornos de red críticos como los que se describen a continuación:
Conexiones unidireccionales
Si el Servidor1 puede establecer una conexión con el Servidor2, pero el Servidor2 no puede establecer una conexión con el Servidor1 (por ejemplo, debido a un firewall o NAT), aún así se establecerá una conexión y se llevará a cabo la sincronización.
Servidor1 → Servidor2
Conexiones indirectas
Por ejemplo, si hay 3 Servidores (Servidor1, Servidor2, Servidor3) en un Sistema y el Servidor1 solo puede establecer una conexión con el Servidor2, y el Servidor2 puede ver tanto el Servidor1 como el Servidor3, entonces el Servidor1 permanecerá sincronizado con el Servidor2 y el Servidor3.
Servidor1 ↔ Servidor2 ↔ Servidor3
Largas conexiones en serie
En las conexiones en serie no hay limitaciones prácticas para la longitud de las cadenas.
Servidor1 ↔ Servidor2
| |
Servidor3 ↔ Servidor4
Descripción del algoritmo de sincronización del subárbol del servidor WAVE
¿Cuándo ocurre la sincronización?
- Cada vez que un usuario del sistema realiza un cambio (por ejemplo, cambia la programación de una grabación de una sola cámara con WAVE) que resulta en un cambio en los registros sincronizados.
- Cada vez que se realiza un cambio en las configuraciones del sistema de forma autónoma (por ejemplo, un servidor se desconecta y se establece la conmutación por error de la cámara)
¿Cómo funciona la sincronización?
- El servidor genera una(s) transacción(es) y la envía a todos los servidores conectados al servidor de origen.
- Cada transacción contiene un registro de cambios.
- Una vez que un servidor envía correctamente la(s) transacción(es) a otro(s) servidor(es) del sistema, incluye los identificadores de transacción de todos los servidores a los que se envió con éxito la transacción (incluido su propia identificación de transacción). Esto garantiza que las transacciones no se enviarán al mismo servidor más de una vez, lo que minimiza el tiempo que se tarda en sincronizar todos los servidores del sistema y el ancho de banda necesario para sincronizar dicho sistema.
Por ejemplo, en una topología de red de conexión en serie con 4 servidores:
Servidor1 ---- Servidor2
| |
Servidor3 ---- Servidor4
- El usuario está conectado al Servidor 1.
- El usuario implementa un cambio en el sistema (por ejemplo, crea y guarda un nuevo diseño)
- El Servidor1 genera una transacción y la envía al Servidor2 y al Servidor3 con una identificación de transacción que incluye Servidor1, Servidor2 y Server3.
- Una vez que Servidor2 o Servidor3 recibe la transacción, no enviará una transacción al Servidor1 ya que la identificación de transacción ya incluía al Servidor1 (el Servidor donde se realizó el cambio original).
- Servidor2 y Servidor3 enviarán una transacción al Servidor4.
Posibles lagunas en el escenario anterior y cómo se abordan:
En el escenario anterior, hay un pequeña laguna. ¿Qué sucede si mientras en una transacción que va del Servidor1 a Servidor2, la conexión entre los dos servidores se pierde/interrumpe? Por ejemplo:
- La transacción se envía desde Servidor1 a Servidor2 y Servidor3 (con identificación de transacción para Servidor1, Servidor2 y Servidor3).
- La transacción se pierde entre el Servidor1 y Servidor2 pero se envía con éxito al Servidor3.
- La transacción se envía con éxito del Servidor3 al Servidor4 (con las identificaciones de transacción para Servidor1, Servidor2, Servidor3 y Servidor4).
En este ejemplo, el Servidor2 nunca obtiene la transacción a pesar de que la conexión entre Servidor4 y Servidor2 está correcta porque el Servidor4 recibe una identificación de transacción que incluye el Servidor2.
Por este motivo, tenemos mensajes de Keep Alive.
¿Qué es un mensaje de Keep Alive?
- El mensaje Keep Alive es enviado por cada servidor a cada servidor al que está conectado una vez por período de tiempo de espera.
- El mensaje Keep Alive posee registros del estado de la transacción, que contiene datos sobre la última transacción que ha recibido cada servidor.
Por lo tanto, ante el escenario anterior de la "laguna", el Servidor2 enviará un paquete de mantenimiento al Servidor3. Y el Servidor3 descubrirá posteriormente que Servidor2 posee una transacción faltante del Servidor1, lo que hace que el Servidor3 vuelva a enviar la transacción original.
Preguntas frecuentes sobre la sincronización
¿Qué protocolo se utiliza durante la sincronización?
- HTTP (modo de fragmento) con datos binarios cifrados por base64 para evitar cualquier problema de firewall.
¿Cuántos datos crea la sincronización?
En general, no mucho (por ejemplo, bits) pero depende de la topología de red en la que reside el sistema.
- Si el usuario no realiza cambios, no es necesaria la sincronización.
- Si no hay nada que sincronizar (99,999% del tiempo una vez que se ha configurado el sistema), los servidores solo se envían paquetes Keep Alive entre sí (unos pocos KB por varios segundos).
- Si un usuario realiza un cambio o ocurre un cambio autónomo en los servidores del sistema, se iniciará la sincronización y se enviarán las transacciones (unos pocos KB por transacción) cada segundo hasta que el sistema haya sido sincronizado con éxito)
¿Cuánto tiempo tarda la sincronización?
- En la mayoría de los casos, la sincronización es "instantánea", lo que significa que es casi imperceptible para los operadores humanos. En el peor de los casos, la sincronización tardará unos segundos.
¿Existe algún tiempo de espera de sincronización? ¿Los servidores se darán por vencidos si no se puede establecer una conexión con otros servidores del sistema?
- Los servidores del sistema continuarán intentando sincronizarse hasta que tengan éxito.