Mục Lục
- Giới thiệu
- Tại Sao Thuật Toán Quan Trọng?
- Thuật Toán Cân Bằng Tải Tĩnh
- Round Robin
- Round Robin Có Trọng Số
- IP Hashing
- Thuật Toán Cân Bằng Tải Động
- Kết Nối Ít Nhất
- Kết Nối Ít Nhất Có Trọng Số
- Thời Gian Phản Hồi Ít Nhất
- Dựa Trên Tài Nguyên (Chỉ Số Tùy Chỉnh)
- Thuật Toán Nâng Cao
- Băm Nhất Quán
- Ngẫu Nhiên Với Hai Lựa Chọn
- Thuật Toán Kết Hợp
- Bảng So Sánh
- Thực Hành Tốt Nhất
- Kết Luận
Loạt Bài Cân Bằng Tải – Phần 3: Thuật Toán Cân Bằng Tải
Giới thiệu
Trong phần 1, chúng ta đã giới thiệu về cân bằng tải cơ bản.
Trong phần 2, chúng ta đã thảo luận về các loại cân bằng tải khác nhau.
Bây giờ, trong phần 3, chúng ta sẽ khám phá cách mà các bộ cân bằng tải thực sự quyết định nơi gửi mỗi yêu cầu đến—thông qua các thuật toán cân bằng tải.
Hãy nghĩ về bộ cân bằng tải như một người điều phối tại một bến taxi đông đúc:
- Hành khách (yêu cầu) liên tục đến.
- Người điều phối phải quyết định taxi (máy chủ) nào mà mỗi hành khách nên đi đến.
- Chiến lược quyết định là thuật toán cân bằng tải.
Tại Sao Thuật Toán Quan Trọng?
- Đảm bảo phân phối công bằng các yêu cầu.
- Ngăn ngừa quá tải cho một máy chủ đơn lẻ.
- Giảm độ trễ bằng cách định tuyến thông minh.
- Cải thiện khả năng chống lỗi bằng cách thích ứng với tình trạng máy chủ.
- Tối ưu hóa chi phí và hiệu suất.
Thuật Toán Cân Bằng Tải Tĩnh
Những thuật toán này theo các quy tắc được định nghĩa trước và không xem xét tình trạng sức khỏe hoặc tải trọng hiện tại của máy chủ.
Round Robin
- Các yêu cầu được phân phối theo thứ tự: Máy chủ 1 → Máy chủ 2 → Máy chủ 3 → Máy chủ 1 …
- Đơn giản và hiệu quả khi tất cả các máy chủ có công suất giống nhau.
Ví dụ:
- 3 máy chủ: A, B, C.
- 6 yêu cầu đến → [A, B, C, A, B, C].
Trường Hợp Sử Dụng:
- Tốt cho các ứng dụng không trạng thái nơi mỗi yêu cầu có chi phí tương tự.
Round Robin Có Trọng Số
- Mở rộng Round Robin bằng cách gán trọng số cho các máy chủ.
- Các máy chủ có công suất cao hơn nhận được nhiều yêu cầu hơn.
Ví dụ:
- Máy chủ A (trọng số 3), Máy chủ B (trọng số 1).
- 4 yêu cầu đến → [A, A, A, B].
Trường Hợp Sử Dụng:
- Môi trường có các máy chủ có công suất CPU/RAM khác nhau.
IP Hashing
- Sử dụng một hàm băm trên địa chỉ IP của khách hàng để quyết định máy chủ nào xử lý yêu cầu.
- Đảm bảo rằng cùng một khách hàng luôn kết nối với cùng một máy chủ (duy trì phiên).
Ví dụ:
- Người dùng 192.168.1.10 luôn được định tuyến đến Máy chủ A.
- Người dùng 192.168.1.20 luôn được định tuyến đến Máy chủ B.
Trường Hợp Sử Dụng:
- Giỏ hàng, phiên đăng nhập, máy chủ game nhiều người chơi.
Thuật Toán Cân Bằng Tải Động
Những thuật toán này xem xét tải trọng máy chủ theo thời gian thực trước khi đưa ra quyết định định tuyến.
Kết Nối Ít Nhất
- Yêu cầu được gửi đến máy chủ có ít kết nối hoạt động nhất.
- Hoạt động tốt khi các yêu cầu có thời gian xử lý khác nhau.
Ví dụ:
- Máy chủ A: 10 kết nối hoạt động.
- Máy chủ B: 4 kết nối hoạt động.
- Yêu cầu mới → được gửi đến Máy chủ B.
Trường Hợp Sử Dụng:
- Các kết nối dài (ví dụ: phát trực tuyến, truy vấn cơ sở dữ liệu).
Kết Nối Ít Nhất Có Trọng Số
- Giống như Kết Nối Ít Nhất, nhưng xem xét công suất máy chủ.
- Các máy chủ có công suất cao hơn có thể xử lý nhiều kết nối hơn.
Ví dụ:
- Máy chủ A (trọng số 3) có thể xử lý 300 kết nối.
- Máy chủ B (trọng số 1) có thể xử lý 100 kết nối.
- Thuật toán đảm bảo Máy chủ A nhận được 3x yêu cầu nhiều hơn Máy chủ B.
Thời Gian Phản Hồi Ít Nhất
- Yêu cầu được gửi đến máy chủ có thời gian phản hồi thấp nhất + ít kết nối hoạt động nhất.
- Cân bằng cả tốc độ và tải.
Trường Hợp Sử Dụng:
- Cổng API, nền tảng thương mại điện tử có lưu lượng truy cập cao.
Dựa Trên Tài Nguyên (Chỉ Số Tùy Chỉnh)
- Quyết định cân bằng dựa trên các chỉ số như sử dụng CPU, mức tiêu thụ bộ nhớ, độ dài hàng đợi.
- Cần kiểm tra sức khỏe và tích hợp giám sát.
Trường Hợp Sử Dụng:
- Tải trọng AI/ML, ứng dụng đòi hỏi dữ liệu cao.
Thuật Toán Nâng Cao
Băm Nhất Quán
- Các yêu cầu được phân phối dựa trên một hàm băm của khách hàng hoặc dữ liệu yêu cầu.
- Đảm bảo rằng khi các máy chủ được thêm vào/xóa bỏ, chỉ một bộ yêu cầu tối thiểu được remap.
Ví dụ:
- Được sử dụng trong các hệ thống caching phân tán như Memcached, Cassandra, và phân vùng Kafka.
Trường Hợp Sử Dụng:
- Định tuyến CDN, cơ sở dữ liệu phân tán, cụm cache.
Ngẫu Nhiên Với Hai Lựa Chọn
- Chọn hai máy chủ ngẫu nhiên và phân bổ yêu cầu cho máy chủ có ít kết nối hơn.
- Thực sự hiệu quả và giảm sự mất cân bằng.
Trường Hợp Sử Dụng:
- Hệ thống có lưu lượng cao nơi sự công bằng là rất quan trọng.
Thuật Toán Kết Hợp
- Các bộ cân bằng tải hiện đại thường kết hợp các chiến lược.
- Ví dụ: Kết Nối Ít Nhất Có Trọng Số + Băm Nhất Quán cho các API có phiên dính.
Bảng So Sánh
| Thuật Toán | Loại | Nhận Thức | Trường Hợp Sử Dụng | Ưu Điểm | Nhược Điểm |
|---|---|---|---|---|---|
| Round Robin | Tĩnh | Không | Ứng dụng không trạng thái | Đơn giản | Không xử lý tải không đều |
| Round Robin Có Trọng Số | Tĩnh | Một phần | Kích thước máy chủ khác nhau | Công bằng hơn | Cần trọng số thủ công |
| IP Hashing | Tĩnh | Dựa trên khách hàng | Duy trì phiên | Phiên dính | Khó cân bằng lại |
| Kết Nối Ít Nhất | Động | Có | Phát trực tuyến, DB | Thích nghi | Chi phí thêm |
| Kết Nối Ít Nhất Có Trọng Số | Động | Có | Công suất máy chủ không đều | Cân bằng | Cài đặt phức tạp |
| Thời Gian Phản Hồi Ít Nhất | Động | Có | API, thương mại điện tử | Tối ưu hóa | Cần giám sát |
| Băm Nhất Quán | Nâng cao | Một phần | Caching, phân vùng | Gián đoạn tối thiểu | Phức tạp hơn |
| Ngẫu Nhiên Với Hai Lựa Chọn | Nâng cao | Một phần | Lưu lượng cao | Giảm điểm nóng | Không xác định |
Thực Hành Tốt Nhất
- Ứng dụng không trạng thái → Round Robin hoặc Round Robin Có Trọng Số.
- Phiên dài hạn → IP Hashing hoặc Băm Nhất Quán.
- Tải trọng biến đổi → Kết Nối Ít Nhất hoặc Thời Gian Phản Hồi Ít Nhất.
- Hệ thống caching/phân tán hiệu suất cao → Băm Nhất Quán.
- Ứng dụng đám mây → Kết hợp (trộn lẫn thời gian phản hồi + trọng số).
Kết Luận
Các thuật toán cân bằng tải là bộ não đứng sau phân phối lưu lượng. Việc chọn thuật toán phù hợp phụ thuộc vào:
- Loại tải (không trạng thái vs. có trạng thái).
- Độ không đồng nhất của máy chủ (công suất bằng nhau vs. không bằng nhau).
- Mục tiêu hiệu suất (độ trễ vs. thông lượng).
Trong phần 4, chúng ta sẽ khám phá Kiến Trúc Bộ Cân Bằng Tải (Đơn tầng, Đa tầng, Toàn cầu, Anycast, tích hợp CDN).
Chi tiết thêm:
Nhận tất cả các bài viết liên quan đến thiết kế hệ thống
Hashtag: SystemDesignWithZeeshanAli
systemdesignwithzeeshanali
Git: https://github.com/ZeeshanAli-0704/SystemDesignWithZeeshanAli