fbpx
Wikipedia

Reactor (patrón de diseño)

El patrón de diseño reactor es un patrón de programación concurrente para manejar peticiones de servicios entregados de forma concurrente a un manejador de servicio desde una o más entradas. El manejador de servicio demultiplexa los pedidos entrantes y los entrega de forma sincrónica a los manejadores de pedidos asociados.

Estructura

  • Recursos: cualquier medio que puede proveer entrada o salida del sistema.
  • Demultiplexor síncrono de eventos: utiliza un bucle de eventos para bloquear a todos los recursos. Cuando es posible comenzar una operación síncrona en un recurso sin necesidad de bloqueo, el demultiplexor lo envía al despachador.
  • Despachador: maneja el registro y la baja de los manejadores de pedidos. Entrega los recursos desde el multiplexor al manejador de pedidos asociado.

Propiedades

Todos los sistemas reactores son, por definición, de un solo hilo, pero pueden existir en entornos multihilo.

Beneficios

Este patrón separa completamente al código específico de la aplicación de la implementación del reactor, permitiendo que los componentes de la aplicación puedan ser divididos en módulos reutilizables. Además, la llamada síncrona de los manejadores de pedidos permite concurrencia, de grano grueso, sin agregar la complejidad de múltiples hilos en el sistema.

Limitaciones

El patrón reactor puede ser más difícil de depurar que un patrón procedimental, debido a la inversión de control. Además, al llamar a los manejadores de pedidos de forma síncrona, limita la concurrencia máxima, especialmente en los dispositivos de SMP. La escalabilidad del patrón no está limitada solamente por esto último, sino también por el demultiplexor. Las llamadas poll y select Unix tienen un número máximo de descriptores que pueden ser obtenidos y tienen problemas de rendimiento cuando se trabaja con grandes números de ellos.[1]​ (Recientemente, se hicieron disponibles variaciones más escalables de esas interfaces: "/dev/poll" en Solaris, "epoll" en Linux y "kqueue/kevent" en los sistemas basados en BSD, permitiendo la implementación de sistemas de alta performance, con grandes cantidades de descriptores abiertos)

Implementaciones

Referencias

  1. Dan Kegel C10K problem
  •   Datos: Q1122024

reactor, patrón, diseño, patrón, diseño, reactor, patrón, programación, concurrente, para, manejar, peticiones, servicios, entregados, forma, concurrente, manejador, servicio, desde, más, entradas, manejador, servicio, demultiplexa, pedidos, entrantes, entrega. El patron de diseno reactor es un patron de programacion concurrente para manejar peticiones de servicios entregados de forma concurrente a un manejador de servicio desde una o mas entradas El manejador de servicio demultiplexa los pedidos entrantes y los entrega de forma sincronica a los manejadores de pedidos asociados Indice 1 Estructura 2 Propiedades 3 Beneficios 3 1 Limitaciones 4 Implementaciones 5 ReferenciasEstructura EditarRecursos cualquier medio que puede proveer entrada o salida del sistema Demultiplexor sincrono de eventos utiliza un bucle de eventos para bloquear a todos los recursos Cuando es posible comenzar una operacion sincrona en un recurso sin necesidad de bloqueo el demultiplexor lo envia al despachador Despachador maneja el registro y la baja de los manejadores de pedidos Entrega los recursos desde el multiplexor al manejador de pedidos asociado Propiedades EditarTodos los sistemas reactores son por definicion de un solo hilo pero pueden existir en entornos multihilo Beneficios EditarEste patron separa completamente al codigo especifico de la aplicacion de la implementacion del reactor permitiendo que los componentes de la aplicacion puedan ser divididos en modulos reutilizables Ademas la llamada sincrona de los manejadores de pedidos permite concurrencia de grano grueso sin agregar la complejidad de multiples hilos en el sistema Limitaciones Editar El patron reactor puede ser mas dificil de depurar que un patron procedimental debido a la inversion de control Ademas al llamar a los manejadores de pedidos de forma sincrona limita la concurrencia maxima especialmente en los dispositivos de SMP La escalabilidad del patron no esta limitada solamente por esto ultimo sino tambien por el demultiplexor Las llamadas poll y select Unix tienen un numero maximo de descriptores que pueden ser obtenidos y tienen problemas de rendimiento cuando se trabaja con grandes numeros de ellos 1 Recientemente se hicieron disponibles variaciones mas escalables de esas interfaces dev poll en Solaris epoll en Linux y kqueue kevent en los sistemas basados en BSD permitiendo la implementacion de sistemas de alta performance con grandes cantidades de descriptores abiertos Implementaciones EditarThe ADAPTIVE Communication Environment C Apache MINA Java Netty Java xSocket Java POE Perl Twisted Python EventMachine Ruby Node js JavaScript ReactPHP PHP libowfat C Referencias Editar Dan Kegel C10K problem Datos Q1122024 Obtenido de https es wikipedia org w index php title Reactor patron de diseno amp oldid 135556675, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos