Google telah membuka sumber CDC File Transfer , alat penyegerakan fail berprestasi tinggi yang pada asalnya dibangunkan untuk pembangun permainan Stadia . Projek ini muncul daripada keperluan praktikal: pembangun permainan yang bekerja di Windows memerlukan penyegerakan pantas untuk binaan permainan besar ke kes Linux di awan, tetapi alat tradisional seperti rsync terlalu perlahan untuk saiz fail yang besar.
Peningkatan Kelajuan Revolusioner Melalui Content-Defined Chunking
Inovasi teras terletak pada penggantian chunking bersaiz tetap rsync dengan Content-Defined Chunking ( CDC ). rsync tradisional membahagikan fail kepada blok tetap, yang mewujudkan masalah apabila data dimasukkan atau dipadamkan di tengah fail - semua chunk seterusnya kelihatan berubah walaupun ia adalah sama. CDC menyelesaikan masalah ini dengan menentukan sempadan chunk berdasarkan kandungan fail dan bukannya kedudukan, bermakna penyisipan hanya mempengaruhi chunk yang diubah suai.
Peningkatan prestasi adalah besar. Ujian Google menunjukkan CDC mencapai kelajuan pemindahan 1,500 MB/s berbanding 50 MB/s untuk rsync - peningkatan 30x. Dalam senario dunia sebenar dengan binaan permainan antara 49-58 GB , CDC rsync menyelesaikan penyegerakan dalam 75 saat berbanding 270 saat untuk rsync tradisional.
Perbandingan Prestasi
- CDC rsync: kelajuan pemindahan 1,500 MB/s
- rsync tradisional: kelajuan pemindahan 50 MB/s
- Peningkatan kelajuan: 30 kali ganda lebih pantas
- Masa penyegerakan dunia sebenar: 75 saat ( CDC ) berbanding 270 saat ( rsync tradisional )
- Data ujian: binaan permainan 49-58 GB
Pelaksanaan Teknikal Menarik Minat Pembangun
Komuniti teknikal menunjukkan minat khusus terhadap peningkatan algoritma chunking. Sesetengah pembangun telah bereksperimen dengan versi dipertingkat FastCDC , algoritma asas, dengan satu pelaksanaan menunjukkan keuntungan kecekapan tambahan 3.4% melalui teknik lookahead. Pendekatan ini mencerminkan strategi pengoptimuman yang digunakan dalam pemampatan data, menunjukkan ruang untuk penambahbaikan selanjutnya.
Walau bagaimanapun, kekeliruan wujud mengenai keupayaan sedia ada rsync . Walaupun sesetengah ahli komuniti pada mulanya menyangka rsync sudah menggunakan sempadan yang ditentukan kandungan, realitinya adalah rsync menggunakan blok bersaiz tetap dengan pengesanan rolling hash - pendekatan berbeza yang kurang cekap CPU daripada kaedah CDC .
Ciri-ciri Teknikal Utama
- Content-Defined Chunking (CDC): Bahagian bersaiz berubah berdasarkan kandungan fail dan bukannya kedudukan tetap
- Algoritma FastCDC: Pembahagian yang cekap dengan overhed CPU yang minimum bagi setiap bait
- Keupayaan Streaming: Penyegerakan fail masa nyata dengan kelewatan ~0.04s
- Sokongan Pemampatan: Pemampatan pantas terbina dalam untuk pemindahan data
- Integrasi SSH/SFTP: Menggunakan protokol standard untuk pemindahan selamat
Batasan Platform Menimbulkan Kebimbangan Penggunaan
Walaupun peningkatan prestasi yang mengagumkan, sokongan platform terhad alat ini telah menarik kritikan. CDC File Transfer kini hanya menyokong kombinasi khusus Windows -ke- Linux dan Windows -ke- Windows , mencerminkan reka bentuk asal yang tertumpu kepada Stadia . Projek ini tidak menyokong pemindahan Linux -ke- Linux , yang dianggap banyak pembangun sebagai batasan ketara.
Inisiatif hebat, terutamanya algoritma penyegerakan baharu, tetapi halangan besar untuk penggunaan: hanya berfungsi pada gabungan pelik (platform sumber / platform destinasi). Mengapa???? Betapa sukarnya menulis kod bebas platform untuk membaca/menulis bait dan menghantarnya melalui wayar pada 2025?
Sistem binaan projek juga menimbulkan halangan. Ia memerlukan Bazel , alat binaan Google , yang sesetengah pembangun rasa menyusahkan berbanding sistem binaan yang lebih standard.
Matriks Sokongan Platform
Alat | Windows x64 | Ubuntu 22.04 x64 | Ubuntu 22.04 aarch64 | macOS |
---|---|---|---|---|
cdc_rsync (Dari) | ✓ | ✓ | ✓ | - |
cdc_rsync (Kepada) | ✓ | ✓ | ✓ | - |
cdc_stream (Dari) | ✓ | ✓ | - | - |
cdc_stream (Kepada) | ✓ | ✓ | - | - |
Prospek Masa Depan dan Kemungkinan Integrasi
Perbincangan komuniti telah meneroka sama ada penambahbaikan ini boleh diintegrasikan ke dalam rsync standard atau digunakan untuk alat lain. Sesetengah pembangun berminat dengan aplikasi berpotensi dalam sistem kawalan versi seperti Git , di mana strategi chunking serupa boleh meningkatkan prestasi untuk repositori besar.
Projek ini nampaknya terhenti, dengan repositori diarkibkan sembilan bulan lalu dan tiada komit dalam dua tahun. Walau bagaimanapun, keluaran sumber terbuka menyediakan asas untuk pembangunan dipacu komuniti, dan beberapa pembangun telah menyatakan minat untuk mengembangkan sokongan platform dan memperbaiki proses binaan.
Projek CDC File Transfer menunjukkan bagaimana menyelesaikan masalah dalaman khusus boleh membawa kepada inovasi yang boleh digunakan secara meluas. Walaupun pelaksanaan semasa mempunyai batasan, algoritma chunking asas mewakili kemajuan ketara dalam teknologi penyegerakan fail yang boleh memberi manfaat kepada komuniti pembangunan yang lebih luas jika halangan penggunaan ditangani.
Rujukan: CDC File Transfer