In deze post bekijken we hoe we de runtime-omgeving van Node.js gebruiken om ons te helpen werken met datastromen die naar onze applicatie komen.
Node.js staat bekend om zijn asynchrone aard en heeft vele modules die we dagelijks in onze code gebruiken, maar krijgt altijd de kans om dieper in te duiken. Een van deze kernmodules zijn streams.
Met streams kunnen we de gegevensstroom asynchroon verwerken. Er zijn twee benaderingen voor gegevensverwerking in Nod.js.
Typen streams beschikbaar:
We hebben een bestand gemaakt met behulp van de Writable Stream. De fs-module in Node.js kan worden gebruikt om te lezen van en te schrijven naar bestanden met behulp van een Stream-interface. Het uitvoeren van de bovenstaande code genereert een bestand dat ongeveer ~ 400 MB is.
Dan maak ik verbinding met de server. Let op wat er met het verbruikte geheugen gebeurde:
Tijd efficientie
Voor een betere efficiëntie kunnen we een geweldig gedrag gebruiken dat wordt geleverd met streams in Node: piping. In principe kunt u twee streams pipen waarbij de uitvoer van de ene stream een input is voor de andere.
Wat er gebeurt is dat de “data” (brok) aankomt bij “stream 1” die “doorgesluisd wordt naar stream 2” die verder naar andere streams kan worden doorgestuurd,
Met ‘pipes’:
Op deze manier kunnen we meerdere fasen parallel maken die een gegevensblok kan doormaken. Deze strategie wordt pipelining genoemd. Met Node.js kunnen we onze taken pijplijnen met behulp van streams. Node.js kan op één thread werken, maar dit betekent niet dat we niet twee taken of processen tegelijkertijd kunnen uitvoeren. Dit kan worden gedaan via onderliggende processen in Node.js