Reactor programtervezési minta

A Wikipédiából, a szabad enciklopédiából

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.[1]

Felépítés[szerkeszté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[szerkesztés]

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

Előnyök[szerkesztés]

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[szerkesztés]

A fordított irányú vezérlésnek köszönhetően a Reactor mintát nehezebb debuggolni, mint egy procedurális mintát.[2] 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.[3]

Kapcsolódó szócikkek[szerkesztés]

Jegyzetek[szerkesztés]

  1. Schmidt, Douglas et al. Pattern-Oriented Software Architecture Volume 2: Patterns for Concurrent and Networked Objects. Volume 2. Wiley, 2000.
  2. Schmidt, Douglas C., An Object Behavioral Pattern for Demultiplexing and Dispatching Handles for Synchronous Events, <http://www.dre.vanderbilt.edu/~schmidt/PDF/reactor-siemens.pdf>
  3. Kegel, Dan, The C10K problem, <http://www.kegel.com/c10k.html#nb.select>. Hozzáférés ideje: 2007-07-28

Források[szerkesztés]

  • 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[szerkesztés]