Wie kann das Hosten/Bereitstellen von Bildern skaliert werden?

Wie kann das Hosten/Bereitstellen von Bildern skaliert werden?

Ich habe diese Frage gestellt amPaketüberflussund mir wurde vorgeschlagen, es hier zu versuchen:

Ich erstelle eine Website, auf der Benutzer Fotos hochladen können, und ich würde hochgeladene Fotos auch in Miniaturansichten umwandeln.

Wenn die Website populär wird, wie kann ich sie im Voraus skalieren, sodass die Bilder (sowohl Originale als auch Miniaturansichten) auf mehreren Servern gespeichert und von dort aus bereitgestellt werden? Vielleicht ein Cluster? Gibt es Open-Source-Software, die mir dabei helfen würde?

Danke.

Antwort1

Um später gute Optionen zu haben, ist es am einfachsten, Ihre Software so zu schreiben, dass Bilder nach einer Änderung nie den gleichen Dateinamen behalten können – eine Änderung an einem Bild muss immer den Dateinamen ändern. Das bedeutet, dass Sie sehr lange Cache-Lebensdauern festlegen können, entweder über Ihre eigenen Caches oder über ein Content Delivery Network, was die Anzahl der erforderlichen Festplatten-Lesevorgänge erheblich reduziert. (Möglicherweise benötigen Sie einen Mechanismus, um eine bestimmte Datei sofort aus dem Cache oder CDN zu löschen, wenn es Umstände gibt, unter denen ein Bildhatvollständig gelöscht werden.)

Um eine horizontale Skalierung zu ermöglichen, teilen Sie die Bilder in eine große Anzahl von Gruppen (100 oder mehr) auf und stellen Sie dem Pfad zu jedem Bild die Gruppe voran, in der es sich befindet. Sie können jetzt alle Gruppen vom selben Server aus bedienen, aber zu einem späteren Zeitpunkt wird es ziemlich einfach sein, einen Lastenausgleich zu verwenden, um den Datenverkehr basierend auf der Bildgruppe auf verschiedene Server umzuleiten. Ich würde kein Cluster-Dateisystem für Bilder verwenden, da dies eine zusätzliche Komplexitätsebene hinzufügt, und es ist wahrscheinlich einfacher, einfach mehrere Server und einige Lastenausgleichsregeln zu verwenden, um die Last zu verteilen.

verwandte Informationen