A Reactor tervezési minta olyan eredmény kezelési minta, mely kezeli a szolgáltatáskezelőnek egy vagy több input által egymással egyidejűleg küldött szolgáltatási kéréseket. A szolgáltatáskezelő ekkor visszafejti a bejövő kéréseket és párhuzamosan továbbítja azokat a megfelelő kéréskezelőknek.Schmidt, Douglas et al. Pattern-Oriented Software Architecture Volume 2: Patterns for Concurrent and Networked Objects. Volume 2. Wiley, 2000.

Felépítés Források (resources): bármely forrás, mely a rendszer számára inputot képes előállítani vagy a rendszerből képes outputot előállítani. Párhuzamos Esemény Visszafejtő (synchrous event demultiplexer): Esemény loop-ot használ, mellyel blokkolja a forrásokat. Amikor lehetőség van blokkolás nélküli forrással párhuzamos tevékenységet végezni, elküldi a forrást a Továbbítónak. Továbbító (dispatcher): Kéréskezelők regisztrálása és deregisztrálása. A Visszafejtőtől továbbítja a forrásokat a megfelelő Kéréskezelőnek. Kéréskezelő (request handler): Az alkalmazás által meghatározott kéréskezelő és a hozzá tartozó források.

Tulajdonságok Definíció szerint minden Reaktor rendszer egyszálú, de lézethet többszálú rendszerben is.

Előnyök A Reactor tervezési minta teljes mértékben elszigeteli az alkalmazás-specifikus kódot a Reactor implementációjától, ami azt jelenti, hogy az alkalmazás összetevőit moduláris, újrahasznosítható részekre oszthatjuk. Továbbá, a kéréskezelők párhuzamos hívásának köszönhetően, a Reactor minta úgy teszi lehetővé az egyszerű konkurenciát, hogy közben nem teszi több szálas bonyolultságúvá a rendszert

Korlátok A fordított irányú vezérlésnek köszönhetően a Reactor mintát nehezebb debuggolni, mint egy procedurális mintát. Továbbá, az által, hogy párhuzamosan hívja a kéréskezelőket, a reaktor minta korlátozza a maximális konkurenciát, különösen a szimmetrikus többprocesszoros gépeken. A reaktor minta skálázhatóságát korlátozza, hogy a kéréskezelőket párhuzamosan hívja, illetve korlátozza a visszafejtő is. Kapcsolódó szócikkek Proactor programtervezési minta

Jegyzetek

Források Douglas Schmidt: Pattern-Oriented Software Architecture Volume 2: Patterns for Concurrent and Networked Objects. Volume 2. Wiley, 2000. Douglas C. Schmidt: An Object Behavioral Pattern for Demultiplexing and Dispatching Handles for Synchronous Events Reactor pattern

További idegen nyelvű irodalom An Object Behavioral Pattern for Demultiplexing and Dispatching Handles for Synchronous Events by Douglas C. Schmidt APR Networking & the Reactor Pattern Architecture of a Highly Scalable NIO-Based Server Akka's I/O Layer Architecture

Kategória:Programtervezési minták