Nhảy tới nội dung

Kiến Trúc Hệ Thống (System Architecture)

s


⚙️ Các thành phần và Công nghệ chính

Hệ thống được thiết kế theo kiến trúc Microservices hiện đại, đảm bảo khả năng mở rộng và xử lý dữ liệu lớn:

Thành phầnCông nghệ sử dụng
Mobile AppReact Native (iOS & Android)
Web DashboardReactJS (Quản lý cho cơ quan chức năng)
API GatewayNginx (Load Balancer & Reverse Proxy)
Core APILaravel 12 (PHP), Laravel Sanctum (Auth), Reverb (WebSocket)
MicroservicesNode.js, Python FastAPI, Go
AI/ML ServicesPython (Computer Vision, NLP, Flood Prediction, Analytics)
Message QueueRabbitMQ (Event-driven), MQTT (IoT Communication)
Cache & SessionRedis
DatabasesPostgreSQL + PostGIS, MySQL, MongoDB, OpenSearch
StorageMinIO (Object Storage - S3 Compatible)
Container PlatformDocker, Docker Compose

🛠️ Các Dịch Vụ và Chức Năng Chính (Microservices)

Hệ thống được tổ chức thành các dịch vụ độc lập (Microservices), giao tiếp chủ yếu qua HTTP (REST) và Kafka/MQTT.

1. Dịch vụ Cốt lõi

  • RFI/Public API: Điểm truy cập chính cho các giao diện người dùng. Xử lý logic tổng hợp dữ liệu (Aggregation) và caching (Vũ Cache).
  • Media Service: Quản lý và lưu trữ tệp tin đa phương tiện vào MinIO / S3.
  • Search API: Cung cấp giao diện tìm kiếm dữ liệu thông qua OpenSearch.

2. Dịch vụ IoT và Phân tích Dữ liệu

  • IoT Adapter: Nhận tin nhắn từ MQTT Broker (Sensors), xử lý và đưa vào luồng sự kiện Kafka.
  • NLP (Natural Language Processing): Phân tích và xử lý ngôn ngữ tự nhiên.
  • Vision (Vision Python/FastAPI): Xử lý thị giác máy tính, tạo ra các sự kiện vision_alert.
  • Geo/PoI: Xử lý dữ liệu vị trí và điểm quan tâm (Point of Interest) sử dụng PostGIS.

3. Dịch vụ Quản lý và Thông báo

  • Report Service: Tạo báo cáo, lưu trữ vào DB ReportProduce report observed event.
  • Rule Engine (NDx/Drools): Tiêu thụ các sự kiện cảnh báo từ Vision và Report, áp dụng luật nghiệp vụ để Produce alert triggered.
  • Incident Service: Xử lý và quản lý vòng đời của các sự cố, lưu trữ vào DB Incident.
  • Notify Service: Nhận sự kiện alert triggered và phân phối thông báo (sử dụng Redis Queue/Cache) tới ứng dụng (React Native App) và các nền tảng khác (Laravel Webhook).

➡️ Luồng Dữ liệu Chính

  1. Truy cập Ứng dụng: React Native App gửi yêu cầu qua HTTPS + JWT đến API Gateway.
  2. Dữ liệu Cảm biến: Sensors -> MQTT Broker -> IoT Adapter -> Kafka.
  3. Luồng Cảnh báo/Sự cố:
    • Vision Service (hoặc Report Service) tạo vision/report alert.
    • Kafka truyền tải các sự kiện này.
    • Rule Engine tiêu thụ, áp dụng luật, và tạo alert triggered.
    • Notify Service nhận alert triggered để broadcast data tới React Native App (qua HTTP/Websocket) và Laravel Webhook.
  4. Dữ liệu Báo cáo: Report Service lưu dữ liệu vào DB Report và tạo sự kiện cho Rule Engine.
  5. Quản lý Sự cố: Incident Service nhận thông tin liên quan và lưu vào DB Incident.

🔬 AI & dữ liệu

  • Vision: YOLOv8 / Detectron2 cho phát hiện đối tượng/sự cố từ ảnh.
  • NLP: PhoBERT / XLM-R cho phân loại mô tả tiếng Việt và trích xuất thực thể.
  • Fusion Layer: hợp nhất kết quả ảnh, văn bản và metadata để đưa ra nhãn cuối cùng và mức ưu tiên.
  • Đánh giá: Precision, Recall, F1-score, mAP và chỉ số độ tin cậy AI.
  • Dữ liệu lưu trữ theo chuẩn NGSI-LD để dễ tích hợp và chia sẻ.

♻️ Quy trình hoạt động (tóm tắt)

  1. Người dân gửi phản ánh (ảnh, mô tả, vị trí).
  2. Hệ thống lưu ảnh và đẩy message vào hàng đợi.
  3. Worker gọi AI microservice để phân tích hình ảnh & văn bản.
  4. Kết quả được ghép với metadata, cập nhật entity (NGSI-LD) và hiển thị trên bản đồ.
  5. Nếu cần, phát cảnh báo tới đơn vị liên quan và công dân (push/SMS/email).
  6. Hoàn thành xử lý → cập nhật trạng thái và tính điểm CityPoint cho reporter.