Red de conocimientos turísticos - Información de alquiler - ¿Cuál es la diferencia entre una base de datos distribuida y un clúster de bases de datos? ¿Qué experto puede ayudar a aclarar la confusión? ~~~~~~~~~~ Te lo ruego.

¿Cuál es la diferencia entre una base de datos distribuida y un clúster de bases de datos? ¿Qué experto puede ayudar a aclarar la confusión? ~~~~~~~~~~ Te lo ruego.

(1) El punto de vista de otro blogger (/question/20004877)

La descripción de este amigo simio es muy concisa y clara:

Distribuida: un negocio se divide en múltiples subnegocios, implementado en diferentes servidores

Clúster: el mismo negocio se implementa en múltiples servidores

Otro amigo simio expresó este punto desde otra perspectiva:

Otro amigo simio expresó esto Lo apunto desde otra perspectiva:

El cluster es la forma física y la manera de trabajar. Otro amigo simio lo expresó desde otra perspectiva:

La agrupación es una forma física y la distribución es una forma de trabajar.

Esto también es muy conciso, pero más abstracto:

Hasta donde tengo entendido, la agrupación en clústeres es una solución de alta disponibilidad, mientras que la distribuida es una solución de alto rendimiento y alta concurrencia.

(3) Enciclopedia Baidu (/view/4804677.htm, /view/3022776.htm)

Clúster:

Un clúster es un grupo de computadoras conectados entre sí a través de la red.

Un cluster es un grupo de ordenadores independientes interconectados a través de una red de alta velocidad, forman un grupo y se gestionan en un modo de sistema único. Los clientes interactúan con el clúster como si éste fuera un servidor independiente. La configuración del clúster se utiliza para aumentar la disponibilidad y la escalabilidad.

Distribuido:

Una tecnología de procesamiento informático basada en red que es diferente de la centralizada. Con el espectacular aumento del rendimiento y la ubicuidad de las computadoras personales, fue posible distribuir potencia de procesamiento a todas las computadoras de una red. La informática distribuida es el concepto opuesto a la informática centralizada, donde los datos se pueden distribuir en un área grande.

Después de leerlo, ¿sientes que aún no lo entiendes? ¡Lo mismo ocurre con los blogueros! Entonces, sigamos adelante y averigüémoslo.

El blogger anterior dijo que ha entrado en contacto con el marco de servicios distribuidos Dubbo, así que echemos un vistazo a por qué dice que es una arquitectura de servicios distribuidos. El servidor es responsable de ensamblar los datos devueltos por cada nodo informático en un conjunto completo de datos. Debido a que una de las características definitorias de este tipo de aplicación es la búsqueda de 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 entra en la categoría SIMD (Instrucción única/Datos múltiples).

3.2 Computación distribuida

Otro tipo de computación es justo lo opuesto a la computación de alto rendimiento. Aunque se pueden dividir en múltiples subtareas paralelas, las conexiones entre las subtareas son muy estrechas. , requiriendo una gran cantidad de intercambio de datos. Según la clasificación de Flynn, la informática distribuida de alto rendimiento entra en la categoría MIMD (Instrucción múltiple/Datos múltiples).

Los siguientes son varios escenarios de aplicación para usar estos tipos de clústeres:

Aquí no se presentan los clústeres de alta disponibilidad.

Creo que Dubbo está más inclinado a equilibrar la carga de clústeres. Todos los amigos que lo han usado deberían saberlo (si no lo sabes, puedes entender que el mismo servicio en Dubbo puede tener varios proveedores). El consumidor llega en ese momento, está consumiendo ese proveedor y hay un mecanismo de equilibrio de carga en él.

El motor de búsqueda Elasticsearch se inclina más hacia la distribución de clusters de computación científica.

