[Load Balancer Recap - Cùng hiểu về Cân bằng tải]
Nhận thấy tìm hiểu về software architecture trn cloud khá là quan trọng. Đặc biệt là đọc về các pattern cũng giúp chúng ta hiểu hơn được các dịch vụ từ CSPs (Cloud Service Providers) làm gì và cả khi phỏng vấn hay đi làm trong môi trường thực tế. Hy vọng anh chị và các bạn ủng hộ để em có động lực viết nhiều hơn ạ <3
Bài viết được recap lại từ khóa học: The Complete Cloud Computing Software Architecture Patterns. Nếu cả nhà muốn tìm hiểu kĩ hơn hay cho nhu cầu công việc thì có thể đăng ký ạ (em không quảng cáo và không làm affiliate ná, em chỉ thấy nó hay thôi!!)
Em xin được phép xưng mình để tăng tính khách quan cho bài viết từ đây ạ. Mình bắt đầu nhé với Cân bằng tải (Load Balancing) nhé!
ĐẶT VẤN ĐỀ
Cả nhà hãy hình dung rằng chúng ta có một cái web, web tin tức đơn giản thôi, tạm đặt là “Đài Phát Thanh QRT và fan hâm mộ”, và có khả năng cung cấp tin tức cho vài triệu người. Người dùng có thể đọc tin tức trên web hoặc bằng một ứng dụng trên điện thoại. Một ngày đẹp trời, con máy chủ nó dở chứng không xử lý được khối lượng request to đùng đó nữa, có thể là do vượt quá dung lượng CPU, bộ nhớ hoặc mạng gì đó, rồi hệ thống bị treo, giảm performance, hoặc ngỏm luôn. Lúc này một trong những cách tạm thời là nâng cấp lên một con VM mạnh hơn, nhưng mình lại phải gặp vấn đề về downtime trong lúc upgrade, và hằng hà sa số những cái vấn đề trầm cảm khác nữa. Vậy làm thế nào bây giờ?
YEEY, INTRODUCING LOAD BALANCER!!!
CÂN BẰNG TẢI (LOAD BALANCER – LB) LÀ CÁI CHI?
Dịch sát nghĩa, thì cân bằng tải giúp cân bằng – tải LB đặt một bộ điều phối (dispatcher) giữa các yêu cầu đến hệ thống và các server xử lý dữ liệu. LB dispatcher điều phối mỗi yêu cầu từ khách hàng đến một trong các server có sẵn. Khi số lượng request tăng lên, thì chúng ta có thể tăng thêm nhiều server và phân phối tải giữa các server, cho phép hệ thống mở rộng nhanh chóng mà không cần thay đổi đáng kể. (coi cái hình minh họa ELB của AWS nhé)
TRƯỜNG HỢP SỬ DỤNG PHỔ BIẾN
Một trường hợp mà cả nhà dev mình ai cũng biết, là HTTP request từ front end đến backend. FE ở đây có thể là mobile app hoặc JS chạy trên web, còn backend là các instance (EC2, App engine, server,… tùy theo nhà cung cấp) chạy trên cloud. Một trong những điều mình khuyên không nên làm là gửi thẳng request từ FE đến BE, mà nên thông qua một LB, để LB dispatcher có thể route request đến một trong các instance đang có sẵn.
Hay là trong kiến trúc có nhiều tính năng (features/services) monolithic hoặc microservices, mỗi một service có thể được triển khai dưới dạng một nhóm các instance giống hệt nhau. Tất cả các request đến microservices group đều thông qua một LB, làm như thế sẽ giúp chúng ta có thể mở rộng từng microservice/features một cách độc lập tùy thuộc vào lưu lượng truy cập và workload.
CÁC KỸ THUẬT TRIỂN KHAI CÂN BẰNG TẢI THƯỜNG DÙNG
DỊCH VỤ CÂN BẰNG TẢI ĐÁM MÂY
Một dịch vụ cân bằng tải đám mây chấp nhận khối lượng lớn các yêu cầu mạng và định tuyến chúng đến các máy chủ backend. Dịch vụ này có thể mở rộng tự động và chạy dưới dạng một nhóm các instance cân bằng tải, đảm bảo không có điểm lỗi duy nhất hoặc nút thắt cổ chai về hiệu suất.