Heim >Web-Frontend >js-Tutorial >Effiziente Datenverarbeitung mit Node.js-Streams
Dalam artikel ini, kami akan menyelami jauh ke dalam Strim Node.js dan memahami cara ia membantu dalam memproses sejumlah besar data dengan cekap. Strim menyediakan cara yang elegan untuk mengendalikan set data yang besar, seperti membaca fail besar, memindahkan data melalui rangkaian atau memproses maklumat masa nyata. Tidak seperti operasi I/O tradisional yang membaca atau menulis keseluruhan data sekali gus, menstrim memecahkan data kepada bahagian yang boleh diurus dan memprosesnya sekeping demi sekeping, membolehkan penggunaan memori yang cekap.
Dalam artikel ini, kami akan membincangkan:
Strim dalam Node.js ialah aliran data yang berterusan. Strim amat berguna untuk mengendalikan tugas terikat I/O, seperti membaca fail, berkomunikasi melalui rangkaian atau berinteraksi dengan pangkalan data. Daripada menunggu keseluruhan operasi selesai, strim membolehkan data diproses dalam bahagian.
Node.js menyediakan empat jenis strim:
Mari teroka setiap jenis strim dengan contoh.
Strim boleh dibaca membolehkan anda membaca data sekeping demi sekeping, yang berguna untuk mengendalikan fail besar atau sumber data masa nyata.
const fs = require('fs'); // Create a readable stream from a large file const readableStream = fs.createReadStream('largeFile.txt', { encoding: 'utf8', highWaterMark: 16 * 1024 // 16 KB chunk size }); readableStream.on('data', (chunk) => { console.log('New chunk received:', chunk); }); readableStream.on('end', () => { console.log('Reading file completed'); });
Strim boleh tulis digunakan untuk menulis data secara berperingkat ke destinasi, seperti fail atau soket rangkaian.
const fs = require('fs'); // Create a writable stream to write data to a file const writableStream = fs.createWriteStream('output.txt'); writableStream.write('Hello, world!\n'); writableStream.write('Writing data chunk by chunk.\n'); // End the stream and close the file writableStream.end(() => { console.log('File writing completed'); });
strim dupleks boleh membaca dan menulis data. Satu contoh biasa ialah soket TCP, yang boleh menghantar dan menerima data secara serentak.
const net = require('net'); // Create a duplex stream (a simple echo server) const server = net.createServer((socket) => { socket.on('data', (data) => { console.log('Received:', data.toString()); // Echo the data back to the client socket.write(`Echo: ${data}`); }); socket.on('end', () => { console.log('Connection closed'); }); }); server.listen(8080, () => { console.log('Server listening on port 8080'); });
strim transformasi ialah jenis strim dupleks khas yang mengubah suai data semasa ia melaluinya. Kes penggunaan biasa ialah pemampatan fail.
const fs = require('fs'); const zlib = require('zlib'); // Create a readable stream for a file and a writable stream for the output file const readable = fs.createReadStream('input.txt'); const writable = fs.createWriteStream('input.txt.gz'); // Create a transform stream that compresses the file const gzip = zlib.createGzip(); // Pipe the readable stream into the transform stream, then into the writable stream readable.pipe(gzip).pipe(writable); writable.on('finish', () => { console.log('File successfully compressed'); });
Apabila berurusan dengan fail besar (cth., log atau media), memuatkan keseluruhan fail ke dalam memori adalah tidak cekap dan boleh menyebabkan masalah prestasi. Strim membolehkan anda membaca atau menulis fail besar secara berperingkat, mengurangkan beban pada memori.
Contoh:
Aplikasi masa nyata seperti pelayan sembang atau papan pemuka langsung perlu memproses data apabila ia tiba. Strim menyediakan cara untuk mengendalikan data ini dengan cekap, mengurangkan kependaman.
Contoh:
Komprimierung ist ein weiterer häufiger Anwendungsfall für Streams. Anstatt die gesamte Datei in den Speicher zu laden, können Sie Daten mithilfe von Transformationsströmen im laufenden Betrieb komprimieren.
Beispiel:
Node.js-Streams bieten eine flexible und effiziente Möglichkeit, große Datenmengen zu verarbeiten, unabhängig davon, ob Sie Dateien lesen, Netzwerkanfragen verarbeiten oder Echtzeitvorgänge ausführen. Durch die Aufteilung der Daten in überschaubare Blöcke ermöglichen Streams die Arbeit mit großen Datensätzen, ohne den Systemspeicher zu überlasten.
Im nächsten Artikel werden wir NGINX und seine Rolle bei der Bereitstellung statischer Inhalte, dem Lastausgleich und der Arbeit als Reverse-Proxy in Node.js-Anwendungen untersuchen. Wir besprechen auch, wie man SSL und Verschlüsselung für mehr Sicherheit integriert.
Das obige ist der detaillierte Inhalt vonEffiziente Datenverarbeitung mit Node.js-Streams. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!