Hoạt động zip và giải nén có thể được thực hiện đa luồng trong nodejs không?
Đúng.
... và bạn không thể tự bắt đầu nhiều luồng ... vì mỗi tệp zip phải được xử lý trong một luồng
Tôi nghi ngờ tiền đề của bạn là bị lỗi. Tại sao chính xác bạn nghĩ rằng một quá trình nút có thể bắt đầu nhiều luồng? Đây là một ứng dụng tôi đang chạy đang sử dụng mô đun cụm node.js rất trưởng thành với quy trình cha mẹ đóng vai trò là người giám sát và hai quy trình con thực hiện các tác vụ ràng buộc I / O của mạng và đĩa.
Như bạn có thể thấy trong C
cột, mỗi quá trình đang chạy trên một luồng riêng biệt. Điều này cho phép tiến trình chủ vẫn đáp ứng cho các tác vụ lệnh và điều khiển (như sinh sản / gặt hái công nhân) trong khi các tiến trình worker bị ràng buộc CPU hoặc đĩa. Máy chủ đặc biệt này chấp nhận các tệp từ mạng, đôi khi giải nén chúng và cung cấp cho chúng thông qua các bộ xử lý tệp bên ngoài. IOW, đây là một nhiệm vụ bao gồm nén như bạn mô tả.
Tôi không chắc chắn bạn muốn sử dụng các luồng công nhân dựa trên đoạn trích này từ các tài liệu :
Công nhân (luồng) rất hữu ích để thực hiện các hoạt động JavaScript chuyên sâu của CPU. Họ sẽ không giúp được gì nhiều cho công việc chuyên sâu I / O. Các hoạt động I / O không đồng bộ tích hợp sẵn của Node.js hiệu quả hơn so với Công nhân có thể.
Đối với tôi, mô tả đó hét lên, "crypo!" Trước đây, tôi đã sinh ra các quy trình con khi phải thực hiện bất kỳ thao tác crypo đắt tiền nào.
Trong một dự án khác, tôi sử dụng mô đun child_ process của nút và khởi động một tiến trình con mới mỗi lần tôi có một lô tệp để nén. Dịch vụ cụ thể đó thấy một danh sách ~ 400 tệp có tên như process-me-2019.11.DD.MM
và ghép chúng thành một process-me-2019-11-DD
tệp duy nhất . Phải mất một thời gian để nén để sinh ra một quy trình mới tránh bị chặn trên luồng chính.