请输入您要查询的百科知识:

 

词条 Reactor pattern
释义

  1. Structure

  2. Properties

     Benefits  Limitations 

  3. See also

  4. References

  5. External links

{{oneref|date=July 2012}}

The reactor design pattern is an event handling pattern for handling service requests delivered concurrently to a service handler by one or more inputs. The service handler then demultiplexes the incoming requests and dispatches them synchronously to the associated request handlers.[1]

Structure

Resources
Any resource that can provide input to or consume output from the system.
Synchronous Event Demultiplexer
Uses an event loop to block on all resources. The demultiplexer sends the resource to the dispatcher when it is possible to start a synchronous operation on a resource without blocking (Example: a synchronous call to read() will block if there is no data to read. The demultiplexer uses select() on the resource, which blocks until the resource is available for reading. In this case, a synchronous call to read() won't block, and the demultiplexer can send the resource to the dispatcher.)
Dispatcher
Handles registering and unregistering of request handlers. Dispatches resources from the demultiplexer to the associated request handler.
Request Handler
An application defined request handler and its associated resource.

Properties

All reactor systems are single-threaded by definition, but can exist in a multithreaded environment.

Benefits

The reactor pattern completely separates application-specific code from the reactor implementation, which means that application components can be divided into modular, reusable parts.

Limitations

The reactor pattern can be more difficult to debug[2] than a procedural pattern due to the inverted flow of control. Also, by only calling request handlers synchronously, the reactor pattern limits maximum concurrency, especially on symmetric multiprocessing hardware. The scalability of the reactor pattern is limited not only by calling request handlers synchronously, but also by the demultiplexer.[3]

See also

  • Proactor pattern (a pattern that also demultiplexes and dispatches events, but asynchronously)
  • Application server
  • C10k problem

References

1. ^Schmidt, Douglas et al. Pattern-Oriented Software Architecture Volume 2: Patterns for Concurrent and Networked Objects. Volume 2. Wiley, 2000.
2. ^{{Citation | first = Douglas C. | last = Schmidt| title = An Object Behavioral Pattern for Demultiplexing and Dispatching Handles for Synchronous Events| url =http://www.dre.vanderbilt.edu/~schmidt/PDF/reactor-siemens.pdf}}
3. ^{{Citation | last = Kegel | first = Dan | title = The C10K problem | url=http://www.kegel.com/c10k.html#nb.select | accessdate = 2007-07-28}}

External links

  • An Object Behavioral Pattern for Demultiplexing and Dispatching Handles for Synchronous Events by Douglas C. Schmidt
  • APR Networking & the Reactor Pattern
  • [https://web.archive.org/web/20100726184112/http://today.java.net/article/2007/02/08/architecture-highly-scalable-nio-based-server Architecture of a Highly Scalable NIO-Based Server]
  • Akka's I/O Layer Architecture
{{Design Patterns patterns}}

3 : Concurrent computing|Events (computing)|Software design patterns

随便看

 

开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。

 

Copyright © 2023 OENC.NET All Rights Reserved
京ICP备2021023879号 更新时间:2024/11/13 1:12:27