Transacción distribuida y bloqueo distribuido

GORRA

Nuestra teoría CAP solo puede satisfacer dos al mismo tiempo,
Inserte la descripción de la imagen aquí
nuestro Dubbo satisface cp pero no a! !
Por ejemplo, nuestro Zookeeper es un clúster compuesto por múltiples servidores, un líder y múltiples seguidores. Si nuestro líder falla, esto es para asegurar la tolerancia a fallas de la partición, y rápidamente seleccionaremos un líder del seguidor (no en el proceso de elección) Brindar servicios externos). Pero esto es un error si llega una solicitud (por lo que no hay garantía de disponibilidad). Cuando dubbo modifica datos, los datos del nodo maestro y del nodo esclavo deben modificarse al mismo tiempo.

Nuestro Springcloud satisface ap pero no C.
Springcloud garantiza su disponibilidad a través del mecanismo fusible hystrix.

Transacción distribuida

  1. El Inserte la descripción de la imagen aquíadministrador de transacciones de compromiso de dos etapas XA (fuertemente consistente) informa a las dos transacciones locales que están listas para ejecutarse, la transacción 1 le dice al administrador de transacciones si la ejecución tiene éxito, la transacción 2 le dice al administrador de transacciones si la ejecución es exitosa y el administrador de transacciones les informa que las dos transacciones están comprometidas.
  2. Tres párrafos enviados a 3PC (acuerdo fuerte)Inserte la descripción de la imagen aquíInserte la descripción de la imagen aquí
  3. Mecanismo de compensación de TCCInserte la descripción de la imagen aquíInserte la descripción de la imagen aquí
  4. Tabla de mensajes locales (MQ + Table) (finalmente consistente)
  5. Mensaje de transacción (RocketMq) (finalmente consistente) Inserte la descripción de la imagen aquíEnviar pre-mensaje (no será consumido por los consumidores) -> Ejecutar su propia lógica comercial -> confirmar mensaje (dejar que los consumidores puedan ver el consumo enviado antes) -> Los consumidores se ejecutan por sí mismos Negocios lógica -> Si el consumo es exitoso, envíe un mensaje a rocketMQ para eliminar el mensaje de la cola.
  6. Seata ba alibaba)

Cerradura distribuida

En esencia, el objetivo de las cerraduras distribuidas es ocupar un "pozo" en Redis. Cuando otros procesos también quieren ocuparlo, encuentran que ya hay alguien en cuclillas allí, por lo que tienen que rendirse o volver a intentarlo más tarde.
El foso suele estar ocupado por el comando setnx (set si no existe). Sólo un cliente puede ocupar el foso. El foso se ocupa primero, y cuando se agota, se llama al comando del para liberar el foso.

set  test ture  ex 5 nx
del  test

Supongo que te gusta

Origin blog.csdn.net/qq_36905956/article/details/106019285
Recomendado
Clasificación