Transparencia sin pérdidas (ALT) de aplicaciones de GaussDB

1. Antecedentes

Como base de datos distribuida a nivel empresarial, GaussDB proporciona lo último en capacidades de recuperación ante desastres de alta disponibilidad, como "activo-activo en AZ en la misma ciudad, tres centros en dos lugares y una fuerte coherencia entre clústeres duales". Cuando un nodo de base de datos no puede proporcionar servicios externos debido a una falla, para continuar garantizando la disponibilidad de los servicios de la base de datos, el controlador JDBC enviará solicitudes de conexión de base de datos posteriores a otros nodos disponibles. Sin embargo, después de que ocurre una falla, las conexiones que han establecido sesiones con el nodo defectuoso no se pueden cambiar automáticamente a los nodos disponibles, lo que provoca que las unidades de negocios que utilizan estas conexiones informen errores. Si la unidad de negocios carece de reintento de conexión o verificación de coherencia comercial, puede provocar la interrupción de la aplicación o incluso inconsistencia de los datos comerciales, lo que resulta en graves pérdidas comerciales para los usuarios.

Por lo tanto, la base de datos HUAWEI CLOUD GaussDB proporciona una solución de transferencia de conexión de cliente en caso de una falla de la base de datos: ALT (Application Lossness Transparent, aplicación sin pérdidas y transparente). El principio de este esquema es que cuando un nodo del clúster de base de datos no puede proporcionar servicios externos debido a una falla, si hay otros nodos disponibles en el clúster en este momento, la conexión de sesión en el nodo fallido se migrará automáticamente al destino. nodo, y el cliente no necesita hacerlo. Se emite una solicitud de conexión y las operaciones de la base de datos aún pueden continuar. Durante todo el proceso, la aplicación cliente no se da cuenta, como si hubiera experimentado un ligero retraso en el procesamiento de la solicitud SQL, lo que mejora enormemente la disponibilidad de los servicios de la base de datos.

2. Arquitectura Técnica

Primero veamos la arquitectura técnica y el principio operativo de ALT:

1.png

Figura 1 - Diagrama esquemático de la arquitectura ALT

Como se puede ver en la figura anterior, el clúster GaussDB introduce un componente independiente GNS (Servicio de notificación GaussDB), que se utiliza para detectar y obtener información de estado en tiempo real de cada nodo de la base de datos. Cuando una aplicación llama a la interfaz JDBC para establecer una conexión con cualquier nodo del clúster por primera vez, el controlador JDBC establecerá un enlace de suscripción de estado del clúster con el servicio GNS. Cuando GNS detecta que el estado del clúster ha cambiado, enviará el evento de cambio de estado al controlador JDBC a través del enlace de suscripción. Después de que el hilo de procesamiento de eventos reciba la tarea, administrará la conexión afectada a través de la copia de referencia guardada en el administrador de conexiones de cluster.migrar.

El componente GNS adopta un método de implementación multiactiva de igual a igual de múltiples nodos. Cada servicio GNS tiene los datos de estado completos del clúster. El controlador JDBC solo necesita establecer un servicio de suscripción con cualquiera de los GNS para administrar la aplicación. en todos los nodos del cluster en la conexión.

3. Capacidades clave

Después de comprender la arquitectura general y los principios operativos de ALT, echemos un vistazo a las capacidades clave que tiene y qué valor comercial pueden aportar estas capacidades a los clientes.

3.1 Notificación rápida de la aplicación

ALT proporciona un mecanismo de notificación de mensajes activo para cambios de estado de la base de datos. El controlador JDBC se suscribe al estado del clúster de base de datos utilizado por la empresa a través del servicio GNS. Cuando cambia el estado de los nodos en el clúster, el GNS envía el evento de cambio al controlador JDBC, y este último administra y administra la conexión. en la base de datos de destino según el estado más reciente del clúster.

Al mismo tiempo, el controlador JDBC también proporciona al programa de aplicación una interfaz de registro de función de devolución de llamada para cambios de estado del clúster. La aplicación puede registrar la función de devolución de llamada de cambio de estado con el controlador JDBC para determinadas conexiones de bases de datos. Cuando cambia el estado del clúster, el controlador JDBC llamará a la función registrada. Al registrar la función de devolución de llamada, es conveniente implementar operaciones de gestión de operación y mantenimiento, como notificaciones por correo electrónico de cambios de estado de la base de datos y informes de la plataforma de alarma en el lado comercial.

3.2 Migración sin conexión

Cuando se detecta que la base de datos GaussDB falla o está a punto de cerrarse por mantenimiento, el subproceso de procesamiento de eventos impulsado por JDBC analiza cada conexión afectada para determinar si hay otros nodos de la base de datos que cumplan con los requisitos de conexión. migrado a un nodo disponible y restablece la información del estado de la sesión de la conexión. En el escenario de mantenimiento de apagado activo, los usuarios también pueden configurar el tiempo de suspensión de la conexión para esperar a que aparezcan los nodos disponibles a través de parámetros, a fin de mejorar la disponibilidad del servicio en el escenario de mantenimiento unificado del clúster.