Hablando de esto, 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 fallas del clúster (http://dubbo.io/User+Guide-zh.htm#UserGuide-zh-%E9%9B %86 %E7%BE%A4%E5%AE%B9%E9%94%99)

Dubbo proporciona estas estrategias de tolerancia a fallos:

Modo de tolerancia a fallos de 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

Clúster de conmutación por error

Conmutación por error automática cuando Se produce un error. Inténtelo de nuevo con otros servidores. (Predeterminado)

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

Puedes usar retries="2" para establecer el número de reintentos (excluyendo la primera vez).

Clúster de fallas rápidas

Cuando falla rápidamente, solo se inicia una llamada y se informará un error inmediatamente después de la falla.

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

Clúster a prueba de fallos

A prueba de fallos, las excepciones se ignorarán.

Comúnmente utilizado para operaciones como escribir registros de auditoría.

Clúster de recuperación automática de fallas

Recuperación automática de fallas, grabación en segundo plano de solicitudes fallidas y retransmisión programada.

Usualmente utilizado para operaciones de notificación de mensajes.

Clúster bifurcado

Llama a varios servidores en paralelo y regresa cuando uno de ellos tiene é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 usando forks="2".

Clúster de transmisión

La transmisión llama a todos los proveedores uno por uno, y cualquier proveedor informará un error. (Compatible desde 2.1.0)

Comúnmente utilizado para notificar a todos los proveedores que actualicen la información de recursos locales, como caché o registros.

Equilibrio de carga (http://dubbo.io/User+Guide-zh.htm#UserGuide-zh-%E8%B4%9F%E8%BD%BD%E5%9D%87%E8 %A1%A1)

Dubbo proporciona estas estrategias de equilibrio de carga:

Equilibrio de carga aleatorio

Aleatorio, establece probabilidad aleatoria por peso.

La probabilidad de colisión en la sección transversal es alta, pero cuantas más llamadas haya, más uniforme será la distribución y también será más uniforme después de usar la ponderación de probabilidad, lo que favorece la dinámica. Ajuste de ponderaciones de proveedores.

Round Robin LoadBalance

Round robin, establece la proporción de round robin de acuerdo con el peso acordado.

Hay un problema con los proveedores lentos que acumulan solicitudes, por ejemplo, la segunda máquina es lenta pero no se bloquea, y cuando la solicitud se ajusta a la segunda máquina, se atasca allí; con el tiempo, todas las solicitudes se atascarán. en el proceso de adaptación a la segunda máquina.

LeastActive LoadBalance (Balance de carga menos activo)

El número mínimo de llamadas activas es aleatorio para el mismo número de llamadas de actividad. Actividad se refiere a la diferencia en el número antes y después de la. llamar.

Hace que los proveedores más lentos reciban menos solicitudes, porque cuanto más lento es el proveedor, mayor es la diferencia en el recuento antes y después de la llamada.

Equilibrio de carga ConsistentHash

Hashing consistente, es decir, las solicitudes con los mismos parámetros siempre se envían al mismo proveedor.

Cuando un proveedor se bloquea, las solicitudes enviadas originalmente a ese proveedor (basadas en nodos virtuales) se distribuyen a otros proveedores sin causar cambios drásticos.

Para conocer el algoritmo, consulte http://en.wikipedia.org/wiki/Consistent_hashing.

De forma predeterminada, solo se utiliza el primer parámetro hash. Si desea modificarlo, configure

El valor predeterminado es 160 nodos virtuales. Si desea cambiarlo, configure

Más curiosidad por saber cómo funcionan. ¿comunicar?

Similar al mecanismo de descubrimiento automático de nodos de versiones anteriores de Elasticsearch, ES es un sistema basado en p2p. Primero busca nodos existentes a través de transmisión y luego se comunica entre nodos a través de protocolos de multidifusión. -Interacción entre pares.

Dubbo es un registro que admite múltiples registros, pero se recomienda ZooKeeper. Puede aprender sobre ZooKeeper por su cuenta, ya que muchos marcos relacionados con clústeres lo utilizan.

Por supuesto, Elasticsearch también tiene su propio mecanismo correspondiente para implementarlo.