Node.js 中的 Chunk 是什么?

2025 年 2 月 25 日 | 阅读 4 分钟

在本文中,我们将讨论 Node.js 中的 chunks,包括其语法、参数和示例。

什么是 Chunks?

Chunks 是较小的数据块,它们被一个接一个地处理,而不是一次性将整个数据集放入内存。这种方法在处理大型文件或连续数据流(如流式视频或大型 JSON 文件)时非常有用。

Chunks 如何工作?

在 Node.js 中,chunks 对 streams 的功能至关重要。Streams 是允许从源连续读取数据或向目标连续写入数据的对象。Streams 以数据块的形式处理数据,而不是一次性读取或写入所有数据。使用这种方法可以确保即使在处理大型数据集时也能保持低内存占用。

可以创建一个数据流,然后开始发出独立的数据块,这些数据块可以单独处理。另一方面,可读流可以接收数据块并将其写入目标,而可读流可以发出从文件中读取的数据块。

流的类型

流有 4 种类型

  1. 可读流 (Readable Streams)
    可读流用于从源读取数据。用于文件读取的 Fs.createReadStream()HTTP 请求对象是两个示例。
  2. 可写流 (Writable Streams)
    可写流用于将数据写入目标。示例包括 HTTP 响应对象以及使用 fs.createWriteStream() 进行的文件写入。
  3. 双工流 (Duplex Streams)
    它能够写入和读取数据。TCP 套接字是其中一种示例。
  4. 转换流 (Transform Streams)
    双工流可以在读取和写入数据的同时修改或转换数据。示例包括用于压缩的 zlib.createGzip()。

语法

它具有以下语法:

参数

  • eventName: 这是一个字符串,包含我们要监听的事件的名称。对于 HTTP 请求对象,“data”、“end”、“error”等事件很常见。
  • callback: 如果发生给定情况,将调用此函数。回调函数通常接受包含上下文或事件相关数据的参数。

返回类型

此方法的返回类型为 void。

示例

让我们举一个例子来说明 Node.js 中的 chunks

输出

 
The server running at https://:3000/
Received body: Hello, world!   

说明

此 Node.js 代码配置了一个 HTTP 服务器,并监听 3000 端口以接收传入请求。它异步处理请求,以数据块的形式收集请求体,并在完全接收到请求体后发送确认消息。错误处理确保记录处理请求时遇到的任何问题,并将这些问题以适当的方式反馈给客户端。此配置用于在 Node.js 环境中处理简单的 HTTP 请求和响应。

Chunks 的应用

Chunks 的应用有以下几点

1. 文件处理

快速高效地读取和写入大型文件,而无需将整个文件加载到内存中

在处理大型文件(几十亿或几万亿字节)时,将整个文件加载到内存中可能效率低下,并且由于内存限制会导致性能问题甚至崩溃。应用程序可以通过读取和写入小型的、可管理的数据块(通常为几千字节到几千兆字节)来处理文件。这种方法可以更好地利用内存资源,并加快处理、传输和查找大量数据的操作。

2. 流媒体

使用分块数据处理来管理流式音频或视频

流媒体服务使用互联网持续提供音频和视频内容。媒体文件被分解成数据块(通常持续几秒钟),以实现无缝播放并减少缓冲延迟。在缓冲了足够的数据后,这些数据块会依次发送到用户的设备并开始播放。数据块提供了自适应流,通过允许数据块的质量和比特率根据网络条件自动变化,从而确保连续的观看或收听体验。

3. 实时数据传输

以可管理的数据块通过网络传输大型数据集

在分布式计算、云存储和数据同步等场景中,有效传输大型数据集至关重要。网络可能会施加吞吐量和数据包大小的限制,并且可能会发生传输中断。通过将数据分解成数据块,可以传输、确认和重新传输数据。这种方法允许恢复中断的传输,而无需重新传输整个数据集,同时提高可靠性并降低延迟。


下一个主题Bcrypt-in-nodejs