Las aplicaciones de hoy en día son altamente transaccionales y pueden escalar para transacciones altas al ejecutarse en una implementación de varios servidores con equilibrio de carga. Al mismo tiempo, muchas de estas aplicaciones deben ejecutarse en varios centros de datos. Esto podría hacerse para la recuperación ante desastres, donde un centro de datos activo tiene recuperación ante desastres como un centro de datos pasivo que generalmente se encuentra en una ubicación geográfica diferente. Otra razón es que si los usuarios de esta aplicación están distribuidos geográficamente, obtendrán tiempos de respuesta más rápidos ya que acceden simultáneamente a su propio centro de datos en su región.
NCache Detalles Puente para replicación WAN NCache Docs
La caché necesita replicación WAN al igual que la base de datos
Cuando tiene aplicaciones que se ejecutan en varios centros de datos, es necesario replicar la memoria caché. Esto se debe a que la memoria caché guarda datos transitorios y, si alguna vez se cae, los datos se pierden. Los datos transitorios pueden ser sesiones de ASP.NET, datos arbitrarios generados por su aplicación o datos agregados. Sin embargo, los datos temporales no son permanentes, por lo que nunca se almacenan en la base de datos, solo se almacenan en caché.
los otros datos NCache mantiene por razones de rendimiento son los datos de la aplicación. Si pierde estos datos, se recargan desde la base de datos, lo que perjudica el rendimiento. Muchas empresas no quieren lidiar con esto debido al alto tráfico de aplicaciones.. Esta es la razón por la que incluso los datos de la aplicación deben replicarse en la WAN si tiene una implementación de varios centros de datos.
NCache Detalles Replicación WAN NCache Docs
Solución: NCache Replicación WAN a través de Bridge
Para hacer frente a la situación anterior, NCache proporciona una función de replicación de WAN a través de un puente. Esto le permite implementar NCache en varios centros de datos en configuraciones activo-pasivo, activo-activo, más de 3 centros de datos activo-activo.
2 sitios activo-pasivo
En una configuración activo-pasivo, NCache se implementa en sitios activos y pasivos, creando una topología de puente en el sitio activo. La Figura 1 muestra cómo se presenta esto en una configuración activo-pasivo. Todas las actualizaciones de aplicaciones se envían desde la memoria caché del sitio activo al puente, que las envía de forma asíncrona al sitio pasivo en milisegundos. El único retraso aquí es la latencia entre los centros de datos si están muy separados. Entonces, una topología de puente con un mecanismo de cola asíncrono permite que todas estas actualizaciones sucedan sin desbordar nada.
NCache Detalles Modos de sincronización de caché NCache Docs
2 sitios activo-activo
Otra configuración que NCache support es activo-activo, donde ambos sitios están activos. Uno contiene la topología de caché y puente, y el otro solo contiene el caché. La figura 2 muestra cómo se hace esto. Similar a activo-pasivo, en activo-activo, un caché envía sus actualizaciones al puente, que a su vez las envía a otros cachés. Sin embargo, ahora hay una diferencia. Pueden producirse conflictos cuando el mismo elemento se actualiza en ambos lados al mismo tiempo. Esto significa que el puente debe coordinar las actualizaciones de ambos sitios y resolver los conflictos de forma asíncrona para evitar un impacto negativo en el rendimiento de la memoria caché en cada sitio activo.
NCache Detalles Replicación WAN de varios centros de datos NCache Docs
3+ Sitio Activo-Activo
En la tercera situación, hay 3 o más centros de datos activos. Aquí uno de los sitios activos tiene caché y puente, todos los demás sitios solo tienen caché. Es decir, el puente es local para uno de los sitios, pero los otros dos sitios acceden al puente de forma remota. Similar al escenario activo-activo, en este escenario 3+ activo-activo, todos los cachés envían actualizaciones al puente y el puente propaga actualizaciones a todos los cachés conectados. Al mismo tiempo, realiza la resolución de conflictos para garantizar que los mismos datos actualizados desde la memoria caché no provoquen violaciones de la integridad de los datos.
NCache Detalles Topología de puente NCache Docs
La figura 3 muestra tres centros de datos activo-activo. NCache permite una replicación de caché muy fluida y asíncrona. No hay cambios en el código de la aplicación. Las aplicaciones ni siquiera saben que la memoria caché se está replicando, pero se replica de forma asíncrona a través de la WAN del centro de datos.
Replicación de WAN asíncrona en masa y en paralelo
Todas las actualizaciones de la memoria caché son asíncronas. La razón por la que son asíncronos es la distancia entre varios centros de datos. Esta distancia puede provocar un rendimiento deficiente debido a la latencia. Los tiempos de acceso entre servidores son muy rápidos cuando las aplicaciones se almacenan en caché en el mismo centro de datos. Pero sobre una WAN, por lo general es muy lento. Por lo tanto, si no realiza actualizaciones asincrónicas, la persona que realiza la solicitud de actualización tiene que esperar a que se complete la actualización: actualizaciones sincrónicas, lo que ralentiza su aplicación.
Sin embargo, la replicación asíncrona significa que las aplicaciones y los cachés en cada sitio no esperan que sus datos se repliquen en otros centros de datos. Los datos se ponen en cola en el puente. El puente en sí es un clúster de dos nodos, que pone en cola todas las solicitudes de actualización de todos los cachés. Para activo-pasivo, las solicitudes son En cola solo desde la memoria caché activa y se aplica de forma asíncrona a la memoria caché pasiva. Si tiene tres o más centros de datos, el puente aplica actualizaciones a varios sitios activos en paralelo.
Además, el puente realiza actualizaciones masivas. Esto significa que puede combinar varios elementos de datos en una sola solicitud y enviarlos a otros sitios como una sola solicitud masiva, lo que reduce en gran medida los viajes de red. Por lo tanto, esta poderosa combinación de replicación paralela, masiva y asíncrona mejora el rendimiento al replicar cachés en múltiples centros de datos.
NCache Detalles Topología de replicación de WAN NCache Docs
Resolución de conflictos
Si tiene varios sitios activos, cada uno de esos sitios puede actualizar los mismos datos al mismo tiempo. Asegúrese de que su computadora local esté sincronizada con la zona horaria local. Eso sí, no hay problema si no se actualiza al mismo tiempo. Suponga que actualiza el elemento 1 en el momento T1 y actualiza el elemento 2 en el momento T2. La actualización en el tiempo T2 es la última actualización aplicada. Sin embargo, si ambas actualizaciones ocurren al mismo tiempo, el puente debe resolver el conflicto de una de dos maneras.
-
Lógica predeterminada de "Última actualización gana": El puente recupera automáticamente la marca de tiempo de cada caché, y todos los cachés tienen sus relojes sincronizados para que tengan la misma hora. El puente recibe tiempos de actualización de cada caché y las últimas actualizaciones se aplican a todos los cachés. Nuevamente, el propósito de la resolución de conflictos es aplicar la misma actualización de versión a todos los cachés para evitar problemas de integridad de datos.
-
Controlador de resolución de conflictos: Otra forma en que el puente resuelve los conflictos es que puede proporcionar un controlador de resolución de conflictos de acuerdo con su lógica para analizar las actualizaciones. Dado que este resolver está configurado con NCache, el puente proporcionará ambas copias del objeto y el resolver analizará qué versión es mejor de acuerdo con la lógica proporcionada. Esto devolverá la versión final al puente y aplicará esta actualización a todos los cachés.
El siguiente fragmento de código le brinda una muestra de la implementación de resolución de conflictos que se implementa en el caché:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
public class Resolver : IBridgeConflictResolver { public void Init(System.Collections.IDictionary parameters) {. . .} public ConflictResolution Resolve(ProviderBridgeItem oldEntry, ProviderBridgeItem newEntry) { var conflictResolution = new ConflictResolution(); switch (oldEntry.BridgeItemVersion) { case BridgeItemVersion.OLD: { /* Replace item with new entry */ } break; case BridgeItemVersion.LATEST: { /* Keep old entry */ } break; case BridgeItemVersion.SAME: { /* Your logic to replace entry if needed */ } break; } return conflictResolution; // Configure this implementation on cache } public void Dispose() {. . .} } |
Por lo tanto, al tener un mecanismo de resolución de conflictos en NCache, puede estar seguro de que su caché nunca estará fuera de sincronización. Nunca tendrá dos versiones diferentes de las actualizaciones de datos y siempre será coherente en varios centros de datos.
NCache Detalles Configurar puente Configurar el solucionador de conflictos
Manejo de desastres en tiempo de ejecución
Ahora hablemos de lo que sucede en caso de una situación de desastre en la que un sitio deja de funcionar.
Activo pasivo
Caso 1: El sitio pasivo se cae
Una configuración activa-pasiva actúa como un sitio de recuperación ante desastres. Por lo tanto, si el lado pasivo falla, el lado activo seguirá funcionando y su aplicación continuará ejecutándose. El puente no puede replicar datos en el sitio pasivo hasta que intervenga para restaurar el sitio pasivo. Cuando revierte el sitio pasivo, se vuelve a conectar al puente y se resincroniza, descartando así el caché existente y obteniendo efectivamente una copia completa del caché del sitio activo a través del puente. Una vez completada la sincronización, cambia al modo de replicación WAN normal.
NCache Detalles Sincronizar cachés de puente Caché activo-pasivo
Caso 2: El sitio activo se cae
Si el sitio activo se cae, eso significa que tiene algún tipo de desastre, porque el puente está caído y la aplicación probablemente también. Tienes que enviar todo el tráfico ahora a la sitio pasivo que ahora se activa. Todos los datos se replican desde el sitio activo original al sitio pasivo original, sin interrupciones para los usuarios. El sitio pasivo original ahora está activo, por lo que todas las actualizaciones ocurren aquí, pero los usuarios no ven interrupciones.
Sin embargo, una vez que el sitio activo original vuelve a estar activo, se conecta al nuevo sitio activo (el sitio pasivo original) y sincroniza en sí mismo por completo. Una vez que se realiza la sincronización, ambos están activos-activos aunque todo el tráfico se dirige al sitio pasivo original. Tiene la flexibilidad de descargar todo el tráfico al sitio activo original y cambiar el estado del sitio activo-activo a pasivo en el puente. NCache le permite hacer todo esto en tiempo de ejecución sin ninguna interrupción en caso de un desastre activo-pasivo.
Activo-Activo
Cuando el sitio activo con el puente se cae, la replicación WAN se detiene porque el puente está caído. Sin embargo, otros sitios activos seguirán funcionando y todo el tráfico se enrutará a ellos. Una vez que active el sitio inactivo, puede iniciar el puente y conectar el sitio activo al puente, de modo que ambos sitios estén sincronizados. Todo esto se hace en tiempo de ejecución, por lo que no se requiere tiempo de inactividad. Una vez que los puentes estén sincronizados, ambos sitios podrán enviarse actualizaciones entre sí. NCache por lo tanto, proporciona tolerancia a fallas.
NCache Detalles Modos de sincronización de caché NCache Docs
3+ sitios activos
La tercera situación es cuando tiene 3 o más sitios activos donde un sitio tiene el puente y los otros no. Dos escenarios pueden tener lugar en este caso como se mencionó.
Caso 1: el sitio activo que no es puente deja de funcionar
En este caso, otros sitios seguirán replicándose entre sí y el tráfico de este sitio se redirigirá a los otros sitios conectados sin interrumpir a los usuarios. Una vez que el sitio está activo, se vuelve a conectar al puente y se vuelve a sincronizar para obtener la última copia del caché. Esta es la señal para que el tráfico vuelva a la normalidad.
NCache Detalles Cambiar los modos de sincronización de caché Topología de puente
Caso 2: El sitio activo con el puente se cae
En el caso de que el puente se caiga, los otros dos sitios activos seguirán funcionando, pero no podrán replicar sus actualizaciones entre sí porque no hay puente. Entonces, lo que puede hacer en este momento es iniciar un puente en uno de los otros dos sitios activos.
Para iniciar el puente, necesita dos nodos como grupo. Idealmente, debe tener un conjunto dedicado de servidores para el topología de puente en ese sitio, pero también puede usar dos servidores de caché como un clúster, ya que lo más probable es que sea temporal. Sin embargo, puede tener algún impacto en el rendimiento de esos servidores de caché porque ahora el puente también consume recursos como CPU y memoria.
Tu necesitas iniciar el puente en uno de los sitios activos donde ambos sitios activos ya se están ejecutando. El caché en ejecución ahora puede conectarse a un puente. Entonces, ambos se conectan a un puente y se sincronizan replicando todas las actualizaciones entre sí. Los usuarios no experimentan ninguna interrupción ya que los dos sitios están sincronizados y propagan actualizaciones entre sí. Por lo tanto, si algún sitio se cae, no pierde ningún dato.
NCache Detalles Agregar cachés en clúster Gestión de puentes
Ahora, una vez que el sitio original con el puente vuelva a funcionar, simplemente puede:
- Tome el puente hacia abajo en el sitio temporal.
- quitar el puente del caché existente.
- Lleve el puente al sitio original.
- Conecte todos los cachés a este nuevo puente.
Dado que puede conectar el caché al puente en tiempo de ejecución, NCache le permite automatizar todo este trabajo a través de secuencias de comandos para que pueda manejar sin problemas la situación en la que un sitio puente deja de funcionar y tiene que volver a activarlo.
Conclusión
NCache le brinda un poderoso mecanismo de replicación de WAN que le permite manejar muchos escenarios avanzados diferentes. Además, realiza la replicación de WAN de manera rápida y eficiente y maneja centros de datos activo-pasivo, activo-activo o tres o más activos-activos.