Colección de citas famosas - Frases motivadoras - Introducción a los clústeres de bases de datos

Introducción a los clústeres de bases de datos

Los clústeres se dividen principalmente en tres categorías (clúster de alta disponibilidad, clúster de equilibrio de carga, clúster de computación científica)

Clúster de alta disponibilidad (Clúster de alta disponibilidad)

Carga Clúster de equilibrio (Load Balance Cluster)

Clúster de Computación Científica (Clúster de Computación de Alto Rendimiento)

1. Clúster de Alta Disponibilidad (Clúster de Alta Disponibilidad)

Los más comunes. Son 2 clústeres de alta disponibilidad compuestos por dos nodos que tienen muchos nombres populares y poco científicos, como "espera activa de doble máquina", "copia de seguridad mutua de doble máquina" y "máquina dual". Los clústeres de alta disponibilidad resuelven el problema de garantizar la capacidad de las aplicaciones de los usuarios para continuar brindando servicios al mundo exterior. (Tenga en cuenta que los clústeres de alta disponibilidad no se utilizan para proteger los datos comerciales, sino para proteger los programas comerciales de los usuarios para brindar servicios ininterrumpidos al mundo exterior y minimizar el impacto de las fallas de software/hardware/causadas por humanos en el negocio) .

2. Clúster de equilibrio de carga

Sistema de equilibrio de carga: Todos los nodos del clúster están activos y comparten la carga de trabajo del sistema. Generalmente, los clústeres de servidores web, los clústeres de bases de datos y los clústeres de servidores de aplicaciones pertenecen a este tipo.

Los clústeres de equilibrio de carga se utilizan generalmente para servidores web y servidores de bases de datos correspondientes a solicitudes de red. Este tipo de clúster puede, al recibir una solicitud, verificar los servidores que aceptan menos solicitudes y no están ocupados, y transferir la solicitud a estos servidores. Desde el punto de vista de verificar el estado de otros servidores, el equilibrio de carga y la agrupación en clústeres tolerantes a fallas están muy cerca, excepto que hay más.

3. Clúster de Computación Científica (High Performance Computing Cluster)

Clúster de Computación de Alto Rendimiento (High Performance Computing), denominado clúster HPC. Este tipo de clúster está dedicado a proporcionar potentes capacidades informáticas que una sola computadora no puede ofrecer.

Clasificación de la computación de alto rendimiento:

3.1. Computación de alto rendimiento (High-throughput Computing)

Existe un tipo de computación de alto rendimiento que puede dividirse en varias subtareas paralelas, y cada subtarea tiene poca relación entre sí. SETI@HOME – Búsqueda de Inteligencia Extraterrestre en Casa es una aplicación de este tipo.

Este proyecto utiliza recursos informáticos inactivos en Internet para buscar extraterrestres. El servidor del proyecto SETI envía un conjunto de datos y patrones de datos a los nodos informáticos que participan en SETI en Internet. Los nodos informáticos buscan los datos dados utilizando los patrones dados y luego envían los resultados de la búsqueda al servidor. El servidor es responsable de recopilar los datos devueltos por varios nodos informáticos en datos completos. Debido a que una característica única de este tipo de aplicación es la búsqueda de ciertos patrones en cantidades masivas de datos, este tipo de computación se denomina computación de alto rendimiento.

En esta categoría entra la llamada informática de Internet. Según la clasificación de Flynn, la informática de alto rendimiento pertenece a la categoría SIMD (Instrucción única/Datos múltiples).

3.2. Computación Distribuida

Otro tipo de computación es todo lo contrario a la computación de alto rendimiento. Aunque se pueden dividir en varias subtareas paralelas, las conexiones entre las subtareas son muy pequeñas. . Estrecho y requiere mucho intercambio de datos. Según la clasificación de Flynn, la informática distribuida de alto rendimiento pertenece a la categoría MIMD (Instrucción múltiple/Datos múltiples).

A continuación se describen los escenarios de aplicación de estos clústeres:

Los clústeres de alta disponibilidad no se explicarán aquí.

Creo que Dubbo está más predispuesto hacia los clústeres de equilibrio de carga. Los amigos que lo han usado deberían saberlo (si no lo sabes, puedes descubrirlo por tu cuenta). El mismo servicio en Dubbo puede tener varios. proveedores Cuando un consumidor Cuando el proveedor viene, quiere consumir ese proveedor. Hay un mecanismo de equilibrio de carga en él.

