Dự án thu thập và quản lý dữ liệu từ Foody.vn, tập trung vào các danh mục giải trí như Karaoke, Billiards, Rạp chiếu phim, Sân khấu và Khu chơi Game tại các thành phố của Việt Nam.
Dự án được thiết kế theo kiến trúc microservices, bao gồm các thành phần sau:
Đóng vai trò là cổng kết nối cho toàn bộ hệ thống, quản lý và điều hướng các yêu cầu API từ người dùng đến các dịch vụ nội bộ tương ứng.
Chức năng chính:
- Điều hướng các yêu cầu API đến đúng dịch vụ nội bộ
- Cung cấp một điểm truy cập thống nhất cho toàn bộ hệ thống
- Đơn giản hóa việc truy cập cho người dùng và các dịch vụ khác
Thu thập dữ liệu từ trang web Foody.vn theo lịch trình hoặc theo yêu cầu.
Chức năng chính:
- Thu thập dữ liệu tự động theo lịch trình hàng ngày
- Thu thập dữ liệu theo yêu cầu người dùng
- Theo dõi trạng thái thu thập dữ liệu qua WebSocket
- Tạm dừng, tiếp tục hoặc dừng quá trình thu thập
Thu thập và xử lý dữ liệu từ các file JSON được tạo ra bởi hệ thống crawler, sau đó gửi dữ liệu đã xử lý đến API cơ sở dữ liệu.
Chức năng chính:
- Kiểm tra và xử lý các file
.donetrong thư mục landing zone - Trích xuất dữ liệu cửa hàng từ các file JSON tương ứng
- Chuyển đổi dữ liệu thành định dạng phù hợp
- Gửi dữ liệu đến API cơ sở dữ liệu
- Đánh dấu các file đã xử lý bằng cách đổi tên từ
.donethành.processed
Cung cấp API để truy xuất, thêm, tìm kiếm và quản lý dữ liệu cửa hàng (store), thành phố (city), danh mục (category).
Chức năng chính:
- Cung cấp các endpoint RESTful để truy vấn dữ liệu
- Kết nối trực tiếp với cơ sở dữ liệu MySQL
- Xử lý yêu cầu từ các dịch vụ khác và frontend
Quản lý cơ sở dữ liệu MySQL cho toàn bộ hệ thống.
Chức năng chính:
- Khởi tạo và cấu hình cơ sở dữ liệu
- Tạo các bảng và quan hệ cần thiết
- Lưu trữ dữ liệu cửa hàng, thành phố, danh mục
Cung cấp giao diện người dùng để tương tác với hệ thống.
Chức năng chính:
- Hiển thị dữ liệu cửa hàng, thành phố, danh mục
- Cho phép người dùng tìm kiếm và lọc dữ liệu
- Cung cấp giao diện để quản lý quá trình thu thập dữ liệu
- Thu thập dữ liệu: Dịch vụ Thu thập dữ liệu crawl dữ liệu từ Foody.vn và lưu vào thư mục
landing_zone. - Xử lý dữ liệu: Dịch vụ Nhập dữ liệu đọc các file trong
landing_zonevà gửi dữ liệu đã xử lý đến Database API. - Lưu trữ dữ liệu: Database API lưu dữ liệu vào cơ sở dữ liệu MySQL.
- Truy vấn dữ liệu: Frontend và các dịch vụ khác truy vấn dữ liệu thông qua Database API.
- Docker và Docker Compose
- Git
- Clone repository:
git clone https://github.com/your-username/foody-crawl-project.git
cd foody-crawl-project- Khởi động toàn bộ hệ thống:
docker-compose up -d- Truy cập các dịch vụ:
- Frontend: http://localhost:80
- API Gateway: http://localhost:8080
- Database API: http://localhost:8001 (qua Gateway)
- Crawling API: http://localhost:8000 (qua Gateway)
foody-crawl-project/
├── gateway/ # Dịch vụ Gateway
├── data_crawling_service/ # Dịch vụ Thu thập dữ liệu
├── data_ingestion_service/ # Dịch vụ Nhập dữ liệu
├── database_api_service/ # Dịch vụ API Cơ sở dữ liệu
├── database_service/ # Dịch vụ Cơ sở dữ liệu
├── frontend_service/ # Dịch vụ Giao diện người dùng
├── landing_zone/ # Thư mục lưu trữ dữ liệu tạm thời
└── docker-compose.yml # Cấu hình Docker Compose
- Fork repository
- Tạo branch mới (
git checkout -b feature/amazing-feature) - Commit thay đổi (
git commit -m 'Add some amazing feature') - Push lên branch (
git push origin feature/amazing-feature) - Tạo Pull Request
Dự án này chỉ để phục vụ nghiên cứu và học tập, không hề có bất cứ ý đồ gây tổn hại nào cho Foody