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