El motor de búsqueda Elasticsearch prefiere la computación distribuida en clústeres de computación científica.

En este punto, muchos amigos simios pueden conocer algunos términos de los clústeres: tolerancia a fallas del clúster y equilibrio de carga.

Tomemos Dubbo como ejemplo:

Tolerancia a fallos del clúster (http://dubbo.io/User Guide-zh.htm#UserGuide-zh-E99B86E7BEA4E5AEB9E99499)

Dubbo proporciona estas estrategias de tolerancia a fallas:

Modo de tolerancia a fallas del clúster:

Puede expandir la estrategia de tolerancia a fallas del clúster usted mismo; consulte: Expansión del clúster

Clúster de conmutación por error

Activa automáticamente el error. Cuando se produce un error, inténtalo de nuevo en otros servidores. (Predeterminado)

Generalmente se usa para operaciones de lectura, pero los reintentos causarán retrasos más prolongados.

El número de reintentos (excluyendo la primera vez) se puede configurar mediante retries="2".

Clúster Failfast

Falla rápido, solo inicia una llamada e informa un error inmediatamente si falla.

Usualmente se usa para operaciones de escritura no idempotentes, como agregar nuevos registros.

Clúster a prueba de fallos

A prueba de fallos, si ocurre una excepción, se ignorará directamente.

Suele utilizarse para operaciones como escribir registros de auditoría.

Clúster de conmutación por recuperación

Se recupera automáticamente de errores, registra las solicitudes fallidas en segundo plano y las reenvía periódicamente.

Usualmente utilizado para operaciones de notificación de mensajes.

Clúster bifurcado

Llame a varios servidores en paralelo y regrese tan pronto como uno tenga éxito.

Suele utilizarse para operaciones de lectura que requieren un alto rendimiento en tiempo real, pero que requieren desperdiciar más recursos de servicio.

El número máximo de paralelismo se puede establecer mediante forks="2".

Clúster de transmisión

La transmisión llama a todos los proveedores uno por uno. Si alguno de ellos informa un error, se informará un error. (Compatible desde 2.1.0)

Generalmente se usa para notificar a todos los proveedores que actualicen la información de los recursos locales, como el caché o los registros.

Equilibrio de carga (http://dubbo.io/User Guide-zh.htm#UserGuide-zh-E8B49FE8BDBDE59D87E8A1A1)

Dubbo proporciona estas estrategias de equilibrio de carga:

Random LoadBalance

Aleatorio, establece la probabilidad aleatoria según el peso.

La probabilidad de colisión en una sección es alta, pero cuanto mayor sea el volumen de llamadas, más uniforme será la distribución y el peso será más uniforme después de usar el peso según la probabilidad, lo cual es propicio. para ajustar dinámicamente el peso del proveedor.

RoundRobin LoadBalance

Round Robin, establece la proporción de round robin de acuerdo con el peso después de la convención.

Existe el problema de que los proveedores lentos acumulan solicitudes. Por ejemplo, la segunda máquina es muy lenta pero no se bloquea. Cuando la solicitud se transfiere a la segunda máquina, se queda atascada allí. Las solicitudes están atascadas en la transferencia. Vaya a la segunda etapa.

Balance de carga mínimo activo

El número mínimo de llamadas activas, el número aleatorio del mismo número activo, el número activo se refiere a la diferencia entre los recuentos antes y después de la llamada.

Deje que el proveedor lento reciba menos solicitudes, porque cuanto más lento sea el proveedor, mayor será la diferencia en el recuento antes y después de la llamada.

ConsistentHash LoadBalance

Consistent Hash, las solicitudes con los mismos parámetros siempre se envían al mismo proveedor.

Cuando un determinado proveedor falla, las solicitudes enviadas originalmente al proveedor se distribuirán a otros proveedores según el nodo virtual y no provocarán cambios drásticos.

Algoritmo ver: http://en.wikipedia.org/wiki/Consistent_hashing.

De forma predeterminada, solo el primer parámetro tiene hash. Si desea modificarlo, configúrelo; parámetro key="hash.arguments" value="0, 1" /gt; p>

De forma predeterminada, se utilizan 160 nodos virtuales. Si desea modificarlo, configúrelo: parámetro key="hash.nodes" value="320" /gt;