Cs-Agent Architechture

Dựa trên file go.mod và cấu trúc thư mục bạn cung cấp, kiến trúc dự án cs-agent-svc có thể mô tả như sau:


1. Kiến trúc tổng thể

  • Kiểu kiến trúc: Modular Monolith hoặc Microservices (tùy mức triển khai).

  • Framework chính: GoFrame (GF) – hỗ trợ phát triển REST API, gRPC, middleware, config, logging, ...

  • Giao tiếp nội bộ: gRPC (dùng protobuf, các controller gRPC riêng biệt).

  • Giao tiếp bất đồng bộ: Kafka (event-driven, xử lý message queue).

  • Quan sát & giám sát: Prometheus (metrics), OpenTelemetry (tracing).


2. Các thành phần chính

a. API Layer

  • Thư mục /api chứa các module API theo domain (agent, conversation, article, ...).

  • Hỗ trợ cả RESTful API và gRPC (các controller gRPC nằm trong controllerrpc).

b. Business Logic Layer

  • Thư mục /internal/logic: Xử lý nghiệp vụ cho từng domain (agent, article, conversation, translation, ...).

  • Tương tác với DB, cache, message queue, các service khác.

c. Data Access Layer

  • Thư mục /internal/dao: Truy cập dữ liệu (MySQL, Redis, Elasticsearch).

  • Model dữ liệu định nghĩa ở /internal/model.

d. Service Layer

  • Thư mục /internal/service: Định nghĩa interface cho các service (middleware, redis, ...).

e. RPC & External Service

  • Thư mục /internal/pkg/rpc: Client cho các service bên ngoài (chatstorage, event_center, ...).

  • Sử dụng gRPC để giao tiếp với các service khác.

f. Utility Layer

  • Thư mục /utility: Các hàm tiện ích chung (grpc, http, id_gen, ...).

g. Config & Manifest

  • Thư mục /manifest/config: File cấu hình mẫu, template.

  • Thư mục /hack: File config cho môi trường phát triển.


3. Các công nghệ sử dụng

  • MySQL: Lưu trữ dữ liệu chính.

  • Redis: Cache, lưu trạng thái tạm thời, lock, ...

  • Elasticsearch: Tìm kiếm nâng cao.

  • Kafka: Message queue cho event-driven.

  • Prometheus: Thu thập metrics.

  • OpenTelemetry: Distributed tracing.

  • Websocket: Hỗ trợ realtime (nếu có).


4. Luồng khởi tạo & vận hành

  • File /internal/cmd/cmd.go là entrypoint, khởi tạo:

    • Kết nối DB, Redis, Kafka, Elasticsearch, các gRPC client.

    • Đăng ký các controller REST/gRPC.

    • Khởi động song song server REST và gRPC.

  • Middleware cho cả HTTP và gRPC (logging, CORS, auth, ...).


5. Tóm tắt

  • Kiểu kiến trúc: Modular Monolith (có thể tách microservice nếu cần).

  • Giao tiếp: REST, gRPC, Kafka.

  • Lưu trữ: MySQL, Redis, Elasticsearch.

  • Quan sát: Prometheus, OpenTelemetry.

  • Framework: GoFrame.

Last updated