3.3 Reanudación del punto de interrupción de la transacción

Después de habilitar ALT en la conexión, tanto el controlador JDBC como el servidor GaussDB rastrearán y registrarán la información del estado de la transacción de la sesión actual. Si ocurre una falla mientras la base de datos procesa solicitudes SQL, después de que la conexión se migra a un nuevo nodo, ALT restaura la sesión al punto anterior a la falla de acuerdo con la información del estado de la transacción registrada, y la transacción continúa desde la posición interrumpida, evitando Interrupción del negocio causada por la falla de la base de datos. Inconsistencia de los datos con la capa de aplicación.

El valor que aporta la función ALT a los clientes se puede resumir de la siguiente manera:

  • Al evitar fallas en la base de datos, no se puede obtener el estado del servidor a tiempo, lo que resulta en un RTO demasiado grande;
  • Acelerar el establecimiento de conexión del tipo de nodo especificado JDBC (targetServerType);
  • Garantía de continuidad del negocio cuando el clúster se apaga por mantenimiento;
  • Garantía de continuidad del negocio en caso de falla de la base de datos;
  • Notificación rápida de aplicaciones durante la conmutación de recuperación ante desastres del clúster.

4. Demostración de la función ALT

JDBC habilita el modo ALT

Ejemplo:

URL=jdbc:opengauss://host1:port1,host2:port2,host3:port3/database?enableALT=true&gns=gns_host1:gns_port1, gns_host2:gns_port2

Cuando la aplicación utiliza el controlador JDBC para acceder a la base de datos GaussDB, solo necesita agregar el elemento de configuración enableALT y la dirección de escucha GNS a la URL de conexión para habilitar el servicio ALT. La granularidad de suscripción mínima del servicio ALT está en el nivel de conexión y el controlador JDBC admite el establecimiento simultáneo de una conexión ALT y una conexión normal al mismo clúster.

Escena de demostración:

Cuando el clúster centralizado de GaussDB realiza una operación de conmutación, observe la ejecución de la solicitud SQL utilizando la conexión ALT.

Pasos de demostración:

El programa de aplicación y el nodo maestro de la base de datos establecen respectivamente una conexión JDBC común y una conexión con la función ALT habilitada, usan las dos conexiones para ejecutar los siguientes comandos SQL al mismo tiempo y observan si la conexión de la base de datos se puede usar normalmente después de la El clúster completa la conmutación.

1. El cliente envía una solicitud SQL: vea la información de la instancia de base de datos a la que se accede actualmente

SQL> show listen_addresses;

2. El cliente envía una solicitud SQL: crea y usa un objeto de base de datos

SQL> create table alt_test_switchover(mes text);

SQL> insert into alt_test_switchover values('message before switchover');

<-- 集群操作:switchover -->

3. El cliente envía una solicitud SQL: utiliza el objeto de la base de datos

SQL> insert into alt_test_switchover values('message after switchover');

SQL> select mes from alt_test_switchover;

4. El cliente envía una solicitud SQL: vea la información de la instancia de base de datos a la que se accede actualmente

SQL> show listen_addresses;

comparar resultados:

(1) Conexión JDBC ordinaria: después de que el clúster cambia, la conexión de la base de datos se desconecta y la aplicación ya no puede usar la conexión para enviar solicitudes SQL.

2.png

Figura 2: Registro de conexión JDBC común

(2) Conexión con la función ALT habilitada: después de que el clúster cambia, la conexión de la base de datos se migra automáticamente al nuevo nodo maestro y la aplicación puede continuar usando la conexión para enviar solicitudes SQL.

3.png

Figura 3 – Registro de conexión ALT

Como base de datos distribuida a nivel empresarial, GaussDB tiene las ventajas principales de cinco máximos y dos fáciles (alta disponibilidad, alta seguridad, alto rendimiento, alta flexibilidad, alta inteligencia, fácil implementación y fácil migración). En términos de cumplir con los requisitos de confiabilidad del negocio principal financiero, GaussDB e ICBC Lianchuang han lanzado la primera solución de consistencia fuerte de clúster dual en China para lograr un aislamiento completo de las fallas a nivel de clúster con RPO=0, y la nueva solución no destructiva y La solución de aplicación transparente ha logrado fallas en el sistema. La aplicación no se da cuenta y el negocio realmente se realiza 7 * 24 horas sin interrupción, brindando una experiencia de alta disponibilidad más extrema a la empresa.

Supongo que te gusta

Origin blog.csdn.net/GaussDB/article/details/132403300
Recomendado
Clasificación