Nhảy đến nội dung chính

Nội dung chi tiết

1.1. Giới Thiệu

Hệ thống được xây dựng theo mô hình Enterprise Service Bus (ESB) kết hợp API Management (APIM), sử dụng nền tảng LifeESB làm trung gian điều phối giữa Client và các Backend Service. Tích hợp thêm Apache Kafka để xử lý tải lớn theo mô hình bất đồng bộ.

Tên hệ thống: LifeESB APIM: API Manager Message Queue: Apache Kafka (Broker: hdp-master:9092)


1.2. Sơ Đồ Kiến Trúc Tổng Thể

service-architecture-layered.jpg

 


1.3. Các Thành Phần Chính

1.3.1. APIM — API Manager

Cổng vào duy nhất (Single Entry Point) cho toàn bộ hệ thống.

Chức năng Mô tả
Xác thực Kiểm tra JWT / OAuth2 / API Key trước khi vào LifeESB
Rate Limiting Giới hạn số request/giây theo từng API hoặc User
Versioning Quản lý nhiều version API (/v1/v2) song song
Analytics Theo dõi lưu lượng, latency, error rate
Portal Developer Portal để publish và subscribe API

1.3.2. LifeESB

Lớp tích hợp trung gian, chịu trách nhiệm điều phối luồng dữ liệu.

Thành phần File Chức năng
Sync API

PlanningDirectApi.xml
Gọi thẳng Backend, Client nhận kết quả ngay
Async API

KafkaProducerApi.xml
Đẩy vào Kafka, trả phản hồi ngay cho Client
Inbound Endpoint

Load_balance_example.xml
Lắng nghe Kafka, kích hoạt Sequence xử lý
Sequence

Load_balance_example-inboundSequence.xml
Logic xử lý message: gọi Backend + phân loại lỗi
Error Sequence

Load_balance_example-inboundErrorSequence.xml
Xử lý lỗi Kafka, đẩy vào error_topic
Local Entry

KafkaConnection.xml
Cấu hình kết nối Kafka tái sử dụng

1.3.3. Apache Kafka

Message Broker xử lý tải lớn và đảm bảo không mất dữ liệu.

Topic Mục đích
test_topic_01 Nhận message từ API Producer (đầu vào)
processed_topic Lưu message đã xử lý thành công
error_topic Lưu message lỗi để review thủ công

1.3.4. Backend Service

REST API xử lý nghiệp vụ thực tế.

Thông tin Giá trị
Base URL http://192.168.0.133:8080
Endpoint chính POST /api/v1/plannings
Xác thực JWT Bearer Token
Framework Spring Boot

1.4. Hai Mô Hình Dịch Vụ

1.4.1. Đồng Bộ — Synchronous (Direct API)

Client gọi và chờ kết quả từ Backend.



Client → APIM → LifeESB (PlanningDirectApi)
Backend API [chờ response]
LifeESB → Client [trả kết quả thực]

Đặc điểm:

  • Client biết ngay kết quả thành công hay thất bại
  • Backend bị quá tải → Client bị block, timeout
  • Phù hợp: nghiệp vụ cần xác nhận ngay, lượng request vừa phải

Endpoint: POST /plannings-direct

1.4.2. Bất Đồng Bộ — Asynchronous (Kafka)

Client gửi và nhận phản hồi ngay (không chờ Backend xử lý xong).



ho-so-core-flow (1).jpg

Đặc điểm:

  • Client không bị block dù Backend chậm hoặc quá tải
  • Kafka buffer message, đảm bảo không mất dữ liệu
  • Phù hợp: tải lớn, xử lý nền, không cần kết quả ngay

Endpoint: POST /kafka-producer


1.5. So Sánh Hai Mô Hình

Tiêu chí Đồng bộ (/plannings-direct) Bất đồng bộ (/kafka-producer)
Client chờ ✅ Chờ kết quả thực ❌ Nhận success ngay lập tức
Khả năng chịu tải Thấp hơn (Backend block) Cao (Kafka buffer)
Độ trễ Phụ thuộc Backend Gần như bằng 0 (phía Client)
Đảm bảo dữ liệu Ghi ngay hoặc lỗi ngay Kafka lưu, retry nếu fail
Xử lý lỗi faultSequence → trả ngay error_topic → review sau
Phù hợp Tải vừa, cần confirm Tải lớn, xử lý nền
Timeout 15 giây Không (Kafka giữ message)

1.6. Nguyên Tắc Kiến Trúc

  1. Single Entry Point: Mọi request đi qua APIM, không gọi thẳng LifeESB từ ngoài.
  2. Stateless Mediator: LifeESB không lưu trạng thái — toàn bộ state trong Kafka hoặc Backend DB.
  3. Error Isolation: Lỗi phải được bắt trong Sequence, không để lỗi raw thoát ra ngoài.
  4. Dead Letter Pattern: Message lỗi luôn được chuyển vào error_topic, không bao giờ bị drop.
  5. Observability: Mọi bước xử lý đều có log level="custom" để trace theo luồng.

1.7. Môi Trường Triển Khai

Thành phần Host / Port Ghi chú
LifeESB 192.168.0.167:8290 HTTP endpoint
LifeESB Management 192.168.0.167:9201 Deploy CAR file
Kafka Broker hdp-master:9092 PLAINTEXT
Backend API 192.168.0.133:8080 Spring Boot

📸 [Ảnh minh họa] — LifeESB Dashboard sau khi deploy

 

image.png

📸 [Ảnh minh họa] — Kafka UI / Kafka Manager hiển thị các topic