Lập trình phía Backend - hiểu stream trong Node.js tối ưu hệ thống

Nội dung bài viết

Video học lập trình mỗi ngày

Stream trong Node.js được sử dụng khi xử lý các tình huống với các File lớn hoặc phát trực tiếp liveStream một ứng dụng nào đó. Thật sự nếu kỹ năng chưa đủ thì có lẽ sẽ làm một thảm họa, ví dụ sau đây làm bằng chứng...

Stream Node.js là gì?

Nếu như bạn là tân binh trong lập trình thì không nên hiểu stream là gì? về lý thuyết, mà theo tôi hay xem một video thực hành Tối ưu file khi sử dụng stream trong nodejs rồi hãy hiểu và tự định nghĩa.

Ngược lại bạn không muốn xem video thì hay đọc lý thuyết về khái niệm nó như thế này, đầy ma mị Stream là một giao diện dữ liệu trừu tượng kế thừa EventEmitter, nó có thể send/receive dữ liệu, bản chất của nó là để dữ liệu được lưu chuyển, như hình dưới đây mà tôi đã vẽ ra.

Stream in Nodejs

Nhưng hãy nhớ rằng, Stream không phải là khái niệm duy nhất trong Node. Nó là phương thức hoạt động cơ bản nhất của hệ điều hành. Trong Linux | nó là Stream nhưng được gói gọn ở cấp độ Node và cung cấp API tương ứng.

Vì sao lại sử dụng Stream?

Vì sao? Đơn giản thôi, giờ tôi có một task cho bạn như sau: Công ty có yêu cầu tải xuống một FILE lớn có 1GB, từ một dịch vụ (dịch vụ A), sau đó đọc và tải FILE lớn đó lên hệ thống S3 Bucket của công ty. s3 yêu cầu tải lên nhiều phần và kích thước của mỗi phần chỉ từ 1-5 MB và kích thước phải nhất quán..

Giải pháp đầu tiên của bạn là gì? Có phải là bạn sẽ nghĩ đến là tải tệp lớn vào bộ nhớ dưới dạng arrayBuffer, sau đó cắt nó thành các độ dài bằng nhau rồi tải lên dúng không? Sai rồi, không tin bạn hãy thử đi, xem memory lên như thế nào?

Một ví dụ về code của bạn như thế này:

fs.readFile('/fileInput.json', (err, data) => {
    if (err) throw err
    fs.writeFile('/fileOutput.json', data, () => {
        res.end('8000')
    })
})

Sai...

Stream Nodejs được sử dụng như thế nào?

Trước hết, về lý thuyết, bạn cần hiểu tại sao lại có Stream. Stream được thiết kế để giải quyết vấn đề cạn kiệt bộ nhớ trong hệ thống của bạn, theo tôi bạn hãy xem video phía trên đầu bài viết or có thể click vào Stream trong NodeJS: Kinh nghiệm của 2 Lập Trình Viên xử lý tối ưu FILE LỚN như thế nào?

Ngàn bước chân bắt đầu từ một bước chân nhỏ xíu...

Có thể bạn đã bị missing