Bir bulut taban senkronizasyon çözümü (Dropbox gibi bir şey) bina düşünüyorum:bulut tabanlı senkronizasyon mimarisi
Ne olur gibi sağlam mimari görünüm?
Pencereler, mac, linux ve mobil aygıtlar gibi farklı platformları desteklemek için hangi teknolojilere ihtiyacınız var?
Hangi etkili senkronizasyon algoritmalarını kullanırsınız?
Ben naif mimari/çözüm olacaktır biliyorum:
bulut depolama için bir ağ araması yapma ve senkronize klasör ağaç yapısını (sadece meta veri bilgi) olsun.
- yerel senkronizasyon klasör ağacı yapısını (Sana dosya sistemi monitör için lsyncd gibi bir şey kullanmak istiyorsunuz sanırım?)
Önceki eşitleme klasör yapısını Al inşa etmek istemci üzerinde bir dosya sistemi monitörü var senkron. Artık sizde , istemcideki 3 klasör ağacı yapısına sahipsiniz. Bu 3 ağaçları kullanarak yerel klasörde yapılması gerekenleri yapabilir ve sunucudaki uzak klasörde yapılması gerekir. Örneğin, uygulamaya özel bir şekilde önceden belirlenmiş kurallar kullanarak, düzenleme, çakışma çözünürlüğü, vb. Ekleyin.
Bu mimari yeterli olabilir ama şeytan ayrıntıdadır. Sync klasör ağacı çok büyükse (çok geniş ve çok derin). Açıkça, farkları belirlemek için verimli bir algoritma gerekli olacaktır. Ya ağ bağlantısı kesildiyse ve tüm ağacı düzgün bir şekilde almadın ya da göndermediysen? Ayrıca, ağ yükünü azaltmak için sadece dosya diffs göndererek, vs ..
Bunlar için tasarladığım şeyler olduğunun farkındayım ama sorum bu mimarinin yeterli olup olmadığını ve eğer zamanlarımın ayrıntılarını geçirmem gerekirse? Nasıl dropbox tasarlanmış ve hangi teknolojilerin ve algoritmalar onlar büyük klasör yapıları ve veri boyutu eşzamanlı böylece verimli kılmak için kullanabilir yapacak? Böyle bir şey tasarlamaya danışabilirsiniz herhangi kaynaklar/kitap var mıdır?
Şimdiden teşekkürler.