0
0
Lập trình
TT

Có Thể Chạy Hai Backend Trên Cùng Một Cổng Không?

Đăng vào 3 tuần trước

• 2 phút đọc

Giới Thiệu

Trong lĩnh vực phát triển web, có không ít câu hỏi được đặt ra về việc có thể chạy hai backend trên cùng một cổng hay không. Bài viết này sẽ giúp bạn hiểu rõ khái niệm về binding các địa chỉ mạng và làm thế nào để tận dụng điều đó trong thực tế.

Binding Địa Chỉ Mạng

Khi triển khai một backend, lựa chọn bind vào địa chỉ nào có thể ảnh hưởng đến khả năng truy cập của ứng dụng. Các địa chỉ như 0.0.0.0, localhost, và 127.0.0.1 sẽ quyết định cách mà frontend (client) giao tiếp với backend. Nếu bạn bind vào localhost hay 127.0.0.1, frontend sẽ không thể truy cập được khi nằm trên máy khác. Ngược lại, binding vào 0.0.0.0 cho phép backend lắng nghe trên tất cả các địa chỉ IP của máy chủ, giúp các yêu cầu từ bên ngoài có thể tiếp cận backend.

Thí Nghiệm Với Node.js

Để minh họa cho khái niệm trên, chúng ta sẽ tạo một webserver đơn giản bằng Node.js với khả năng bind vào các địa chỉ mạng khác nhau.

Triển Khai Backend

javascript Copy
const http = require('http');
const express = require('express');

const port = process.env.PORT || 8080;
const bind = process.env.BIND;

const app = express();
app.get('/', (req, res) => res.send('Hello, World!\n'));

const server = http.createServer(app);
server.listen(port, bind);

Chạy Ứng Dụng

Bạn có thể khởi động backend với các lệnh sau:

bash Copy
BIND=localhost node main.js
BIND=0.0.0.0 node main.js

Phân Tích Hiệu Suất

Khi bạn chạy ứng dụng với BIND=localhost, bạn chỉ có thể gửi yêu cầu từ chính máy đó. Ngược lại, nếu sử dụng BIND=0.0.0.0, backend có thể nhận yêu cầu từ mọi địa chỉ IP, ngay cả từ các máy khác trong cùng mạng. Điều này làm cho ứng dụng trở nên linh hoạt hơn trong việc phục vụ các client khác nhau.

Chạy Hai Backend Trên Cùng Một Cổng

Để chạy hai backend trên cùng một cổng mà không làm xung đột địa chỉ, bạn có thể binds vào hai địa chỉ IP khác nhau. Trong trường hợp này, bạn có thể khai báo các thông số trong môi trường như sau:

bash Copy
BIND=192.168.1.14 ID=1 node main.js
BIND=10.103.107.31 ID=2 node main.js

Như vậy, yêu cầu từ địa chỉ IP 10.103.107.8 sẽ được phục vụ bởi backend thứ hai, trong khi backend đầu tiên phục vụ từ địa chỉ 192.168.1.14. Điều này chứng tỏ rằng việc chạy hai backend cùng một cổng là hoàn toàn khả thi, miễn là bạn phân biệt được chúng qua các địa chỉ IP khác nhau.

Kết Luận

Việc hiểu rõ về cách binding địa chỉ mạng và port sẽ giúp bạn triển khai backend một cách hiệu quả trong ứng dụng của mình. Điều này đặc biệt hữu ích trong các trường hợp cần chạy nhiều dịch vụ trên một server.

Cảm ơn bạn đã đọc bài viết này. Hy vọng bạn sẽ áp dụng được những kiến thức này trong các dự án của bản thân!
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào