Load Balancers II – Determine which servers processes a request

744

Bài viết được sự cho phép của tác giả Kiên Nguyễn

Trở lại chuỗi bài viết chuyên sâu về Load Balacers và Web Server. Biết về khái niệm và cách mà Load Balancers cân bằng lượng request đến đã là tốt.

Tuy nhiên, request ở máy A sẽ đi tới servers nào khi ta có tới cả 100 servers service nhỏ?.

  Angular - Tự xây dựng module "lazy load images"
  Cân bằng tải (Load Balancing)

Để trả lời cho câu hỏi này, hãy cùng nhìn lại chút xíu về Load Balancers Architecture.

Load BalancersThông qua sự “điều tiết” của Web Balancers, nhiều Application Servers nhỏ có thể handle một lượng request lớn.

1. Phán định servers

Vấn đề là Application nào sẽ handle request nào?. Ví dụ: client A ở lần request đầu tiên sẽ gửi tới Application Servers A do Load Balancers điều phối.

Gọi là phán định servers vì không thể ở request thứ nhất, Application Servers A xử l. Request thứ hai lại do Application Servers B xử.

Để có phá định chuẩn rằng Servers nào nên xử lý request nào thì ta cần hiểu rõ về Application Servers trước. Đặc điểm chính là Stateless. Vậy Stateless là gì?.

2. Stateless trong Load Balancers

Stateless có thể được hiểu như là không state. Tại sao nói không State?.

State là trạng thái, mỗi request gửi lên Servers đều mang một trạng thái của riêng nó. Tạo mới, cập nhât, xóa bỏ, … Chữ less ở đây mang ý nghĩa Application Servers sẽ không chịu trách nhiệm lưu trữ State của request.

Load Balancers

Đọc tới đây có bạn sẽ hỏi nếu App Servers lưu trữ State thì sao?. Lấy ví dụ luôn.

Giả sử khách hàng A đang có 2 sản phẩm trong giỏ (2 products). Load Balancers ban đầu phán định App Servers 5 sẽ xử lý request này. Do 4 cái còn lại đang busy.

Vậy nếu khách hàng cập nhật giỏ hàng, thêm xóa bỏ, mua mới?. Mọi request liên quan tới giỏ hàng này đều phải thông qua App Servers 5?

Giữ App Servers 5 cho một giỏ hàng thì quá lã lãng phí. Cũng không đảm bảo sự hoạt động trơn tru của Load Balancers. Chính vì vậy, App Servers giữ trong mình nó chữ Stateless.

Không quan tâm tới state đảm bảo cho mọi server có trách nhiệm và chức năng như nhau. Ai rảnh thì vào xử lý request ngay, không cần quan tâm tới state của request được gửi là như thế nào.

3. Scaling

Giữ cho các App Servers tách biệt với state cũng đảm bảo về khả năng Sclaing khi application mở rộng. Các App Servers có thể độc lập hoạt động mà không cần quan tâm tới state được gửi lên từ request như thế nào.

Load Balancers

Về scalable trong web application thì có thể đọc qua bài viết này. Tìm hiểu thêm về Horizontal và Vertical Scaling.

4. Tổng kết

Quay lại câu hỏi ngay từ ban đầu. Với kiến trúc Distributed Server và Distributed Database. Phán định server nào xử lý request như thế nào?

Câu trả lời là phán định do Load Balancers chỉ định tùy thuộc tình trạng busy hiện tại của các Server khác. Về bản chất thì các App Servers có chức năng tương tự nhau, có thể hoạt động độc lập với nhau.

5. Tham khảo

Thank for reading – Have a nice yearend – Happy coding!

Bài viết gốc được đăng tải tại kieblog.vn

Có thể bạn quan tâm:

Xem thêm Việc làm Developer hấp dẫn trên TopDev