Lưu trữ các tệp đã tạo bằng Node.js

Bạn có yêu cầu sau: Bạn cần tạo một tệp trong ứng dụng web của mình (giả sử, tạo tệp PDF) và lưu trữ tệp đã nói sẽ được truy cập sau bởi ứng dụng web của bạn.
Để lưu trữ những ngày này, các dịch vụ đám mây đã trở thành của riêng họ vào cuối. Lấy ví dụ: hai dịch vụ của một cặp nhà cung cấp đám mây hàng đầu thế giới: Dịch vụ lưu trữ S3 của Amazon và dịch vụ lưu trữ của Microsoft Azure. Bằng cách giảm tải lưu trữ và quản lý cho một dịch vụ từ xa, dựa trên đám mây, chúng tôi có thể (đủ khả năng) làm việc với các tệp mà chúng tôi cần mà không làm gánh nặng máy chủ ứng dụng / lưu trữ của chúng tôi.
Và với thông lượng mạng hiện tại và băng thông khả dụng, việc truy cập các dịch vụ này qua HTTP đã khiến toàn bộ giải pháp trở nên đơn giản, khả thi.
Vì vậy, bạn tự nhủ: "Tuyệt vời! Tôi có ứng dụng Node.js siêu hiện đại này có thể tạo các tệp của tôi. Thời gian để lưu cho tôi một số đốm màu và tài liệu trên đám mây!"
Không nhanh như vậy, bucko.
(Lịch sự: frinkiac.com)
Chúng ta hãy xem xét một vài cách để xử lý tình huống này và xem liệu chúng ta không thể tìm ra một cách lý tưởng để thực hiện nó. "Hãy nhìn trước khi bạn nhảy," như họ nói.
Cách 1: Cách dễ dàng
Người ta có thể lập luận rằng cách nhanh nhất (hoặc, ít nhất, rõ ràng nhất) để tạo và tải lên tệp của bạn là như sau:
Tạo tập tin và lưu nó vào đĩa cục bộ tạm thời.
Sử dụng API lưu trữ đám mây mong muốn và trỏ nó vào tệp trên đĩa.
Gửi.
Xóa / dọn dẹp bất kỳ tập tin tạm thời được lưu trữ.
Chắc chắn, điều này có vẻ dễ dàng, nhưng với bất kỳ lưu lượng truy cập tăng mạnh, bạn mong muốn có máy chủ I / O bị ràng buộc vì nó phải thực hiện một số thao tác đĩa để lưu, đọc và cuối cùng xóa tệp tạm thời. Không phải là một lựa chọn nóng.
Làm thế nào chúng ta có thể cải thiện điều này?
Tùy chọn 2: Đĩa sử dụng này đã kết thúc!
Còn việc cắt đĩa ops hoàn toàn thì sao? Điều gì xảy ra nếu chúng tôi sử dụng một đặc sản Node.js, tức là các luồng bộ nhớ?
Quá trình sẽ trông giống như thế này:
Tạo một luồng bộ nhớ.
Tạo tệp và .pipe () vào luồng bộ nhớ ở trên.
Lấy luồng bộ nhớ và sử dụng API đám mây của bạn để đọc luồng để tạo luồng mới, dành riêng cho API.
Kết thúc viết vào luồng trên.
Đây chắc chắn là một cải tiến, nhưng việc giới thiệu luồng trung gian cảm thấy không cần thiết và tệ nhất là có thể gây gánh nặng cho RAM máy chủ của bạn.
Có cách nào tốt hơn không?
Tùy chọn 3: Luồng API
Tùy chọn này là bằng chứng cho thấy các nhà cung cấp đám mây đang lắng nghe nhu cầu của các nhà phát triển. Ví dụ: trong trường hợp của cả AWS và Azure, mỗi cái cho phép bạn chuyển trực tiếp đến một luồng dành riêng cho API. Vì vậy, bây giờ quá trình của bạn diễn ra như thế này:
Tạo một luồng dành riêng cho API.
Tạo tệp và .pipe () nó vào luồng từ phía trên.
Bạn đã hoàn tất.
Không có luồng trung gian hoặc các bước không cần thiết! Các mã chính nó là ngắn gọn và đến điểm.
Phần kết luận
Viết vào lưu trữ đám mây chưa bao giờ được dễ dàng hơn. Với các tùy chọn từ gửi từ tệp trên đĩa đến sử dụng luồng, có một giải pháp cho hầu hết mọi trường hợp sử dụng.
Chúc bạn viết vui vẻ!
Có thể bạn quan tâm
