Advance
Dưới đây là giải thích chi tiết các câu hỏi của bạn về Cluster module, triển khai Node.js lên cloud, và quản lý tài nguyên, từ góc nhìn của một Senior Backend Developer:
🔸 1. Cluster module trong Node.js là gì và tại sao cần sử dụng?
✅ Mục tiêu:
Node.js chạy trên một luồng đơn (single-threaded) → không tận dụng hết sức mạnh CPU đa nhân.
✅ Cluster là gì?
Cluster module cho phép tạo ra nhiều tiến trình con (worker processes) chia sẻ cùng một server port, nhờ đó:
Tận dụng đa nhân CPU
Xử lý nhiều request song song
Cải thiện hiệu năng và khả năng mở rộng
✅ Khi nào nên dùng?
Ứng dụng CPU-intensive hoặc high-concurrency (chat, API server)
Khi bạn muốn zero-downtime restarts (thường kết hợp với PM2)
✅ Cách sử dụng:
🔸 2. Cách triển khai Node.js lên AWS hoặc Heroku
✅ Heroku (simple + fast)
Bước 1: Cài Heroku CLI và đăng nhập
Bước 2: Tạo file Procfile
Bước 3: Deploy
Heroku sẽ tự động:
Cài dependencies (
npm install)Chạy server qua
ProcfileGán port qua
process.env.PORT
✅ AWS EC2 (manual control)
Bước 1: Tạo EC2 Instance (Ubuntu)
SSH vào server
Bước 2: Cài Node.js, Git
Bước 3: Clone repo & chạy
Bước 4: Dùng pm2 để quản lý tiến trình
Bước 5: Mở port 80 hoặc 3000 qua security group
🔸 3. Quản lý và tối ưu tài nguyên trong Node.js
✅ Bộ nhớ:
Tránh lưu state lớn trong RAM (chuyển sang Redis hoặc DB)
Dọn bộ nhớ không cần thiết – tránh giữ references không dùng
Giới hạn bộ nhớ tối đa:
✅ Theo dõi memory leaks:
Dùng
clinic,heapdump,memwatch-nextđể phân tích memory snapshotDùng
process.memoryUsage()để log định kỳ RAM tiêu thụ
✅ Sử dụng công cụ:
PM2: Tự động restart app, cluster, monitoring
New Relic / Datadog / Prometheus: giám sát tài nguyên thật-time
✅ Tối ưu code:
Tránh synchronous I/O (dùng async/await hoặc stream)
Sử dụng caching (Redis, in-memory LRU)
Tránh deep clone, JSON.parse/stringify thường xuyên
Sử dụng
Bufferthay vì string nếu làm việc với binary data
✅ Tóm tắt:
Cluster module
Dùng để scale app theo CPU cores
Triển khai lên cloud
Heroku (dễ), AWS EC2 (mạnh & tùy biến cao)
Quản lý tài nguyên
PM2, async code, caching, memory profiling
Last updated