Trong một thị trấn nhỏ của dữ liệu, có một ngã tư thông tin nơi lưu lượng truy cập từ khắp nơi trên thế giới hội tụ. Nhưng số lượng yêu cầu tới là quá lớn, thị trưởng thị trấn đã quyết định thuê một kĩ sư có tên là Load Balancer về làm nhiệm vụ xử lí các yêu cầu tới một cách hiệu quả. Với khả năng phân tích nhanh chóng và chính xác của mình, Load Balancer đã hoàn thành xuất sắc nhiệm vụ và giúp cho thị trấn thông suốt không bị tắc nghẽn.
Bây giờ, chúng ta sẽ cùng nhau bắt đầu hành trình khám phá những điều thú vị về một trong những công cụ không thể thiếu trong thế giới công nghệ hiện nay, một người hùng của thế giới công nghệ - Load Balancer
Chúng mình có tạo Group cho các bạn cùng chia sẻ và học hỏi về thiết kế hệ thống nha 😄😄😄
Các bạn tham gia để gây dựng cộng đồng System Design Việt Nam thật lớn mạnh nhé 😍😍😍
Cộng Đồng System Design Việt Nam: https://www.facebook.com/groups/sydexa
Kênh TikTok: https://www.tiktok.com/@sydexa.com
Giới thiệu về Load Balancer - Bộ cân bằng tải
Cân bằng tải hiểu đơn giản là một kỹ thuật phân chia lượng công việc đồng đều giữa các máy chủ. Bằng cách này, sẽ không có máy chủ nào bị quá tải, do đó hiệu quả hoạt động của hệ thống được cải thiện rõ rệt. Bạn có thể tưởng tượng nó là ông kĩ sư tại ví dụ ban đầu 😂 😂
Nhờ vậy, Bộ cân bằng tải sẽ giúp đạt được các mục đích:
- Tính hiệu quả nhờ khả năng giảm lưu lượng trên mỗi máy chủ. Giảm thiểu thời gian phản hồi của server, tình trạng chậm và các thông báo lỗi khó chịu, đảm bảo sự trải nghiệm mượt mà cho người dùng.
- Khả năng mở rộng do bộ cân bằng tải có thể thay đổi quy mô cơ sở hạ tầng theo yêu cầu mà không ảnh hưởng đến dịch vụ.
- Nếu tại một thời điểm, một máy chủ ngừng hoạt động do xảy ra lỗi thì những máy chủ khác có thể thay nó xử lý những yêu cầu để không làm gián đoạn tới dịch vụ.
Các loại Load Balancer dựa trên mô hình OSI
Bộ cân bằng tải được phân loại dựa trên tầng của mô hình OSI mà chúng hoạt động. Nó được phân ra thành các loại như sau:
Network Load Balancer (Load Balancer 4):
Bộ cân bằng tải Tầng 4 hoạt động ở tầng vận chuyển (Tầng 4) của mô hình OSI. Nó đưa ra quyết định dựa trên thông tin như địa chỉ IP nguồn và đích, cũng như số cổng của các yêu cầu đến. Mục tiêu chính của Bộ cân bằng tải Tầng 4 là phân phối lưu lượng mạng hiệu quả trên nhiều máy chủ.
🔑 Cách hoạt động:
Khi người dùng gửi yêu cầu để truy cập một trang web hoặc ứng dụng, Bộ cân bằng tải Tầng 4 nhận yêu cầu. Sau đó, nó xem xét dữ liệu tầng vận chuyển (địa chỉ IP và port) để xác định máy chủ nào nên xử lý yêu cầu. Bộ cân bằng tải sử dụng các thuật toán khác nhau (ví dụ: round-robin, least connections) để quyết định máy chủ tốt nhất để chuyển tiếp yêu cầu. Điều này đảm bảo lưu lượng được phân phối đều giữa các máy chủ, cải thiện hiệu suất và tránh quá tải bất kỳ máy chủ nào.
✅ Ưu điểm:
- Hiệu suất cao và độ trễ thấp do quyết định ở tầng mạng.
- Thích hợp để phân phối lưu lượng TCP và UDP một cách hiệu quả.
- Lý tưởng cho các tình huống không cần quyết định dựa trên nội dung.
❌ Nhược điểm:
- Hạn chế trong việc đưa ra quyết định cụ thể cho ứng dụng.
Application Load Balancer (Load Balancer 7):
Bộ cân bằng tải Tầng 7 hoạt động ở tầng ứng dụng (Tầng 7) của mô hình OSI. Nó có thể đưa ra quyết định thông minh hơn dựa trên dữ liệu cụ thể của ứng dụng, như HTTP Headers, cookie và URLs. Bộ cân bằng tải Tầng 7 hiểu các giao thức ứng dụng, cho phép chúng tối ưu hóa phân phối lưu lượng cho các ứng dụng hoặc dịch vụ cụ thể.
🔑 Cách hoạt động:
Khi người dùng gửi yêu cầu, Bộ cân bằng tải Tầng 7 phân tích nội dung của yêu cầu để hiểu rõ hơn về ứng dụng đang được truy cập. Ví dụ, nó có thể xác định loại dịch vụ (ví dụ: HTTP, HTTPS, FTP) hoặc URL cụ thể đang được yêu cầu. Sử dụng thông tin này, bộ cân bằng tải có thể đưa ra quyết định thông minh về máy chủ nào phù hợp nhất để xử lý yêu cầu. Điều này cho phép các chiến lược cân bằng tải tiên tiến hơn, chẳng hạn như gửi các yêu cầu nhất định đến các máy chủ chuyên biệt có thể xử lý các tác vụ ứng dụng cụ thể.
✅ Ưu điểm:
- Nhận biết ứng dụng và có thể tối ưu hóa lưu lượng dựa trên yêu cầu cụ thể của ứng dụng.
- Cho phép định tuyến dựa trên nội dung và thuật toán cân bằng tải tiên tiến.
- Thích hợp cho các ứng dụng phức tạp yêu cầu các phản hồi máy chủ khác nhau dựa trên loại yêu cầu.
❌ Nhược điểm:
- Overhead xử lý cao hơn so với Bộ cân bằng tải Tầng 4 do phải phân tích nội dung.
Thuật toán Load Balancing
-
Round Robin
📃 Khái niệm:
Thuật toán cân bằng tải Round Robin là một trong những phương pháp đơn giản và trực quan nhất được sử dụng để phân phối lưu lượng mạng đến từ nhiều máy chủ. Nó hoạt động ở tầng vận chuyển (Tầng 4) của mô hình OSI và thường được sử dụng trong nhiều bộ cân bằng tải.
📔 Hình ảnh minh họa:
✅ Ưu điểm:
- Đơn giản: Round Robin là một trong những thuật toán cân bằng tải đơn giản nhất để triển khai. Nó không yêu cầu các phép tính phức tạp hay giám sát máy chủ sâu sắc.
- Công việc đều: Thuật toán đảm bảo phân phối đều các yêu cầu đến từ tất cả các máy chủ trong nhóm. Mỗi máy chủ nhận được một phần tải đều, thúc đẩy việc sử dụng tài nguyên công bằng.
❌ Nhược điểm:
- Công suất máy chủ không bằng nhau: Round Robin xem xét tất cả các máy chủ là như nhau, bất kể công suất hoặc khả năng hiệu suất của chúng. Điều này có thể dẫn đến việc một số máy chủ bị quá tải nếu chúng kém mạnh mẽ hơn các máy chủ khác trong nhóm.
- Không có giám sát tình trạng: Thuật toán thiếu thông minh để giám sát tình trạng hoặc khả năng phản hồi của máy chủ. Nếu một máy chủ trở nên không khả dụng hoặc gặp vấn đề về hiệu suất, Round Robin vẫn tiếp tục chuyển tiếp yêu cầu đến máy chủ đó.
-
Weighted Round Robin
📃 Khái niệm:
Thuật toán cân bằng tải Round Robin có trọng số là một sự mở rộng của thuật toán Round Robin cơ bản. Nó nhằm giải quyết vấn đề về công suất máy chủ không đồng đều bằng cách gán các trọng số khác nhau cho mỗi máy chủ trong nhóm. Những trọng số này đại diện cho công suất hoặc hiệu suất tương đối của mỗi máy chủ. Máy chủ có trọng số cao hơn nhận được một phần lớn hơn của lưu lượng đến, trong khi máy chủ có trọng số thấp hơn nhận được một phần nhỏ hơn.
📔 Hình ảnh minh họa:
✅ Ưu điểm:
- Phân phối dựa trên công suất: Round Robin có trọng số tính đến các công suất khác nhau của máy chủ, đảm bảo rằng các máy chủ mạnh mẽ hơn xử lý nhiều hơn.
- Cân bằng tinh chỉnh: Khả năng đặt các trọng số cụ thể cho phép điều chỉnh chính xác sự phân phối tải, đáp ứng các máy chủ có khả năng khác nhau.
❌ Nhược điểm:
- Cấu hình tĩnh: Yêu cầu cấu hình trọng số máy chủ theo cách thủ công. Nó có thể không thích ứng một cách linh hoạt với các thay đổi về hiệu suất hoặc công suất máy chủ.
- Phức tạp: Thuật toán đặt ra một số sự phức tạp so với Round Robin cơ bản, vì người quản trị cần phải gán và quản lý các trọng số một cách phù hợp.
-
IP Hash
📃 Khái niệm:
Thuật toán cân bằng tải IP Hash là một phương pháp được sử dụng để phân phối lưu lượng mạng đến từ nhiều máy chủ dựa trên địa chỉ IP nguồn của khách hàng. Thuật toán này hoạt động ở tầng ứng dụng (Tầng 7) của mô hình OSI.
📔 Hình ảnh minh họa:
✅ Ưu điểm:
- Duy trì Session: IP Hash cung cấp sự liên kết session, đảm bảo rằng các yêu cầu tiếp theo từ cùng một khách hàng luôn được chuyển hướng đến cùng một máy chủ. Điều này rất quan trọng đối với các ứng dụng phụ thuộc vào việc duy trì session người dùng hoặc trạng thái.
- Tải Đều cho mỗi Khách hàng: Các yêu cầu của mỗi khách hàng đều được gửi đến cùng một máy chủ một cách nhất quán, đạt được sự phân phối tải cân đối cho từng khách hàng.
❌ Nhược điểm:
- Tải công việc không đồng đều: Nếu một số khách hàng tạo ra một lượng lưu lượng lớn không tỷ lệ, các máy chủ tương ứng có thể gặp phải tải công việc cao hơn, có thể gây ra mất cân đối.
- Phụ thuộc vào Khách hàng: IP Hash phụ thuộc nặng nề vào địa chỉ IP của khách hàng để ánh xạ, khiến nó kém hiệu quả khi khách hàng sử dụng nhiều địa chỉ IP.
-
Least Connection Algorithm
📃 Khái niệm:
Thuật toán cân bằng tải Least Connection được thiết kế để phân phối lưu lượng mạng đến từ nhiều máy chủ dựa trên số lượng kết nối đang hoạt động mà mỗi máy chủ hiện có. Mục tiêu chính của thuật toán này là hướng các yêu cầu mới đến máy chủ có ít kết nối nhất, đảm bảo phân phối công việc cân đối hơn.
📔 Hình ảnh minh họa:
✅ Ưu điểm:
- Phân phối tải động: Thuật toán Least Connection thích ứng theo thời gian thực với tải công việc thực tế trên mỗi máy chủ, đảm bảo rằng các yêu cầu mới được hướng đến máy chủ ít bận rộn nhất tại thời điểm đó.
- Sử dụng tài nguyên cân đối: Bằng cách phân phối các kết nối đều qua các máy chủ, Least Connection giúp ngăn chặn bất kỳ máy chủ nào trở nên quá tải, do đó tối ưu hóa việc sử dụng tài nguyên.
❌ Nhược điểm:
- Biến động kết nối: Thuật toán Least Connection có thể gây ra biến động thường xuyên trong các kết nối cho một số máy chủ.
- Xử lý đột biến: Trong những đợt tăng đột biến lưu lượng, các máy chủ ban đầu có ít kết nối hơn có thể nhận được một lượng lớn yêu cầu mới, có thể gây ra vấn đề hiệu suất tạm thời.
-
Least Response Time Algorithm
📃 Khái niệm:
Thuật toán cân bằng tải Least Response Time là một phương pháp được sử dụng để phân phối lưu lượng mạng đến từ nhiều máy chủ dựa trên thời gian phản hồi của chúng đối với các yêu cầu trước đó. Mục tiêu chính của thuật toán này là hướng các yêu cầu mới đến máy chủ có thời gian phản hồi ngắn nhất, đảm bảo rằng khách hàng được phục vụ bởi máy chủ phản hồi nhanh nhất có sẵn.
📔 Hình ảnh minh họa:
✅ Ưu điểm:
- Trải nghiệm người dùng tối ưu: Thuật toán Least Response Time đảm bảo rằng khách hàng được hướng đến máy chủ có thể phản hồi nhanh nhất, dẫn đến trải nghiệm người dùng mượt mà.
- Thích ứng động: Bộ cân bằng tải liên tục đánh giá thời gian phản hồi máy chủ và điều chỉnh quyết định định tuyến của mình phù hợp, làm cho nó phù hợp với môi trường động với hiệu suất máy chủ thay đổi.
❌ Nhược điểm:
- Biến động thời gian phản hồi: Nếu thời gian phản hồi máy chủ biến đổi thường xuyên, bộ cân bằng tải có thể chuyển khách hàng giữa các máy chủ thường xuyên, có thể gây ra sự không nhất quán trong trải nghiệm người dùng.
- Dễ bị tác động bởi ngoại lệ: Một đợt tăng đột biến trong thời gian phản hồi trên một máy chủ có thể dẫn đến việc tạm thời định tuyến nhiều lưu lượng hơn đến một máy chủ chậm hơn, ảnh hưởng đến hiệu suất tổng thể.
- Phụ thuộc vào giám sát: Thuật toán Least Response Time yêu cầu giám sát liên tục thời gian phản hồi máy chủ.
Sydexa.com xin hẹn gặp lại các bạn ở các bài viết thú vị hơn nha
Lời nhắn
Chúng mình có tạo Group cho các bạn cùng chia sẻ và học hỏi về thiết kế hệ thống nha 😄😄😄
Các bạn tham gia để gây dựng cộng đồng System Design Việt Nam thật lớn mạnh nhé 😍😍😍
Cộng Đồng System Design Việt Nam: https://www.facebook.com/groups/sydexa