Vzor reaktoru - Reactor pattern
Reaktor návrhový vzor je zpracování událostí vzor pro zpracování doručených požadavků na službu současně k obslužné rutině služby jedním nebo více vstupy. Obsluha služby pak demultiplexy příchozí požadavky a synchronně je odešle do přidružených obslužných rutin požadavků.[1]
Struktura
- Zdroje
- Libovolný prostředek, který může poskytnout vstup do systému nebo spotřebovat výstup ze systému.
- Demultiplexer synchronních událostí
- Používá smyčka události blokovat na všech zdrojích. Demultiplexer odešle prostředek dispečerovi, když je možné zahájit synchronní operaci na prostředku bez blokování (Příklad: synchronní volání na
číst()
se zablokuje, pokud nejsou k dispozici žádná data ke čtení. Demultiplexer používávybrat()
na zdroji, který blokuje, dokud není zdroj k dispozici ke čtení. V tomto případě synchronní volání načíst()
Neblokuje a demultiplexor může odeslat prostředek dispečerovi.) - Odesílatel
- Zpracovává registraci a zrušení registrace obslužných rutin požadavků. Odešle prostředky z demultiplexeru do přidružené obslužné rutiny požadavku.
- Obsluha požadavku
- Obslužný program definovaný aplikací a jeho přidružený prostředek.
Vlastnosti
Všechny reaktorové systémy jsou podle definice jednovláknové, ale mohou existovat v a vícevláknové životní prostředí.
Výhody
Vzor reaktoru zcela odděluje kód pro konkrétní aplikaci od implementace reaktoru, což znamená, že komponenty aplikace lze rozdělit na modulární, opakovaně použitelné části.
Omezení
Schéma reaktoru může být obtížnější ladit[2] než procedurální vzorec kvůli obrácenému toku řízení. Také tím, že synchronní volání obslužných rutin požadavků omezuje vzor reaktoru, omezuje maximální souběžnost, zejména na symetrické více procesů Hardware. Škálovatelnost vzoru reaktoru je omezena nejen synchronním voláním obslužných rutin požadavků, ale také demultiplexerem.[3]
Viz také
- Proactor vzor (vzor, který také demultiplexuje a odesílá události, ale asynchronně)
- Aplikační server
- Problém C10k
Reference
- ^ Schmidt, Douglas a kol. Softwarová architektura orientovaná na vzorky, svazek 2: Vzory pro souběžné a síťové objekty. Svazek 2. Wiley, 2000.
- ^ Schmidt, Douglas C., Vzor chování objektu pro demultiplexování a odesílání popisovačů pro synchronní události (PDF)
- ^ Kegel, Dan, Problém C10K, vyvoláno 2007-07-28