2011-03-13 34 views
7

Bir bulut taban senkronizasyon çözümü (Dropbox gibi bir şey) bina düşünüyorum:bulut tabanlı senkronizasyon mimarisi

  1. Ne olur gibi sağlam mimari görünüm?

  2. Pencereler, mac, linux ve mobil aygıtlar gibi farklı platformları desteklemek için hangi teknolojilere ihtiyacınız var?

  3. Hangi etkili senkronizasyon algoritmalarını kullanırsınız?

Ben naif mimari/çözüm olacaktır biliyorum:

  1. bulut depolama için bir ağ araması yapma ve senkronize klasör ağaç yapısını (sadece meta veri bilgi) olsun.

  2. 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?)

  3. Ö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.

cevap

1

onlar Dropbox API tasarlanmış konusunda fikir edinmek için Dropbox API değerlendirmek olacaktır başlamak için iyi bir yer. Bu büyük olasılıkla teknikler çözümü uyarlanabilir getirebilme konusundaki düşüncelerini sağlayacaktır. herhangi bir senkronizasyon çözeltisi gibi ayrıntılar önemlidir.

-bill