Đi đến nội dung chính
VI
Trang chủ / Bài viết / Mở rộng và triển khai hệ thống không gián đoạn
11 thg 6, 2026 · Z-SOFT Admin · 10 phút đọc

Mở rộng và triển khai hệ thống không gián đoạn

Phối hợp kiểm tra sẵn sàng, tự động mở rộng và dừng máy chủ đúng cách để triển khai mà không làm gián đoạn người dùng.

Xem tất cả bài viết

Ý chính: Phần lớn thời gian gián đoạn xuất hiện khi hệ thống đang thay đổi, không chỉ khi hệ thống thiếu máy chủ.

Thuật ngữ trong bài: Readiness: máy chủ đã sẵn sàng nhận lưu lượng; drain: ngừng nhận việc mới và hoàn tất việc đang chạy; canary: đưa phiên bản mới cho một phần nhỏ người dùng.

Bài toán thực tế

Máy chủ mới có thể nhận lưu lượng trước khi các thành phần phụ thuộc sẵn sàng. Máy chủ cũ cũng có thể bị dừng khi vẫn còn yêu cầu đang xử lý. Chỉ theo dõi CPU trung bình sẽ không phát hiện được hai rủi ro này.

Độ sẵn sàng không chỉ phụ thuộc vào số lượng máy chủ. Khi triển khai, hệ điều phối, bộ cân bằng tải và ứng dụng phải thống nhất lúc nào một tiến trình được nhận lưu lượng và lúc nào nó đã xử lý xong để có thể dừng.

Readiness quá lỏng sẽ đưa lưu lượng vào máy chưa sẵn sàng; readiness phụ thuộc quá nhiều dịch vụ bên ngoài lại có thể loại toàn bộ máy khỏe khỏi hệ thống.

Thiết kế và triển khai

  1. Mở rộng dựa trên mức bão hòa, độ trễ P99 và tuổi hàng đợi thay vì chỉ một chỉ số trung bình.
  2. Giữ liveness đơn giản; dùng readiness để quyết định một tiến trình có được nhận lưu lượng hay không.
  3. Khi dừng, ngừng nhận lưu lượng mới, hoàn tất các yêu cầu đang xử lý rồi mới đóng kết nối phụ thuộc.

Mã minh họa: Máy trạng thái khi dừng ứng dụng

RUNNING  --SIGTERM-->  DRAINING
DRAINING: readiness = false
DRAINING: ngừng nhận queue job mới
DRAINING: chờ loadBalancerPropagation
DRAINING: await inFlightRequests == 0
DRAINING: đóng database và broker pool
DRAINING  --deadline-->  TERMINATED

terminationGrace >= propagation + maxRequest + cleanup

Thời hạn dừng phải dài hơn phần lớn yêu cầu hợp lệ nhưng vẫn hữu hạn để một yêu cầu kẹt không giữ tiến trình mãi mãi.

Rủi ro cần tính trước

  • Readiness báo sẵn sàng trước khi cấu hình, migration hoặc nhóm kết nối bắt buộc đã hoàn tất.
  • Bộ cân bằng tải tiếp tục gửi lưu lượng trong một khoảng thời gian sau khi readiness đổi.
  • Tự động mở rộng và cập nhật cuốn chiếu cùng lúc rút bớt quá nhiều năng lực.

Nên theo dõi gì?

Tín hiệuĐiều tín hiệu cho biết
Tỷ lệ thành công phía người dùng và P99Bản phát hành chỉ khỏe khi yêu cầu thật vẫn thành công trong mục tiêu độ trễ.
Số tiến trình đang khởi động, sẵn sàng và đang drainCho thấy rõ từng trạng thái vòng đời thay vì coi mọi tiến trình đang chạy là năng lực dùng được.
Số yêu cầu còn xử lý lúc tiến trình bị dừngMọi lần buộc dừng với giá trị lớn hơn 0 đều cho thấy thời gian drain chưa đủ.
Tốc độ tiêu hao ngân sách lỗi khi triển khaiCho phép tự động tạm dừng hoặc quay lui trước khi lỗi lan ra toàn bộ hệ thống.

Đưa vào production từng bước

Đo thời gian khởi động, thời gian bộ cân bằng tải cập nhật và thời lượng của yêu cầu dài nhất trước khi đổi hành vi dừng tiến trình. Sau đó bật drain trên một nhóm nhỏ, kiểm tra các lần buộc dừng và chỉ tự động quay lui khi cảnh báo theo SLO đã đủ đáng tin.

Điều cần nhớ

Triển khai không gián đoạn là quản lý trọn vòng đời lưu lượng: chuẩn bị, nhận việc, ngừng nhận việc mới, hoàn tất việc đang chạy rồi mới kết thúc tiến trình.

HỢP TÁC CÙNG Z-SOFT

Mỗi quyết định công nghệ hôm nay đều ảnh hưởng đến nhiều năm sau.

Trao đổi với đội ngũ Z-SOFT để đánh giá hiện trạng, xác định mục tiêu và lựa chọn kiến trúc phù hợp với định hướng phát triển của doanh nghiệp.

Đặt lịch tư vấn