瞭解Node.js中的Streams

Node.js以其異步性質而聞名,並且我們的代碼中每天都使用許多模塊,但是有機會深入研究。其中一個核心模塊是Streams。

Streams允許我們異步處理數據流。Node.js中有兩種數據處理方法。

  1. Buffered approach:緩衝方法表示只有在將整個數據集寫入緩衝區時,接收器才能讀取數據。
  2. Streams approach: 在流方法中,數據以塊的形式到達,並且可以以塊的形式讀取; 這可以是數據的單個部分。

可用的Streams 類型:

瞭解Node.js中的Streams

1.讓我們通過創建一個大文件進行實驗:

瞭解Node.js中的Streams

我們使用Writable Stream創建了一個文件。Node.js中的fs模塊可用於使用Stream接口讀取和寫入文件。運行上面的代碼生成一個約400 MB的文件。

2.讓我們使用讀取流讀取相同的大文件:

瞭解Node.js中的Streams

然後我連接到服務器。注意消耗的內存發生了什麼:

瞭解Node.js中的Streams

優化的數據轉換解決方案

時間效率

為了提高效率,我們可以使用Node中的Streams帶來的工具:管道。基本上,您可以通過管道鏈接兩個流,其中一個流的輸出是另一個流的輸入。

“數據”(塊)到達“流1”然後到“流2”,可以進一步通過管道傳輸到其他流:

瞭解Node.js中的Streams

這就是我們如何並行化數據塊可能經歷的多個階段。此策略稱為流水線操作。Node.js允許我們在Streams的幫助下管理我們的任務。

Node.js可以在單個線程上工作,但這並不意味著我們不能一次完成兩個任務或進程。這可以通過Node.js中的子進程完成


分享到:


相關文章: