[Open Source] #219 - Duplicacy: Hệ thống sao lưu đám mây thế hệ mới với kiến trúc Lock-free Deduplication, Go Backend và thuật toán cắt dữ liệu biến thiên Buzhash
Trong mảng hạ tầng sao lưu (Backup Infrastructure), thách thức lớn nhất là làm thế nào để thực hiện chống trùng lặp dữ liệu (Deduplication) hiệu quả xuyên suốt nhiều máy tính mà không cần cơ chế khóa (locking) phức tạp hay cơ sở dữ liệu trung tâm. Duplicacy ra đời như một giải pháp đột phá, dựa trên các nghiên cứu học thuật tiên tiến, cung cấp khả năng sao lưu đồng thời từ nhiều nguồn vào một kho lưu trữ đám mây duy nhất. Với triết lý "không cơ sở dữ liệu", Duplicacy biến chính cấu trúc tệp tin trên Cloud thành bộ máy quản lý thông minh, mang lại độ tin cậy và hiệu suất vượt trội cho cả người dùng cá nhân lẫn doanh nghiệp.
Dưới góc độ kỹ thuật, Duplicacy là một minh chứng xuất sắc về việc ứng dụng ngôn ngữ Go, thuật toán Rolling Hash (Buzhash) và kỹ thuật phục hồi lỗi qua Erasure Coding.
Github: https://github.com/gilbertchen/duplicacy
🛠️ 1. Nền tảng công nghệ: Hiệu năng thực thi và Đa đám mây
Duplicacy tận dụng sức mạnh của hệ sinh thái Go để xây dựng một công cụ CLI vạn năng:
- Logic Core (Golang): Tận dụng khả năng xử lý đa luồng (Concurrency) để thực hiện băm dữ liệu và tải lên song song, giúp tối đa hóa băng thông đường truyền internet.
- Protocol Agnostic: Tích hợp trực tiếp hàng chục SDK đám mây (AWS S3, Google Drive, Azure, Backblaze B2) và các giao thức mạng chuẩn (SFTP, WebDAV, SMB), cho phép hoán đổi kho lưu trữ mà không thay đổi logic sao lưu.
- High-speed Cryptography: Sử dụng Blake2b và AES-256-GCM để đảm bảo tốc độ mã hóa cực nhanh trên các CPU hiện đại, bảo vệ dữ liệu ngay từ khi còn ở máy khách.
- Data Integrity (Erasure Coding): Tích hợp thư viện Reed-Solomon để thêm các khối dữ liệu phục hồi (Parity blocks), cho phép khôi phục toàn vẹn bản sao lưu ngay cả khi một số mảnh dữ liệu trên đám mây bị hỏng hoặc mất.
2. Trụ cột kiến trúc: Lock-free Deduplication và Database-less
Kiến trúc của Duplicacy loại bỏ những "điểm chết" truyền thống của các phần mềm backup:
- Lock-free Architecture: Đây là sáng kiến cốt lõi của tác giả. Duplicacy cho phép hàng trăm máy tính cùng thực hiện sao lưu và xóa bản cũ (Pruning) vào cùng một Bucket Cloud đồng thời mà không cần giao tiếp chéo và không sợ gây xung đột dữ liệu.
- Database-less Design: Không giống như các đối thủ (Restic, Duplicati) phụ thuộc vào SQLite cục bộ để quản lý chunk, Duplicacy coi Content-addressable storage là index. Tên mỗi tệp trên Cloud chính là mã băm của nội dung nó chứa. Điều này giúp hệ thống cực kỳ nhẹ và có khả năng phục hồi "thảm họa" (Disaster Recovery) tuyệt vời: chỉ cần mã khóa, bạn có thể khôi phục từ bất kỳ máy tính nào.
- Two-step Pruning (Fossilization): Thay vì xóa trực tiếp (vốn cần khóa để tránh xóa nhầm dữ liệu máy khác đang dùng), Duplicacy sử dụng kỹ thuật "hóa thạch". Các mảnh dữ liệu thừa được đổi tên thành
.fslvà chỉ bị hủy vĩnh viễn sau một khoảng thời gian chờ an toàn.
🔄 3. Workflow: Vòng đời từ Tệp tin đến Mảnh dữ liệu đám mây (Sequence Diagram)
Sơ đồ mô tả quy trình hệ thống chia nhỏ và mã hóa dữ liệu trước khi tải lên:

⚡ 4. Các kỹ thuật "Pro-level" trong mã nguồn
- Variable-size Chunking (Buzhash): Một kỹ thuật kỹ thuật cực kỳ tinh tế. Bằng cách sử dụng Rolling Hash để tìm điểm cắt, Duplicacy giải quyết được bài toán "thêm dữ liệu ở giữa file". Dù bạn thêm 1 byte vào đầu tệp 1GB, Duplicacy vẫn nhận diện được 99% nội dung cũ không đổi, trong khi kỹ thuật cắt cố định (Fixed-size) sẽ coi toàn bộ file là mới.
- Snapshot Migration Orchestration: Hệ thống hỗ trợ sao chép snapshot giữa các vùng lưu trữ (ví dụ từ Google Drive sang S3) ở mức độ mảnh dữ liệu (chunk level), giúp việc di trú dữ liệu khổng lồ diễn ra cực kỳ an toàn và tiết kiệm băng thông.
- VSS & APFS Snapshot Integration: Tích hợp sâu vào hệ điều hành (Volume Shadow Copy trên Windows) để đóng băng trạng thái tệp tin, cho phép sao lưu các tệp đang bị khóa bởi ứng dụng khác (như Outlook hay Database) mà không gây lỗi.
- Two-level Nesting Directory: Để tránh giới hạn hiệu năng của File System khi có hàng triệu chunk, Duplicacy tự động phân cấp thư mục theo prefix mã băm (ví dụ:
chunks/ab/cd...), đảm bảo tốc độ truy xuất hằng số bất kể quy mô sao lưu.
⚖️ 5. So sánh chiến lược
| Tiêu chí | Duplicacy | Restic | Duplicati |
|---|---|---|---|
| Deduplication | Cross-computer (Lock-free) | Local-first | Local-first |
| Hạ tầng quản lý | Không cần DB | Cần Index cục bộ | Cần SQLite (dễ hỏng) |
| Xử lý đồng thời | Rất mạnh (Nhiều máy cùng ghi) | Hạn chế | Không hỗ trợ |
| Khả năng phục hồi | Tuyệt đối (Content-addressable) | Cao | Trung bình |
| Định dạng Chunk | Biến thiên (Buzhash) | Biến thiên (CDC) | Cố định |
✅ Kết luận: Tại sao Duplicacy là đỉnh cao của hạ tầng Backup?
Duplicacy chứng minh rằng kiến trúc tối giản là kiến trúc bền bỉ nhất. Bằng cách làm chủ kỹ thuật Rolling Hash và giải quyết bài toán Concurrency mà không cần khóa, dự án đã tạo ra một hạ tầng sao lưu đám mây vô địch về độ tin cậy. Đây là hình mẫu lý tưởng cho việc xây dựng các hệ thống lưu trữ phân tán hiện đại.
Đối với các kỹ sư Backend và SRE, nghiên cứu Duplicacy mang lại giá trị về:
- Kỹ thuật Content-addressable Storage trong thực tế.
- Cách xây dựng hệ thống Deduplication quy mô lớn.
- Tư duy thiết kế Database-less cho các ứng dụng an toàn dữ liệu.
All rights reserved