Thứ Năm, 18 tháng 9, 2025

6 thuật toán load balancing phổ biến

  • Nguồn
  • Giới thiệu
  • Static load balancing
  • Dynamic load balancing
  • Tổng kết

Nguồn

 Top 6 Load Balancing Algorithms Every Developer Should Know

Giới thiệu

Trong bài này, ta sẽ đi qua một số thuật toán load balancing (cân bằng tải).

Bạn có bao giờ tự hỏi các nền tảng lớn hiện nay xử lý hàng triệu request mượt mà như thế nào chưa. Load balancing là một thành phần cực kỳ quan trọng của các ứng dụng quy mô lớn. Bằng cách phân phối công việc đều trên nhiều server, load balancing giúp tăng tính khả dụng (availability), khả năng phản hồi (responsiveness) và khả năng mở rộng (scalability).

Hiểu được các thuật toán load balancing phổ biến sẽ giúp ta thiết kế, tìm lỗi và tối ưu ứng dụng của ta tốt hơn.

Có hai loại thuật toán load balancing: static load balancing (tĩnh) và dynamic load balancing (động). Ta sẽ khái quát từng loại và đi vào mỗi thuật toán, xem chúng hoạt động như thế nào, ưu và nhược điểm của chúng là gì.

Static load balancing

Các thuật toán static load balancing phân phối các request đến các server mà không quan tâm đến trạng thái thời gian thực cũng như hiệu suất của server lúc đó.

Ưu điểm chính của các thuật toán static load balancing là sự đơn giản. Tuy nhiên nhược điểm của chúng là ít khả năng thích nghi và kém chuẩn xác.

Round Robin

Round Robin (RR) về mặt lý thuyết được xem là thuật toán đơn giản nhất. Nó phân phối các request đến các server theo thứ tự. Nó sẽ gửi request 1 đến server A, request 2 đến server B và cứ thế theo thứ tự. Thuật toán này rất dễ cài và dễ hiểu.

Tuy nhiên, bạn sẽ có khả năng sẽ làm quá tải các server nếu không theo dõi tình trạng của chúng.

Sticky Round Robin

Sticky Round Robin là bản mở rộng của Round Robin. Nó gửi các request đến các server theo thứ tự như Round Robin, nhưng request từ cùng user sẽ được gửi đến cùng server. Mục tiêu ở đây là để cải thiện hiệu suất khi có các data liên quan ở cùng một server.

Nhưng mất cân bằng tải sẽ xảy ra nếu một số user có nhiều request hơn các user khác.

Weighted Round Robin

Weighted Round Robin là cho phép người vận hành gán trọng số (hay độ ưu tiên) cho mỗi server. Trọng số càng cao thì càng nhận được nhiều request. Cách này giúp ta giải quyết vấn đề khi có một số server mạnh hơn nhóm còn lại. Nhược điểm là trọng số cần phải được cài đặt bằng tay, khiến thuật toán này không thích nghi được với các thay đổi.

Hash-based

Thuật toán dựa trên hash (hash-based) dùng một hàm hash để ánh xạ request đến server xử lý nó. Hàm này thường nhận vào địa chỉ IP của client hoặc URL được gọi để xác định hướng của request đến server nào. Nó có thể phân phối đều các request nếu hàm hash tốt. Tuy nhiên, tìm ra được hàm hash tối ưu khá là khó.

Dynamic load balancing

Các thuật toán dynamic load balancing phân phối các request dựa trên trạng thái thời gian thực và hiệu suất của các server.

Least Connection

Thuật toán Least Connection (ít kết nối nhất) gửi mỗi request mới đến server có ít kết nối hoạt động nhất. Thuật toán này cần phải theo dõi số lượng kết nối hiện tại trên mỗi server. Điểm lợi là các request mới sẽ được gửi đến server có nhiều đất hoạt động nhất. Tuy nhiên, sẽ có khả năng sẽ có quá nhiều reuqest đến một server nếu các kết nối rải ra không đều.

Least Response Time

Thuật toán Least Response Time (thời gian trả về ít nhất) gửi request đến server có thời gian trả về ít nhất hiện tại (nhanh nhất). Độ trễ của mỗi server được tính toán liên tục. Thuật toán này có khả năng thích nghi và phản ứng cao. Tuy nhiên nó cần được theo dõi nhiều bởi người quản trị, khiến nó khả phức tạp để vận hành. Nó cũng không quan tâm đến việc có bao nhiêu request đang được xử lý trên mỗi server.

Tổng kết

Rõ ràng là ta thấy mỗi loại thuật toán đều có ưu nhược điểm riêng. Ta cần cân nhắc về hiệu suất, khả năng server và các giới hạn trước khi chọn thuật toán load balancing phù hợp cho ứng dụng của ta.

Thuật toán Round Robin hoạt động tốt trên các ứng dụng đơn giản. Còn các thuật toán dynamic load balancing giúp tối ưu thời gian trả về và tính khả dụng cho các ứng dụng lớn và phức tạp.

=============================
Website không chứa bất kỳ quảng cáo nào, mọi đóng góp để duy trì phát triển cho website (donation) xin vui lòng gửi về STK 90.2142.8888 - Ngân hàng Vietcombank Thăng Long - TRAN VAN BINH
=============================
Nếu bạn không muốn bị AI thay thế và tiết kiệm 3-5 NĂM trên con đường trở thành DBA chuyên nghiệp hay làm chủ Database thì hãy đăng ký ngay KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE, được Coaching trực tiếp từ tôi với toàn bộ bí kíp thực chiến, thủ tục, quy trình của gần 20 năm kinh nghiệm (mà bạn sẽ KHÔNG THỂ tìm kiếm trên Internet/Google) từ đó giúp bạn dễ dàng quản trị mọi hệ thống Core tại Việt Nam và trên thế giới, đỗ OCP.
- CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
- Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
2 khóa học online qua video giúp bạn nhanh chóng có những kiến thức nền tảng về Linux, Oracle, học mọi nơi, chỉ cần có Internet/4G:
- Oracle cơ bản: https://bit.ly/admin_1200
- Linux: https://bit.ly/linux_1200
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
cơ sở dữ liệu, cơ sở dữ liệu quốc gia, database, AI, trí tuệ nhân tạo, artificial intelligence, machine learning, deep learning, LLM, ChatGPT, DeepSeek, Grok, oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c/21c/23c/23ai, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, docker, k8s, micro service, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty Sửa bài viết

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master