En iyi çoklu ortam sunucularını yönetmek için bir yol, ve aralarında dosya tahsisleri nedir?

5 Cevap php

Ben bant genişliği 2gbit ile yanan bir dosya ana web sitesi thats var, bu yüzden dosyaları saklamak için ikincil medya sunucular ekleyerek başlamak gerekir. Ne dosyaları büyük miktarda, bir çoklu sunucu kurulumu yönetmek için en iyi yol olacağını? Tercihen sadece php.

Şu anda, sadece dosyaların 100GB civarında olması ... bu yüzden bir 2 sunucu, aynaya aralarındaki tüm içeriği alabilir, ve daha sonra yuvarlak robin trafik 50/50, 33/33/33, vb Ama toplam miktarın kez dosyaları tek bir sunucu, bu alışkanlık işin kapasitesinin ötesinde büyür.

Ben fikir, her sunucuda bıraktı boş alan tutarlar ile DB saklanan ortam sunucularının bir listesi var oldu. Bir dosya yüklendikten sonra, php dosya aslında yüklenir hangi sunucu seçin ve sunucular arasında eşit tüm dosyaları yaymak olacaktır.

Bazı daha fazla giriş / ilham almak için umuyordum.

Cant Amazon gibi herhangi bir 3. parti servislerini kullanabilirsiniz. Dosyaları birkaç bayt bir gigabyte değişir.

Teşekkürler

5 Cevap

Eğer dediğiniz gibi sizin kadar veri transferi yapıyor iseniz, o size oldukça hızla büyüyor yapıyorsun ne olursa olsun gibi görünüyor.

Bu sağlayıcı barındırma başvurun ve iSCSI, NAS, ya da diğer yollarla paylaşımlı depolama çözümleri her türlü teklif olmadığını görmek için ise değer olabilir. İdeal saklama bunu her şeyi saklamak için yeterince büyük işe başlamak olmaz, ama aynı zamanda dinamik ihtiyaçlarının ötesinde büyümek mümkün olacaktır. Ben hosting sağlayıcısı böyle bir çözüm sunar biliyorum.

Onlar yoksa, böyle bir hizmet sunuyor, veya (raf bileşenleri ve FreeNAS veya Openfiler gibi yazılımların kapalı ucuza inşa edilebilir) Kendi depolama sunucusu yüklemek izin verecek ya o yere sunucuları colocating düşünebilirsiniz.

Eğer merkezi bir depolama platformu var, daha sonra aynı merkezi depolama havuzu erişen tüm ederken, kalpleri içerik web sunucuları eklemek ve yüküne dayalı onları dengelemek yük olabilir.

Eğer çaba eğer sadece bu bunu yapmak için doğru yol, size gelecekte çok daha fazla yedeklilik ve genişleme sunacak şu anda büyüyor hızla büyümeye devam ediyor.

Diğer çözüm yolları nerede, saklanan ne bir veritabanı deposu kullanılarak sunulan, ancak kat içine ekstra bir karmaşıklık katmanı ekler değil sadece, ama ziyaretçi ve veri arasında işlenmesi bir ekstra katman erişmek istedikleri.

Eğer bir sabit disk kayıp ise Ne, 1/3 veya tüm verilerin 1/2 kaybetmek mi?

Ağır IO statik içeriği işletim sistemi ve uygulama verilerinin geri kalanı gibi aynı iğ olmalıdır?

Eğer deneyebilirsiniz MogileFS. Bu dağıtılmış bir dosya sistemidir. PHP için iyi bir API var. Sen kategoriler oluşturmak ve bu kategorideki bir dosya yükleyebilirsiniz. Her kategori için bunu nasıl dağıtılacağını birçok sunucu üzerinde tanımlayabilirsiniz. Eğer rastgele bir düğüme o dosyaya bir URL almak için API kullanabilirsiniz.

Yapabileceğiniz en iyi şey terazi depolama çeşit içine dosyaları almak gerçekten. Dosyaları yerel olarak saklanması sadece iyi bir nedenle (onlar hassas, özel, vb vardır) ile yapılmalıdır

En iyi bahis bulutun içine içerik taşımaktır. MoSSo en CloudFiles veya Amazon'un S3 hem dosyaların neredeyse sonsuz miktarda saklamak için izin verir. Tüm içerik bir API aracılığıyla sonra erişilebilir. Eğer isterseniz, o zaman kolay arama için meta-veri izlemek ve hizmet dosyalarının gerçek depolama halledeyim MySQL kullanabilirsiniz.

ben kendi fikrin kötü biri değil bence. sunucuların bir demet almak ve her dosya deposu sunucusu (ler) için üzerinde bulunuyor. yeni dosyalar yüklenir ise, * ilk en-free-space kullanın. Her sunucu (yerine ana sunucu üzerinden boru) o kendi teslim işler.

pros:

  • Tek bir dosya için birden çok sunucu kullanmak. örneğin cutekitten.jpg için: filepath="server1\cutekitten.jpg;server2\cutekitten.jpg", ve sonra sunucu yüküne bağlı olarak sunucu seçmek (ya da rastgele, ya da alternatif ...)

  • if you're careful you may be able to move around files automatically depending on the current load. so if your cute-kitten image gets reddited/slashdotted hard, move it to the server with the lowest load and update the entry.
    you could do this with a cron-job. just log the downloads for the last xx minutes. try some formular like (downloads-per-minute*filesize*(product of serverloads)) for weighting. pick tresholds for increasing/decreasing the number of servers those files are distributed to.

  • Eğer yeni bir sunucu eklerseniz, (sadece sunucu havuzuna adresini ekleyin) relativley ağrısız

cons:

  • homebrew çözümler her zaman risklidir

  • Lütfen yük dağılımı algoritması iyi test edilmelidir, aksi takdirde kötü şeyler (her şey her yerde yansıtılmış) olabilirdi

  • sürekli dengeleme için etrafında hareketli dosyaları ek sunucu yük ekler

* ya da karışık ağırlık algoritma kullanın: free-space, sunucu yükü, dosya popülerlik

Yasal Uyarı: Kendimi sadece tahmin, durum olmamıştı.

Apache Hadoop parçasıdır HDF'ler, düşünün. Bu PHP ile entegre olacak, ancak ikinci bir uygulamayı kurduktan olacak. Bu aynı zamanda sunucular arasında dengeleme ve dosya alanı kullanımı bir sunucunun yeteneğini aştığında şeyleri ele tüm noktaları çözecektir. Ama, PHP tamamen değil, ama ben yine de "saf" derken ne demek istediğini sanmıyorum.

O fikri için http://hadoop.apache.org/core/docs/current/hdfs_design.html bakın. Onlar büyük dosyaları, çok sayıda dosya, çoğaltma, işleme nasıl fikrine kapak