143. NON-BLOCKING I/O
‣ Funktionen ohne „direkte“ Rückgabewerte
‣ „callbacks“ sind „continuations“ zur Fortsetzung
des Programmablaufs
Donnerstag, 27. Juni 13
144. NON-BLOCKING I/O
‣ Funktionen ohne „direkte“ Rückgabewerte
‣ „callbacks“ sind „continuations“ zur Fortsetzung
des Programmablaufs
‣ Background-Tasks machen die Arbeit
Donnerstag, 27. Juni 13
145. NON-BLOCKING I/O
‣ Funktionen ohne „direkte“ Rückgabewerte
‣ „callbacks“ sind „continuations“ zur Fortsetzung
des Programmablaufs
‣ Background-Tasks machen die Arbeit
‣ keine Wartezeit im Programmablauf
Donnerstag, 27. Juni 13
157. ‣ vereinfachte Form der Event-Verarbeitung
‣ wird anstelle eines return-Wertes aufgerufen
‣ NODE.JS Konvention:
function callback(err, data) {}
callback(DATA)
Donnerstag, 27. Juni 13
159. ‣ Event-Quelle und Dispatcher
‣ Empfänger werden mit on('NAME', callback)
angemeldet
‣ Events werden mit emit() ausgelöst
‣ Events werden nur an die angemeldeten Empfänger
im Event-Emitter gesendet
EVENT EMITTER
Donnerstag, 27. Juni 13
163. ‣Event-Loop startet
‣wartet auf Events
3
EVENT-LOOP
MAIN
PROCESS
WORKER
THREADS
WORKER
THREADS
WORKER
THREADS
Donnerstag, 27. Juni 13
164. Meldet „Daten“-
Rückgaben als Events
4
EVENT-LOOP
MAIN
PROCESS
WORKER
THREADSWORKER
THREADSWORKER
THREADS
➡ fs.data
➡ fs.end
➡http.request
➡ ...
➡ ...
EVENT
QUEUE
Donnerstag, 27. Juni 13
165. Dispatcher führt
für jeden EVENT
den registrierten
CALLBACK im
MAIN PROZESS aus
5
EVENT-LOOP
MAIN
PROCESS
WORKER
THREADSWORKER
THREADSWORKER
THREADS
➡ fs.data
➡ fs.end
➡http.request
EVENT
QUEUE
DISPATCH
Donnerstag, 27. Juni 13
166. ✓in nur einem Prozess
✓Single-Thread innerhalb von NODE.JS
✓keine Parallelisierung, sondern Non-Blocking
✓Event-Verarbeitung in Reihenfolge der Erzeugung
✓einfaches Modell
✓Skalierung über separate Prozesse (CPU-Intensive Tasks)
✓zwingt zum asynchronem Denken und Code
EVENT LOOP
Donnerstag, 27. Juni 13
183. ‣ Ein Gast betritt den Empfang eines Hotels
Donnerstag, 27. Juni 13
184. ‣ Ein Gast betritt den Empfang eines Hotels
‣ Rezeptionist begrüßt den Gast
Donnerstag, 27. Juni 13
185. ‣ Ein Gast betritt den Empfang eines Hotels
‣ Rezeptionist begrüßt den Gast
‣ Rezeptionist übergibt ein Anmeldeformular
Donnerstag, 27. Juni 13
186. ‣ Ein Gast betritt den Empfang eines Hotels
‣ Rezeptionist begrüßt den Gast
‣ Rezeptionist übergibt ein Anmeldeformular
‣ Rezeptionist übergibt ein Zahlungsformular
Donnerstag, 27. Juni 13
187. ‣ Ein Gast betritt den Empfang eines Hotels
‣ Rezeptionist begrüßt den Gast
‣ Rezeptionist übergibt ein Anmeldeformular
‣ Rezeptionist übergibt ein Zahlungsformular
‣ Rezeptionist kann weitere Gäste empfangen
Donnerstag, 27. Juni 13
188. ‣ Ein Gast betritt den Empfang eines Hotels
‣ Rezeptionist begrüßt den Gast
‣ Rezeptionist übergibt ein Anmeldeformular
‣ Rezeptionist übergibt ein Zahlungsformular
‣ Rezeptionist kann weitere Gäste empfangen
Donnerstag, 27. Juni 13
189. ‣ Ein Gast betritt den Empfang eines Hotels
‣ Rezeptionist begrüßt den Gast
‣ Rezeptionist übergibt ein Anmeldeformular
‣ Rezeptionist übergibt ein Zahlungsformular
‣ Rezeptionist kann weitere Gäste empfangen
‣ Der Gast füllt die Formulare aus
Donnerstag, 27. Juni 13
190. ‣ Ein Gast betritt den Empfang eines Hotels
‣ Rezeptionist begrüßt den Gast
‣ Rezeptionist übergibt ein Anmeldeformular
‣ Rezeptionist übergibt ein Zahlungsformular
‣ Rezeptionist kann weitere Gäste empfangen
‣ Der Gast füllt die Formulare aus
‣ Der Gast übergibt die ausgefüllten Formulare an den Rezeptionist
Donnerstag, 27. Juni 13
191. ‣ Ein Gast betritt den Empfang eines Hotels
‣ Rezeptionist begrüßt den Gast
‣ Rezeptionist übergibt ein Anmeldeformular
‣ Rezeptionist übergibt ein Zahlungsformular
‣ Rezeptionist kann weitere Gäste empfangen
‣ Der Gast füllt die Formulare aus
‣ Der Gast übergibt die ausgefüllten Formulare an den Rezeptionist
Donnerstag, 27. Juni 13
192. ‣ Ein Gast betritt den Empfang eines Hotels
‣ Rezeptionist begrüßt den Gast
‣ Rezeptionist übergibt ein Anmeldeformular
‣ Rezeptionist übergibt ein Zahlungsformular
‣ Rezeptionist kann weitere Gäste empfangen
‣ Der Gast füllt die Formulare aus
‣ Der Gast übergibt die ausgefüllten Formulare an den Rezeptionist
‣ Rezeptionist überprüft die erhaltenen Formulare
Donnerstag, 27. Juni 13
193. ‣ Ein Gast betritt den Empfang eines Hotels
‣ Rezeptionist begrüßt den Gast
‣ Rezeptionist übergibt ein Anmeldeformular
‣ Rezeptionist übergibt ein Zahlungsformular
‣ Rezeptionist kann weitere Gäste empfangen
‣ Der Gast füllt die Formulare aus
‣ Der Gast übergibt die ausgefüllten Formulare an den Rezeptionist
‣ Rezeptionist überprüft die erhaltenen Formulare
‣ Gast bekommt seinen Zimmerschlüssel, oder muss das/die Formulare
nochmals ausfüllen
Donnerstag, 27. Juni 13
196. ‣ nur 1 Gast je Rezeptionisten
SYNC
Donnerstag, 27. Juni 13
197. ‣ nur 1 Gast je Rezeptionisten
‣ X gleichzeitige Gäste brauchen X Rezeptionisten
(= Threads)
SYNC
Donnerstag, 27. Juni 13
198. ‣ nur 1 Gast je Rezeptionisten
‣ X gleichzeitige Gäste brauchen X Rezeptionisten
(= Threads)
‣ Rezeptionisten und Gast warten (= Locking)
SYNC
Donnerstag, 27. Juni 13
199. ‣ nur 1 Gast je Rezeptionisten
‣ X gleichzeitige Gäste brauchen X Rezeptionisten
(= Threads)
‣ Rezeptionisten und Gast warten (= Locking)
‣ wenn mehr Gäste als Rezeptionisten:
Warteschlange am Eingang
SYNC
Donnerstag, 27. Juni 13
200. ‣ nur 1 Gast je Rezeptionisten
‣ X gleichzeitige Gäste brauchen X Rezeptionisten
(= Threads)
‣ Rezeptionisten und Gast warten (= Locking)
‣ wenn mehr Gäste als Rezeptionisten:
Warteschlange am Eingang
‣ oder ständig "schlafende" Rezeptionisten
SYNC
Donnerstag, 27. Juni 13
203. ‣ nur 1 Rezeptionist für X Gäste
ASYNC
Donnerstag, 27. Juni 13
204. ‣ nur 1 Rezeptionist für X Gäste
‣ zu viele Gäste führen nur zur langsameren
Ausführung nicht zur Blocking
ASYNC
Donnerstag, 27. Juni 13
205. ‣ nur 1 Rezeptionist für X Gäste
‣ zu viele Gäste führen nur zur langsameren
Ausführung nicht zur Blocking
‣ Lange Aktionen werden von Background-Services
erledigt
ASYNC
Donnerstag, 27. Juni 13
206. ‣ nur 1 Rezeptionist für X Gäste
‣ zu viele Gäste führen nur zur langsameren
Ausführung nicht zur Blocking
‣ Lange Aktionen werden von Background-Services
erledigt
‣ jegliche Aktion wird über Events ausgelöst
ASYNC
Donnerstag, 27. Juni 13
207. ‣ nur 1 Rezeptionist für X Gäste
‣ zu viele Gäste führen nur zur langsameren
Ausführung nicht zur Blocking
‣ Lange Aktionen werden von Background-Services
erledigt
‣ jegliche Aktion wird über Events ausgelöst
‣ Rezeptionisten sind nicht untätig
ASYNC
Donnerstag, 27. Juni 13