Docs học tập
Backend nền tảng

B4 · TCP, UDP, DNS, HTTP và Connection Pool

TCP: tin cậy, có thứ tự, bắt tay 3 bước → HTTP/1.1, HTTP/2, kết nối DB. UDP: nhanh, không đảm bảo → video call, game, DNS, HTTP/3 (QUIC).

B4 · Junior · cốt lõi

TCP như thư bảo đảm: có xác nhận, đúng thứ tự, mất thì gửi lại. UDP như phát tờ rơi: nhanh, không đảm bảo ai nhận. DNS như danh bạ đổi tên thành số điện thoại.

Cốt lõi

  • TCP: tin cậy, có thứ tự, bắt tay 3 bước → HTTP/1.1, HTTP/2, kết nối DB. UDP: nhanh, không đảm bảo → video call, game, DNS, HTTP/3 (QUIC).
  • DNS: tên miền → IP, có TTL cache.
  • HTTP: method (GET, POST, PUT, PATCH, DELETE), status code 2xx / 3xx / 4xx / 5xx, header.
  • Mở kết nối mới tốn kém (TCP + TLS) → connection pool tái sử dụng kết nối tới DB và dịch vụ khác.

Đánh đổi

Pool quá nhỏ → request xếp hàng chờ; quá lớn → DB quá tải. Kích thước pool phải tính theo tổng số instance.

Trong thực tế

Mỗi request mở rồi đóng kết nối DB → chậm và dễ cạn kết nối; dùng pool (HikariCP, pgxpool, node-postgres Pool…).

Bug thường gặp

Quên trả kết nối về pool trong nhánh xử lý lỗi → vài giờ sau pool cạn, mọi request treo chờ kết nối.

Tự hỏi lại

Vì sao trả HTTP 200 kèm {"error": …} là thiết kế API không tốt?

On this page