¿Hay alguna diferencia entre el “bloqueo” de dos fases y el “compromiso” de dos fases?

Sí, aunque los nombres pueden indicar similitud, estos dos algoritmos son diferentes.

El bloqueo de dos fases [1] se utiliza en bases de datos para garantizar la serialización [2], lo que significa que el resultado de las operaciones concurrentes puede verse como el resultado de las mismas operaciones realizadas en algún orden secuencial.

El algoritmo describe cómo una transacción en una base de datos debe tratar de bloquear una parte de la base de datos para leer o escribir. Este algoritmo proporciona control de concurrencia y serialización mediante la introducción de una regla simple: después de liberar un bloqueo, no se pueden adquirir nuevos bloqueos, hasta que se liberen todos. Esto funciona, pero tiene un gran inconveniente en posibles puntos muertos y retrocesos en cascada. [3] Hay algoritmos más sofisticados [4] que se ocupan de estos problemas.

La confirmación en dos fases [5] se utiliza en sistemas distribuidos en un proceso de transacción distribuida con un solo coordinador y varios seguidores.

En resumen, el coordinador primero les pide a todos los seguidores que cometan una transacción. Luego, cada seguidor ejecuta el comando y, si tiene éxito, responde con un acuerdo para comprometerse; de ​​lo contrario, responde con un aborto. Esa es la primera fase, la fase de votación . Cuando se reciben todos los mensajes de acuerdo, el coordinador confirma la transacción. Si hay un mensaje de cancelación de un seguidor, el coordinador cancela la transacción. Esta es la segunda fase, la fase de finalización .

No conozco el bloqueo trifásico, pero existe un algoritmo de compromiso trifásico [6] que se ocupa de la falla del nodo coordinador.

Notas al pie

[1] Bloqueo de dos fases – Wikipedia

[2] Serializabilidad – Wikipedia

[3] Problemas con el protocolo básico de bloqueo de 2 fases | Control de concurrencia

[4] Bloqueo de dos fases – Wikipedia

[5] Protocolo de confirmación de dos fases – Wikipedia

[6] Protocolo de confirmación trifásico – Wikipedia

More Interesting

¿Cómo diseñas e implementas tu propio proyecto de pasatiempo?

¿Cómo puedo ser un buen ingeniero de software sin una maestría?

¿Cuál es el proceso de entrevista en Amazon para un ingeniero de software?

¿Vale la pena la maestría en administración de software en Carnegie Mellon?

¿Qué significa el término "programador de pila completa"? ¿Cuáles son los rasgos definitorios de un programador de pila completa?

¿Cuáles son los algoritmos que todo profesional de software debe practicar para descifrar entrevistas de codificación?

¿Cuáles son las habilidades imprescindibles para un desarrollador de software integrado junior?

¿Cuál es la diferencia entre una pregunta de investigación y una hipótesis de investigación? Establezca un ejemplo dentro de la investigación empírica de ingeniería de software.

Ingeniero mecánico pasando por un cambio de carrera en Ingeniería de software (aplicando a Hack Reactor y MakerSquare). ¿Qué tan crítico es tener un título en Ciencias de la Computación al solicitar / entrevistar para puestos de Ingeniería de Software DESPUÉS de completar uno de estos programas?

¿Qué es EMC ESRS y cómo funciona?

¿Cuáles son las ventajas reales de la especificación BUFR (requisitos iniciales grandes) en el desarrollo de software?

¿Qué agrega Docker a simplemente LXC?

Me gustaría obtener un título en enfermería con especialización en ingeniería de software. ¿Es esta una buena opción o debería cambiar mi menor?

En pocas palabras, ¿cómo se construye un compilador?

¿Necesito codificar estructuras de datos en Java para preguntas de entrevistas?