Conceptos de Sincronización y Comunicación en Sistemas Distribuidos

Clasificado en Informática

Escrito el en español con un tamaño de 3,08 KB

Mutex

Objeto del sistema operativo que puede utilizarse para la sincronización entre procesos, así como exclusión mutua entre hilos y procesos. Su alcance permite sincronizar Threads entre aplicaciones.

Monitor

Proporciona mutua exclusión entre hilos del mismo proceso y la sincronización específica de los hilos con los métodos Wait() y Pulse(). Mucho más rápido que Mutex.

Lock

Es similar al monitor, ofrece mutua exclusión entre hilos del mismo proceso.

RabbitMQ

Es una implementación de MOM basada en el protocolo AMQP (Advanced Message Queuing Protocol). Es un sistema de mensajería de código abierto que se utiliza para la transferencia de mensajes entre aplicaciones o componentes de un sistema distribuido, el cual proporciona un mecanismo para la comunicación asincrónica de manera eficiente y escalable.

Tipos de exchange:

  • Direct Exchange (Intercambio Directo): Enruta mensajes a colas basándose en una clave de enrutamiento exacta.
  • Fanout Exchange (Intercambio de Difusión): Envía mensajes a todas las colas vinculadas, sin importar la clave de enrutamiento.
  • Topic Exchange (Intercambio de Tema): Permite enrutar mensajes a colas utilizando patrones en la clave de enrutamiento.
  • Header Exchange (Intercambio de Encabezado): Enruta mensajes según atributos personalizados en el encabezado del mensaje.
  • Default Exchange (Intercambio Predeterminado): El exchange implícito para mensajes que no coinciden con ningún otro enrutamiento, generalmente utilizado para descartar o manejar mensajes no manejados.

Proceso

Es una instancia de un programa en ejecución en un sistema operativo. Cada proceso tiene su propio espacio de memoria, recursos y contexto de ejecución independiente. Los procesos se ejecutan de manera aislada y no comparten directamente su memoria ni recursos con otros procesos. Los procesos pueden comunicarse entre sí mediante mecanismos de intercomunicación como tuberías o sockets, pero esta comunicación suele ser más costosa y compleja que la comunicación entre hilos dentro del mismo proceso.

Thread

Un hilo, también conocido como subproceso o thread, es una unidad de ejecución más pequeña dentro de un proceso. Los hilos comparten el mismo espacio de memoria y recursos con otros hilos en el mismo proceso. Los hilos pueden comunicarse y compartir datos de manera más eficiente que los procesos, ya que comparten la misma memoria.

Task

Una tarea (Task) es una abstracción de alto nivel para representar una unidad de trabajo en un programa. A diferencia de los hilos, el manejo de tareas es realizado por el framework o entorno de ejecución (como el sistema de tareas en .NET) y no directamente por el programador. Las tareas permiten una forma más sencilla de expresar la ejecución concurrente y asincrónica de código, especialmente cuando se utilizan las palabras clave async y await en lenguajes como C#.

Entradas relacionadas: