Trong số các mô hình kiến trúc, Kiến trúc Microservices đang được nhiều công ty công nghệ hàng đầu trên thế giới lựa chọn để xây dựng hệ thống phân tán, linh hoạt, đáp ứng tốt yêu cầu thay đổi liên tục và quy mô mở rộng theo nhu cầu thực tế.
Bài viết sẽ tập trung làm rõ kiến trúc Microservices — từ cấu trúc tổng quan, luồng hoạt động đến ứng dụng thực tế — nhằm giúp sinh viên công nghệ thông tin hiểu và làm quen với mô hình kiến trúc này trước khi bước vào môi trường làm việc chuyên nghiệp.
Mục lục
Client (Web, Mobile, PC)
- Nhiệm vụ: Là điểm bắt đầu của các yêu cầu từ người dùng cuối.
- Luồng hoạt động: Gửi yêu cầu đến hệ thống thông qua Load Balancer hoặc truy cập nội dung tĩnh từ CDN.
Load Balancer
- Nhiệm vụ: Phân phối đều lưu lượng yêu cầu đến nhiều instance của API Gateway để tối ưu hiệu năng và tránh quá tải.
- Luồng hoạt động: Nhận yêu cầu từ client và chuyển tiếp đến API Gateway.
CDN (Content Delivery Network)
- Nhiệm vụ: Lưu trữ và phân phối nội dung tĩnh như hình ảnh, CSS, JS nhanh chóng từ các server gần người dùng nhất.
- Luồng hoạt động: Cung cấp nội dung tĩnh được cache từ Static Content.
- Static Content
- Nhiệm vụ: Lưu trữ các tài nguyên tĩnh (static files).
- Luồng hoạt động: Cung cấp nội dung tĩnh cho CDN để phục vụ nhanh hơn đến client.
API Gateway
- Nhiệm vụ:
- Là cổng trung gian duy nhất giữa client và hệ thống backend.
- Quản lý xác thực, routing, logging, rate limiting.
- Luồng hoạt động: Nhận yêu cầu từ Load Balancer, xác thực người dùng (qua Identity Provider), rồi định tuyến đến các microservice.
- Identity Provider
- Nhiệm vụ: Xác thực người dùng và cấp token (ví dụ: JWT) cho các request hợp lệ.
- Luồng hoạt động: API Gateway gửi yêu cầu xác thực người dùng đến đây.
Microservices
- Nhiệm vụ:
- Là cổng trung gian duy nhất giữa client và hệ thống backend.
- Quản lý xác thực, routing, logging, rate limiting.
- Luồng hoạt động: Nhận yêu cầu từ Load Balancer, xác thực người dùng (qua Identity Provider), rồi định tuyến đến các microservice.
Database A & B
- Nhiệm vụ: Lưu trữ dữ liệu riêng biệt cho từng domain.
- Luồng hoạt động: Microservices trong từng domain tương tác trực tiếp với database tương ứng.
Message Broker
- Nhiệm vụ: Hỗ trợ giao tiếp bất đồng bộ giữa các microservice (như RabbitMQ, Kafka).
- Luồng hoạt động: Microservices publish và subscribe thông điệp để giao tiếp, giảm phụ thuộc trực tiếp.
Service Registry and Discovery
- Nhiệm vụ:
- Lưu trữ thông tin các microservice đang hoạt động.
- Cho phép service khác tra cứu địa chỉ và trạng thái của các service còn lại.
- Luồng hoạt động: Microservices đăng ký với registry khi khởi động, và sử dụng nó để tìm kiếm các service khác.
Message Broker
- Nhiệm vụ: Quản lý cấu hình phân tán, đồng bộ, phân phối khóa (locks), leader election giữa các microservices.
- Luồng hoạt động: Microservices có thể tương tác với Zookeeper để phối hợp hoạt động theo nhóm.
Tóm tắt luồng hoạt động chính
- Client gửi yêu cầu → Load Balancer → API Gateway.
- API Gateway xác thực với Identity Provider.
- Sau khi xác thực, API Gateway định tuyến yêu cầu đến service phù hợp.
- Service truy xuất Database hoặc gửi/nhận thông điệp qua Message Broker.
- Service sử dụng Service Registry để tìm các service khác (nếu cần).
- Các hoạt động phối hợp hoặc đồng bộ giữa service thông qua Zookeeper.
Ứng dụng thực tế của Microservices
- Microservices được ứng dụng rộng rãi trong các hệ thống như:
- Các nền tảng học trực tuyến (E-Learning): tách riêng các dịch vụ (microservices) người dùng, khóa học, thanh toán, đánh giá.
- Hệ thống thương mại điện tử: tách riêng các dịch vụ (microservices) như giỏ hàng, thanh toán, đơn hàng, giao hàng.
- Mạng xã hội: quản lý bài đăng, tương tác, người dùng, tin nhắn dưới dạng các service (microservices) riêng biệt.