Tôi đang tìm giải pháp hệ thống tệp phân tán/hệ thống tệp mạng có thể được sử dụng trong trường hợp sau:
- Tôi có một Docker Swarm với nhiều máy chủ, nhưng mỗi máy chủ về cơ bản là độc lập và trông không khác gì bất kỳ máy chủ nào khác. Chúng tôi chỉ sử dụng chúng để mở rộng quy mô. Điều đó có nghĩa là mỗi máy chủ chạy tất cả các công nhân cần thiết để làm cho hệ thống hoạt động và lý tưởng nhất là một tác vụ đi vào hệ thống sẽ chạy hoàn toàn trên máy chủ khởi động nó lần đầu tiên.
- Có một số bước để xử lý một nhiệm vụ. Mỗi bước tạo ra một số tệp lớn trong khoảng 1-10 GB. Về cơ bản, công nhân trên mỗi máy chủ sẽ chỉ hoạt động trên các tệp đã được lưu trữ cục bộ.
- Tuy nhiên, đôi khi, máy chủ có thể bị quá tải và tôi muốn nhân viên ở máy chủ khác đảm nhận các bước xử lý còn lại. Để đạt được điều này, tôi cần các tệp được lưu trữ trong một ổ đĩa dùng chung mà nhân viên ở các máy chủ khác có thể sử dụng một cách minh bạch để truy cập các tệp được lưu trữ trên một máy chủ khác.
Nói cách khác: Mỗi máy chủ sẽ có cùng một "khối lượng mạng" được gắn ở một nơi nào đó và nó chứa một số tệp thực sự được lưu trữ trên máy chủ hiện tại (các tệp này chủ yếu có liên quan) và một số tệp được lưu trữ trên một máy chủ khác. Tuy nhiên, công nhân sẽ chủ yếu (90-95% số lần) truy cập các tệp cục bộ trên máy chủ của họ.
Tôi không cần sao chép (các tệp chỉ có liên quan trong 30-60 phút và sau đó chúng không còn cần thiết nữa) và tôi đặc biệt đừng muốn có một kho lưu trữ trung tâm.
Thông lượng trong hệ thống được đo thay vì tính bằng phút cho mỗi tác vụ chứ không phải tính bằng tác vụ mỗi giây. Có ít tệp lớn hơn là nhiều tệp nhỏ. Ngoài ra, các tệp được ghi một lần và chỉ đọc một hoặc hai lần.
Có một giải pháp tốt cho việc này? tôi đã có một cái nhìn tại GlusterFS
, EdgeFS
, Hệ thống tập tin liên hành tinh
, Ceph
và một số khác, nhưng dường như không có lựa chọn nào là đúng.