+2

API Gateway và Loading balancer: Khái niệm cơ bản và Ứng dụng trong Kiến trúc Microservices

Source: https://www.tuanh.net/blog/devops/api-gateway-and-load-balancer-basic-concepts-and-applications-in-microservices-architecture

Kiến trúc microservices là một mô hình thống trị trong phát triển phần mềm hiện đại. Để quản lý và tối ưu hóa các dịch vụ phân tán hiệu quả trong kiến trúc này, hai thành phần chính đã xuất hiện: API Gateway và Load Balancers. Các yếu tố này là không thể thiếu trong việc xây dựng các hệ thống phân tán có khả năng mở rộng và quản lý được. Bài viết này sẽ đi sâu vào các khái niệm cốt lõi của API Gateway và Load Balancers, đồng thời làm rõ ứng dụng của chúng trong microservices.

1. API Gateway

Trong kiến trúc microservices, API Gateway đóng vai trò như một mặt tiền, cung cấp một giao diện thống nhất cho một tập hợp các microservices. Nó định tuyến các yêu cầu đến đúng microservice và có thể xử lý các tác vụ như xác thực, giới hạn tốc độ và chuyển đổi giao thức. image.png

1.1 API Gateway có thể làm gì

Định tuyến yêu cầu: API Gateway chịu trách nhiệm định tuyến các yêu cầu đến các dịch vụ hậu cần phù hợp. Điều này giúp giảm tải khối lượng xử lý yêu cầu trực tiếp cho các dịch vụ và cũng giúp quản lý và kiểm soát luồng dữ liệu. Quản lý xác thực và ủy quyền: API Gateway có thể xử lý các yêu cầu xác thực và ủy quyền trước khi chuyển tiếp yêu cầu đến dịch vụ hậu cần. Điều này giúp bảo vệ các dịch vụ khỏi truy cập không mong muốn và giảm tải khối lượng xác thực cho các dịch vụ hậu cần. Tích hợp dịch vụ: API Gateway có thể kết hợp dữ liệu từ nhiều dịch vụ khác nhau và trả về kết quả cho client dưới dạng một phản hồi duy nhất. Điều này giúp giảm số lượng yêu cầu được gửi đi và đơn giản hóa giao diện API cho người dùng. Giám sát và ghi log: API Gateway cung cấp khả năng giám sát và ghi log tất cả các yêu cầu và phản hồi, giúp phân tích và khắc phục sự cố hiệu suất. Đệm và cải thiện hiệu suất: API Gateway có thể tạm thời lưu trữ dữ liệu (đệm) để giảm tải cho các dịch vụ hậu cần và cải thiện hiệu suất.

1.2 Các loại API gateway phổ biến

Có hai loại gateway chính: gateway đơn hướng và gateway hai chiều.

1.2.1 Gateway đơn hướng

Gateway đơn hướng cho phép cảnh báo chỉ chảy theo một hướng. Những thay đổi được thực hiện trong ObjectServer nguồn được sao chép vào ObjectServer đích hoặc ứng dụng, nhưng những thay đổi được thực hiện trong ObjectServer đích hoặc ứng dụng không được sao chép vào ObjectServer nguồn. Gateway đơn hướng có thể được coi là công cụ lưu trữ. image.png Kịch bản: Một công ty sử dụng hệ thống giám sát mạng nội bộ để theo dõi trạng thái và hiệu suất của các thiết bị mạng. Hệ thống này tạo ra các cảnh báo khi phát hiện các sự cố như lỗi phần cứng, mất kết nối hoặc hiệu suất kém. Công ty nhằm mục đích lưu trữ các cảnh báo này để phân tích và báo cáo. Thiết lập: Hệ thống giám sát (ObjectServer A) gửi cảnh báo đến hệ thống báo cáo và lưu trữ dữ liệu (ObjectServer B) thông qua một cổng thông tin một chiều. Các cảnh báo từ hệ thống giám sát được truyền đến hệ thống báo cáo, nhưng bất kỳ sửa đổi nào được thực hiện trong hệ thống báo cáo (ví dụ: gán trạng thái hoặc phân tích) không được phản hồi lại hệ thống giám sát. Lợi ích: Hệ thống báo cáo có thể lưu trữ và phân tích dữ liệu cảnh báo mà không ảnh hưởng đến hệ thống giám sát chính. Hệ thống giám sát có thể tiếp tục hoạt động mà không bị ảnh hưởng bởi các thay đổi được thực hiện trong hệ thống báo cáo.

1.2.2 Cổng thông tin hai chiều

Cổng thông tin hai chiều cho phép các cảnh báo chảy từ ObjectServer nguồn đến ObjectServer đích hoặc ứng dụng, và cũng cho phép phản hồi đến ObjectServer nguồn. Trong cấu hình cổng thông tin hai chiều, các thay đổi được thực hiện đối với nội dung của ObjectServer nguồn được sao chép trong ObjectServer đích hoặc ứng dụng, và ObjectServer đích hoặc ứng dụng sao chép các cảnh báo của nó trong ObjectServer nguồn. Cổng thông tin hai chiều có thể được coi là công cụ đồng bộ hóa. image.png Mô tả: Một công ty sử dụng hai hệ thống: hệ thống quản lý sự cố (ObjectServer A) để theo dõi và xử lý các sự cố của khách hàng, và hệ thống hỗ trợ khách hàng (ObjectServer B) để cập nhật thông tin và trạng thái của các yêu cầu hỗ trợ.

Thiết lập: Một cổng thông tin hai chiều được cấu hình để đồng bộ dữ liệu giữa hai hệ thống. Khi một sự cố mới được ghi nhận trong hệ thống quản lý sự cố (ObjectServer A), thông tin sẽ tự động được chuyển sang hệ thống hỗ trợ khách hàng (ObjectServer B). Ngược lại, nếu trạng thái sự cố được cập nhật trong hệ thống hỗ trợ khách hàng (ObjectServer B), thông tin cập nhật sẽ được phản hồi lại hệ thống quản lý sự cố (ObjectServer A).

Lợi ích: Cả hai hệ thống được đồng bộ, đảm bảo thông tin về sự cố và hỗ trợ khách hàng luôn được cập nhật và nhất quán. Nhân viên hỗ trợ có thể xem trạng thái mới nhất của các sự cố, và ngược lại, hệ thống quản lý sự cố có thể nhận được các cập nhật từ hoạt động hỗ trợ.

2. Bộ Cân bằng Tải

Trong một kiến trúc phân tán, Bộ Cân bằng Tải là một thiết bị phân phối lưu lượng mạng đến từ các máy chủ. Quá trình này, được gọi là cân bằng tải, cải thiện khả năng chịu lỗi và khả năng mở rộng. Bộ Cân bằng Tải có nhiều hình thức, bao gồm các thiết bị phần cứng vật lý, các phiên bản ảo hóa trên phần cứng chuyên dụng hoặc các giải pháp hoàn toàn dựa trên phần mềm. Bộ Điều khiển Phân phối Ứng dụng (ADC), được tích hợp trong các bộ cân bằng tải này, được thiết kế đặc biệt để nâng cao cả hiệu suất và bảo mật của ứng dụng, bất kể môi trường lưu trữ của chúng. Các thuật toán cân bằng tải linh hoạt: Các hệ thống này hỗ trợ một loạt các thuật toán để phân phối lưu lượng truy cập giữa các máy chủ, chẳng hạn như vòng tròn, thời gian phản hồi của máy chủ và phương pháp kết nối ít nhất, để đảm bảo sử dụng tài nguyên tối ưu và khả năng đáp ứng. image.png

2.1 Các Loại Bộ Cân Bằng Tải Dựa Trên Cấu Hình

2.1.1 Bộ Cân Bằng Tải Phần Cứng

Đây là các thiết bị vật lý được triển khai tại chỗ để quản lý và phân phối lưu lượng truy cập giữa nhiều máy chủ. Được biết đến với khả năng xử lý khối lượng lưu lượng truy cập lớn với hiệu suất cao, chúng thường có chi phí cao và ít linh hoạt hơn so với các loại bộ cân bằng tải khác. F5 BIG-IP là một ví dụ điển hình của bộ cân bằng tải phần cứng. Thiết bị vật lý chuyên dụng này được cài đặt trong cơ sở hạ tầng của tổ chức để quản lý và phân phối lưu lượng mạng hiệu quả. Nó cung cấp các tính năng mạnh mẽ như cân bằng tải, bảo mật ứng dụng và tối ưu hóa hiệu suất.

2.1.2 Bộ Cân Bằng Tải Phần Mềm

Đây là các ứng dụng chạy trên các hệ thống máy tính tiêu chuẩn và cung cấp các chức năng tương tự như bộ cân bằng tải phần cứng. Có sẵn cả phiên bản thương mại và mã nguồn mở, chúng cung cấp giải pháp tiết kiệm chi phí hơn, mang lại sự linh hoạt và khả năng mở rộng để phù hợp với các nhu cầu khác nhau. Citrix ADC là một ví dụ điển hình của bộ cân bằng tải phần mềm thương mại. Nó cung cấp các tính năng cân bằng tải toàn diện, tối ưu hóa hiệu suất và bảo mật ứng dụng phù hợp với cả môi trường đám mây và tại chỗ. Citrix ADC được thiết kế để xử lý các tác vụ quản lý lưu lượng phức tạp và cung cấp một loạt các khả năng nâng cao để tăng cường hiệu suất và bảo mật ứng dụng. NGINX là một bộ cân bằng tải phần mềm mã nguồn mở phổ biến được biết đến với tính linh hoạt và hiệu suất. Nó hỗ trợ cân bằng tải cho lưu lượng truy cập HTTP, TCP và UDP, phù hợp với nhiều ứng dụng khác nhau. NGINX được sử dụng rộng rãi trong môi trường đám mây và kiến trúc máy chủ web do hiệu quả và khả năng mở rộng của nó.

2.1.3 Bộ Cân Bằng Tải Ảo

Kết hợp lợi ích của bộ cân bằng tải phần cứng với sự linh hoạt của môi trường ảo, bộ cân bằng tải ảo chạy phần mềm của bộ cân bằng tải phần cứng truyền thống trên một máy ảo. Thiết lập này cho phép mở rộng và quản lý động, bắc cầu khoảng trống giữa phần cứng vật lý và giải pháp phần mềm thuần túy. AWS Elastic Load Balancing (ELB) là một ví dụ về bộ cân bằng tải ảo. Dịch vụ dựa trên đám mây này cung cấp cân bằng tải có khả năng mở rộng cho các ứng dụng chạy trên Amazon Web Services (AWS). ELB phân phối lưu lượng truy cập ứng dụng đến từ nhiều nguồn đến nhiều mục tiêu, chẳng hạn như các trường hợp EC2, container và địa chỉ IP, để đảm bảo tính sẵn sàng cao và khả năng chịu lỗi.

2.2 Phương Pháp Cân Bằng Tải

Tất cả các loại Bộ Cân Bằng Tải nhận các yêu cầu cân bằng, được xử lý theo thuật toán được cấu hình trước.

2.2.1 Thuật Toán Vòng Tròn (Round Robin)

Thuật toán Vòng Tròn là một kỹ thuật cân bằng tải được sử dụng rộng rãi phân phối các yêu cầu hoặc tác vụ đến từ nhiều máy chủ theo thứ tự tuần hoàn. Mỗi máy chủ được gán một yêu cầu lần lượt, đảm bảo rằng tất cả các máy chủ nhận được một phần chia sẻ công việc như nhau theo thời gian. Phương pháp này đơn giản để triển khai và hiệu quả cho các trường hợp máy chủ có khả năng tương tự và các tác vụ đồng đều về yêu cầu xử lý. Bằng cách luân phiên qua các máy chủ theo một trình tự cố định, Round Robin giúp đạt được phân phối lưu lượng cân bằng, ngăn chặn bất kỳ máy chủ nào bị quá tải trong khi đảm bảo sử dụng tài nguyên công bằng. image.png

2.2.2 Thuật toán Round Robin Có Trọng Số

Thuật toán Round Robin Có Trọng Số là một phiên bản nâng cao của kỹ thuật cân bằng tải Round Robin tiêu chuẩn. Không giống như Round Robin phân phối yêu cầu đều trên tất cả các máy chủ, Round Robin Có Trọng Số gán một trọng số cho mỗi máy chủ dựa trên khả năng hoặc hiệu suất của nó. Các máy chủ có trọng số cao hơn nhận được nhiều yêu cầu hơn so với những máy chủ có trọng số thấp hơn. Cách tiếp cận này đảm bảo rằng các máy chủ mạnh hơn hoặc giàu tài nguyên xử lý nhiều tải hơn, dẫn đến việc sử dụng tài nguyên hiệu quả hơn và cải thiện hiệu suất tổng thể. Bằng cách xem xét khả năng của máy chủ, Round Robin Có Trọng Số giúp đạt được phân phối lưu lượng cân bằng và tối ưu hơn. Xem thêm tại Weighted Round Robin

2.2.3 Thuật toán Ít Kết Nối Nhất

Thuật toán Ít Kết Nối Nhất là một chiến lược cân bằng tải hướng các yêu cầu đến máy chủ có ít kết nối hoạt động nhất tại bất kỳ thời điểm nào. Cách tiếp cận này giúp tối ưu hóa việc sử dụng tài nguyên bằng cách đảm bảo rằng các máy chủ xử lý ít kết nối đồng thời được sử dụng hiệu quả hơn. Bằng cách tập trung vào tải hiện tại của máy chủ, Thuật toán Ít Kết Nối Nhất giúp ngăn chặn bất kỳ máy chủ nào trở thành điểm nghẽn, dẫn đến cải thiện hiệu suất và khả năng đáp ứng của hệ thống tổng thể. Nó đặc biệt hữu ích trong các trường hợp mà thời gian kết nối thay đổi hoặc không thể dự đoán được, vì nó điều chỉnh động dựa trên tải máy chủ thời gian thực. image.png

2.2.4 Thuật toán Hash IP

Thuật toán Hash IP là một kỹ thuật cân bằng tải định tuyến các yêu cầu đến dựa trên giá trị hash của địa chỉ IP của client. Phương pháp này sử dụng một hàm hash để ánh xạ địa chỉ IP tới một server cụ thể, đảm bảo rằng các yêu cầu của một client cụ thể luôn được định hướng đến cùng một server. Điều này có thể hữu ích trong việc duy trì tính liên tục của phiên và đảm bảo rằng tất cả các tương tác từ một client được xử lý bởi cùng một server. Bằng cách phân phối traffic theo địa chỉ IP, Thuật toán Hash IP giúp đạt được phân phối yêu cầu đồng đều hơn đồng thời cho phép quản lý tốt hơn dữ liệu liên quan đến phiên.

3. Kết hợp API Gateway và Load Balancer trong Microservices

Trong kiến trúc microservices, API Gateway và Load Balancer thường được sử dụng kết hợp để đạt được hiệu suất tối ưu và quản lý dịch vụ hiệu quả. Dưới đây là cách chúng có thể hoạt động cùng nhau:

Một API Gateway đóng vai trò là điểm nhập cảnh duy nhất cho tất cả các yêu cầu của người dùng, xử lý các chức năng như xác thực, ủy quyền và định tuyến yêu cầu đến các dịch vụ backend. Một Load Balancer được triển khai phía sau các dịch vụ backend để phân phối tải trên nhiều instance của dịch vụ đó, đảm bảo tính sẵn sàng cao và hiệu suất cho hệ thống. Sự kết hợp giữa API Gateway và Load Balancer tạo ra một kiến trúc hệ thống mạnh mẽ, dễ quản lý và có khả năng mở rộng cao. API Gateway xử lý giao tiếp và quản lý yêu cầu, trong khi Load Balancer đảm bảo các dịch vụ backend có thể phản hồi hiệu quả và không bị quá tải.

4. Kết luận

API Gateway và Load Balancer là hai thành phần quan trọng trong hệ thống phân tán và kiến trúc microservices. API Gateway quản lý và điều phối các yêu cầu, trong khi Load Balancer đảm bảo phân phối tải hiệu quả và nâng cao khả năng sẵn sàng. Hiểu và áp dụng đúng các công nghệ này sẽ giúp bạn xây dựng các hệ thống phân tán mạnh mẽ, hiệu quả và dễ bảo trì. Nếu bạn có bất kỳ câu hỏi nào hoặc muốn tìm hiểu thêm về cách triển khai API Gateway và Load Balancer trong dự án của mình, đừng ngần ngại liên hệ với chúng tôi!


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí