Fundamentos de Concurrencia, Sincronización y Mensajería en Sistemas Distribuidos

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en con un tamaño de 3,56 KB

Mecanismos de Sincronización

  • Mutex: Objeto del sistema operativo que puede utilizarse para la sincronización entre procesos, así como para la exclusión mutua entre hilos y procesos. Su alcance permite sincronizar threads entre aplicaciones.
  • Monitor: Proporciona exclusión mutua entre hilos del mismo proceso y la sincronización específica de los hilos con los métodos Wait() y Pulse(). Es mucho más rápido que un Mutex.
  • Lock: Es similar al monitor; ofrece exclusión mutua entre hilos del mismo proceso.

Sistemas de Mensajería: RabbitMQ

RabbitMQ es una implementación de MOM (Message Oriented Middleware) 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 asíncrona 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 procesados.

Unidades de Ejecución

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 (Hilo)

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 (Tarea)

Una 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: