Dịch vụ All File Converter được thiết kế như một hệ thống SaaS phân tán có khả năng mở rộng dựa trên ngăn xếp Python 3.12 bất đồng bộ hiện đại. Kiến trúc được chia thành các lớp độc lập: tiếp nhận sự kiện mạng, điều phối tác vụ, thực thi cô lập các tiến trình nhị phân nặng và luồng phân tích.
1. Ngăn xếp công nghệ tổng quan và kiến trúc hệ thống
Nền tảng dựa trên các nguyên tắc hiệu suất cao (high-throughput), tiêu thụ bộ nhớ tối thiểu và chống lỗi:
- Telegram Bot Framework:
Aiogram 3.13, hoạt động ở chế độ Webhook với xác thực token bảo mật và bộ lọc vòng đời tin nhắn tùy chỉnh. - Cổng Web và REST API:
FastAPIdựa trên máy chủ ASGI Uvicorn với khả năng truyền phát file nhị phân bất đồng bộ (FileResponse) và dọn dẹp nền quaBackgroundTasks. - Trình môi giới hàng đợi và bộ nhớ đệm:
Redis 7(quản lý tác vụ Celery, khóa chống trạng thái cạnh tranh, chống brute-force, lưu trữ phiên). - Trình thực thi nền (Task Queue):
Celery 5.4với nhóm worker chuyên dụng trong container cô lậpconverter_worker. - Cơ sở dữ liệu:
PostgreSQL 16với lớp ORMSQLAlchemy 2.0 (asyncpg), nhóm kết nối liên tục (20+10 overflow) và tự động thử lại giao dịch lỗi (@db_retry). - Vòng lặp mạng: Định tuyến qua
Cloudflare Zero Trustvới tính năng chặn quyền truy cập IP trực tiếp vào máy chủ thông qua Middleware.
2. Hàng đợi bất đồng bộ và cô lập tính toán nặng (Celery + Redis)
Việc chuyển đổi file phương tiện và gói văn phòng tạo ra tải đỉnh trên CPU và RAM. Để quá trình xử lý tin nhắn đến trong Telegram không bị chặn trong các hoạt động nặng, việc cô lập nghiêm ngặt đã được triển khai:
- Ủy quyền tác vụ vào Redis: Khi chọn định dạng, trình xử lý Telegram đăng ký tác vụ trong cơ sở dữ liệu với trạng thái
PROCESSINGvà đưa công việc vào hàng đợitasks.execute_conversionthông qua Celery. - Container worker cô lập: Việc thực thi các tiện ích chuyển đổi diễn ra trong một Linux container riêng biệt với giới hạn thời gian xử lý và bộ nhớ của riêng nó.
- Kiểm soát đóng băng và thời gian chờ: Các lệnh gọi tiện ích bên ngoài được bọc trong ngữ cảnh bất đồng bộ với việc kiểm soát thời gian nghiêm ngặt (
conversion_timeout_sec = 180). Khi vượt quá giới hạn, tiến trình sẽ bị buộc kết thúc quaproc.kill(), giải phóng tài nguyên. - Fallback chịu lỗi: Khi trình môi giới Redis tạm thời không khả dụng, tác vụ sẽ tự động bị chặn bởi trình điều phối bất đồng bộ cục bộ và được thực thi trực tiếp mà không gây lỗi cho người dùng.
3. Đường ống chuyển đổi chuyên dụng
Đối với mỗi loại dữ liệu, các tiện ích và thư viện gốc chuyên specialized được sử dụng:
- Tài liệu và bảng tính (LibreOffice): Gói văn phòng không giao diện (
soffice --headless) để kết xuất chính xác DOCX, XLSX, PPTX, RTF, ODT thành định dạng PDF hoặc file văn bản. - Âm thanh và video trực tuyến (FFmpeg): Chuyển mã đa luồng cho các codec video (H.264), codec âm thanh (MP3, OGG Opus), trích xuất âm thanh, tạo GIF (bộ lọc Lanczos) và cắt hình vuông (1:1) cho tin nhắn video Telegram.
- Xử lý PDF tốc độ cao (Poppler Utils): Các tiện ích
pdftotext(trích xuất tức thì văn bản định dạng UTF-8) vàpdftoppm(kết xuất PDF thành hình ảnh raster từng trang mà không có chi phí chung của LibreOffice). - Nhận dạng quang học (Tesseract OCR): Trích xuất văn bản in từ các bản quét và ảnh dựa trên mạng nơ-ron bằng hơn 40 ngôn ngữ.
- Đồ họa raster và vector: Thư viện
Pillow(bao gồm hỗ trợ định dạng HEIC và AVIF),CairoSVGcho hình ảnh vector vàlottiecho nhãn dán hoạt hình Telegram (.TGS). - Sách, phụ đề và phông chữ: Công cụ
Calibre(ebook-convert), trình phân tích cú pháp phụ đềpysubs2(SRT, VTT, ASS, SSA) và trình biên dịch phông chữfonttools(nén Brotli trong WOFF2).
4. Bảo vệ tài nguyên dự phòng (System Guard)
Để bảo vệ chống sập máy chủ do thiếu bộ nhớ (OOM Killer), dịch vụ chẩn đoán dự phòng System Guard đã được tích hợp. Trước khi nhận file để xử lý, hệ thống kiểm tra các chỉ số chính của máy chủ:
- Bộ nhớ RAM trống: Tối thiểu 500 MB dung lượng trống (
guard_min_free_ram_mb). - Dung lượng đĩa: Tối thiểu 2 GB không gian trống trong thư mục
/tmp(guard_min_free_disk_mb). - Hàng đợi tác vụ: Giới hạn độ dài hàng đợi Celery (không quá 20 tác vụ đang chờ).
Khi vượt quá giới hạn, dịch vụ sẽ tạm thời bật tính năng bảo vệ (HTTP 503 / thông báo trong trò chuyện), ngăn ngừa quá tải máy chủ và gửi cảnh báo tức thì cho quản trị viên qua Telegram.
5. Vòng đời file và bảo mật (GDPR)
Kiến trúc được thiết kế theo mô hình Zero-Data-Footprint:
- File của người dùng được tải lên phân vùng được bảo vệ
tmp/conversions/với các tiền tố duy nhất dựa trên ID tác vụ. - File vẫn có thể truy cập nghiêm ngặt trong phiên làm việc — không quá 15 phút (900 giây).
- Trình thu gom rác tự động xóa các file gốc và file đã hoàn thành ngay sau khi xác nhận gửi thành công vào cuộc trò chuyện hoặc sau khi hết thời gian chờ phiên.
- Cơ sở dữ liệu PostgreSQL không lưu trữ file nhị phân hoặc văn bản tài liệu cá nhân — các bảng chỉ ghi lại siêu dữ liệu kỹ thuật ẩn danh (định dạng, kích thước tính bằng byte, thời gian chạy, trạng thái).
6. REST API đa năng cho các dịch vụ web bên ngoài
Dịch vụ ban đầu được thiết kế như một backend đa nền tảng. Cùng với bot, một giao diện lập trình an toàn đầy đủ chức năng hoạt động cho các trang web (ví dụ: trên Django) và các bot của bên thứ ba:
GET /api/v1/formats— ma trận JSON động các hướng chuyển đổi có sẵn, được đồng bộ hóa với cài đặt của Google Trang tính.POST /api/v1/convert— điểm cuối đa năng nhậnmultipart/form-data(file, định dạng mục tiêu, ID khách hàng bên ngoài) và trả về luồng byte đã sẵn sàng dưới dạng tải xuống trực tiếp.- Xác thực bằng Bearer token (
WEBHOOK_REFRESH_TOKEN) được bảo vệ chống tấn công thời gian thông quasecrets.compare_digest.
7. Bảng điều khiển và Observability (NiceGUI + AG Grid)
Việc theo dõi các chỉ số kinh doanh và trạng thái hệ thống được đưa vào bảng điều khiển Single-Page gốc dựa trên NiceGUI 2.x:
- Bảng tương tác
AG Grid (v32+)với bộ lọc hộp kiểm kiểu Excel tùy chỉnh (aggrid_filters.js). - Theo dõi hàng đợi, độ trễ của nhà cung cấp API và ping PostgreSQL / Redis trong thời gian thực.
- Lọc xuyên suốt theo ngày với tích hợp liền mạch bảng điều khiển BI
Metabasethông qua JWT token đã ký.