Ana içeriğe geç
Programlama

Walgit nesne depolama tabanlı durumsuz Git sunucusu mimarisini sundu

Öne çıkanlar

  • Sistem, tüm Git geçmişini ve değişikliklerini nesne depolama üzerindeki bir WAL kütüğünde saklıyor.
  • Sunucu düğümleri durumsuz önbellek olarak çalıştığı için yatay ölçekleme karmaşık konsensüs protokolleri gerektirmiyor.
  • Büyük depolar için HTTP aralık istekleriyle uzaktan okuma ve statik bundle-uri klonlama desteği bulunuyor.

Açık kaynaklı bir Git sunucusu olarak geliştirilen walgit, geleneksel veritabanı veya lider düğüm ihtiyacını ortadan kaldırarak doğrudan S3 ve GCS gibi nesne depolama servisleri üzerinde çalışıyor. Rust diliyle yazılan sistem, tek bir çalıştırılabilir ikili dosya üzerinden Smart HTTP, Git LFS, bundle-uri klonlama desteği ve dahili web arayüzü sunuyor. Yazılım mimarisi, depoları yerel disklerde tutmak yerine nesne depolama alanındaki önceden yazma günlüğünü (WAL) tek doğruluk kaynağı olarak konumlandırıyor.

Sistem, Cursor tarafından ortaya atılan Continuity mimarisini temel alarak geliştirildi. İstemcilerden gelen itme (push) işlemleri, nesne deposuna yazılan değişmez paketler ve küçük bir bildirim dosyasının karşılaştır-ve-değiştir (CAS) yöntemiyle güncellenmesi sayesinde konsensüs sağlıyor. Bu yöntem sayesinde sunucu örnekleri durumsuz birer önbellek gibi çalışıyor; yeni bir makine eklendiğinde doğrudan nesne deposundaki günlüğü okuyarak depoyu sunmaya başlıyor.

Proje, özellikle büyük monorepo yapılarının sunucu disk kapasitesini aşan senaryolarda HTTP range istekleri üzerinden uzaktan veri okuma yeteneği içeriyor. Klonlama yükleri ise bundle-uri mekanizmasıyla doğrudan statik dosya olarak nesne deposuna veya CDN katmanına devrediliyor.

Kaynak

Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.