Kiến trúc Hệ thống#
Hệ thống được xây dựng để quản lý và phân bổ tài nguyên tài khoản mạng xã hội, phục vụ cho việc tự động hóa các chiến dịch marketing. Nền tảng sử dụng Bun + ElysiaJS + Drizzle ORM, với hai kênh giao tiếp chính: RESTful API cho Admin và NATS Message Broker việc gửi task qua Tool.
1. Các thành phần cốt lõi#
1.1 Elysia API Server#
Cổng tiếp nhận toàn bộ yêu cầu từ giao diện Admin và Client. Server này đảm nhiệm ba vai trò chính:Xác thực định danh — kiểm tra tính hợp lệ của mỗi request.
Kiểm soát quyền truy cập — đảm bảo người dùng chỉ thực hiện được các hành động được phép.
Ghi nhật ký kiểm toán — Lưu vết mọi thao tác quan trọng để ph ục vụ bảo mật và truy vết.
Mọi cấu hình chiến dịch đều được lưu xuống cơ sở dữ liệu thông qua lớp này.1.2 NATS Message Broker#
Cầu nối bất đồng bộ giữa API Server và các Tools:API Server publish task vào hàng đợi sau khi Scheduler kích hoạt.
Tool subscribe, nhận task, thực thi hành động trên mạng xã hội, rồi phản hồi trạng thái: pending → success hoặc failed.
Cơ chế này tách rời hoàn toàn logic điều phối khỏi logic thực thi, giảm tải trực tiếp lên Database khi hàng nghìn bot hoạt động đồng thời.
1.3 Database (MySQL + Drizzle ORM)#
Lưu trữ toàn bộ dữ liệu cần thiết cho hệ thống: tài khoản, trang, nội dung, hình ảnh, chiến dịch, task.Drizzle ORM đảm bảo tính type-safe từ schema đến query, không để lọt type mismatch giữa API và Database.
Schema được tách biệt rõ ràng thành Model, Type TypeScript và định nghĩa quan hệ (Relations), dễ bảo trì và mở rộng.
2. Luồng xử lý tự động hóa#
[Frontend]
│ HTTP REST
▼
[Elysia API Server] ──────────────────────────────────────┐
│ Drizzle ORM │
▼ (publish)
[Database (MySQL)] [NATS Message Broker]
│ Quét task đến hạn │ Subscribe
▼ ▼
[Scheduler / Crontab] ── publish task ──> [Automation Workers]
│ Thực thi
▼
[Social Media Platforms]
(Facebook, TikTok, Zalo…)
│
Status callback via NATS
│
▼
[Cập nhật trạng thái task]
Bước 1 — Khởi tạo: Giao diện gọi API tạo chiến dịch, chọn nền tảng mạng xã hội và cấu hình hành động cần thực hiện.Bước 2 — Lên lịch: Scheduler định kỳ quét các chiến dịch đến giờ thực thi, sinh ra các bản ghi campaign_platform_task — mỗi bản ghi đại diện cho một hành động cụ thể trên từng link.Bước 3 — Phân bổ qua NATS: Một cron riêng biệt quét các task đến hạn và publish sang Tool thông qua NATS.Bước 4 — Thu thập kết quả: Tool phản hồi trạng thái sau khi hoàn thành; hệ thống tổng hợp và hiển thị thống kê theo từng trạng thái task.
3. Thiết kế Microservices và khả năng mở rộng#
Các thành phần được tách rời hoàn toàn, cho phép:Đóng gói độc lập bằng Docker — mỗi service chạy trong container riêng biệt.
Scale ngang Worker Node — tăng số lượng node Comment / Share / Collect mà không ảnh hưởng đến API Server.
Giảm tải Database — nhờ NATS đứng ở giữa, hàng nghìn bot có thể phản hồi đồng thời mà không gây áp lực trực tiếp lên DB.
Cấu trúc thư mục#
src/
├── controllers/ # Xử lý đầu vào, parse request, trả response
├── services/ # Logic nghiệp vụ liên tầng
├── repositories/ # Tương tác cơ sở dữ liệu (Drizzle queries)
├── schemas/ # Drizzle schema, model, type TypeScript
└── workers/ # Automation Worker, NATS subscriber
4. Công nghệ sử dụng#
| Thành phần | Công nghệ |
|---|
| Runtime | Bun |
| API Framework | ElysiaJS |
| ORM | Drizzle ORM |
| Database | MySQL |
| Message Broker | NATS |
| Containerization | Docker |
| Ngôn ngữ | TypeScript |
Modified at 2026-03-30 09:53:35