GORRA
Nuestra teoría CAP solo puede satisfacer dos al mismo tiempo,
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
- El 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.
- Tres párrafos enviados a 3PC (acuerdo fuerte)
- Mecanismo de compensación de TCC
- Tabla de mensajes locales (MQ + Table) (finalmente consistente)
- Mensaje de transacción (RocketMq) (finalmente consistente) 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.
- 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