it-swarm.com.de

Warum verwenden große Sites mehrere Server anstelle eines Servers mit besseren Spezifikationen?

Ich habe gelesen, dass Stack Overflow 10 oder mehr Server verwendet, um die Stack Overflow-Site zu bedienen. Verschiedene Server haben unterschiedliche Funktionen, z. B. Reverse Proxy, Datenbankserver oder HTTP-Server.

Ich habe einen leistungsstarken Standalone-Einzelserver mit folgenden Spezifikationen gesehen:

  • 2 x Xeon E5-2630v2 bei 2,60 GHz, insgesamt 12 Kerne, 24 Threads; 30 MB
  • 64 GB ECC-Reg. bis zu 768 GB DDR3 bei 1600 MHz
  • 4 x 120 GB Intel 520/530 Series (80.000 zufällige IOPS, ~ 550 MB/s)
  • HP iLo4 Advanced mit dediziertem Ethernet-Management-Port.

Verwenden Sie einen einzelnen Server mit höheren Spezifikationen wie 768 GB RAM, 20 TB + Festplatte, 4+ x Xeon. Was sind die Vorteile der Verwendung vieler Server oder die Nachteile der Verwendung eines einzelnen hochspezifizierten Servers?

40
AMB

Ein einzelner leistungsstarker Server kann nur bis jetzt aktualisiert werden. Sobald der leistungsstärkste Server verfügbar ist, kann Ihre Site nicht größer werden, ohne ihn auf mehrere Server aufzuteilen oder effizienter zu gestalten.

Es gibt auch den Kostenfaktor. Ein einziger Server, der überaus leistungsstark ist, kann zehnmal so viel kosten wie zwei Server, die halb so leistungsstark sind. Sie möchten in der Lage sein, Ihre Hardware zum günstigsten Preis zu kaufen und nicht an einen höheren Preis gebunden zu sein, da dies das einzige ist, was funktioniert.

Verfügbarkeit und Zuverlässigkeit spielen ebenfalls eine Rolle. Bei zwei oder mehr Servern kann einer ausfallen oder für Wartungszwecke vom Netz genommen werden, und die Site kann in Betrieb bleiben. Sie können das nicht mit einem einzelnen Server tun.

Die meisten großen Websites verwenden Load Balancer und mehrere Server. Ich habe für TripAdvisor gearbeitet. Sie veröffentlichten einen tollen Artikel über die TripAdvisor-Architektur und wie sie es mit mehreren Servern hoch skalierbar machen.

Es ist möglich , einen erweiterten Dienst auf einem einzelnen Server auszuführen. Ein mir bekanntes Beispiel ist Mailinator. Der Autor veröffentlichte einen Artikel über die Architektur von Mailinator . Er konzentriert sich darauf, seinen Code effizienter zu gestalten, anstatt neue Server zu kaufen. Dies ist letztendlich eine Einschränkung, die die Funktionsweise seines Dienstes bestimmt. E-Mails werden nur wenige Stunden aufbewahrt, bevor sie vom einzelnen Computer gelöscht werden, um Platz für weitere zu schaffen.

Das Aktualisieren eines einzelnen Servers wird als vertikale Skalierung bezeichnet. Das Hinzufügen weiterer Server wird als horizontales Skalieren bezeichnet. Weitere Informationen zu diesem Thema finden Sie in den folgenden Artikeln, in denen die beiden Elemente verglichen werden:

57

Vom Konteradmiral Grace Hopper:

Über den Bau größerer Computer: "In Pionierzeiten verwendeten sie Ochsen zum Ziehen, und wenn ein Ochse keinen Stamm rühren konnte, versuchten sie nicht, einen größeren Ochsen zu züchten. Wir sollten nicht versuchen, größere Computer zu bauen, aber für mehr Computersysteme. "

Quelle

31
もしもし

Stephen erklärt die wichtigsten Überlegungen, die bei der Entscheidung für eine Systemarchitektur zu treffen sind: den Kompromiss zwischen vertikaler und horizontaler Skalierung. Ich werde ein paar andere Überlegungen hinzufügen:

  • Trennung von Bedenken: Sie erwähnen mehrere radikal unterschiedliche Systeme: Reverse-Proxies, DB, Content-Server usw. Aus Wartungs- und Sicherheitssicht ist es eindeutig vorteilhaft, diese Verantwortlichkeiten auf verschiedene Systeme zu verteilen, damit sie ein anderes Betriebssystem (Version) ausführen können. Kann bei Bedarf separat aktualisiert werden und hat keine Auswirkungen auf andere Dienste, wenn diese gefährdet sind.
  • Content Delivery: Dies ist das ultimative Ziel eines Webservers und eignet sich gut für ein verbreitetes Modell. Systeme können geografisch dupliziert und verteilt werden, sodass die Latenz von Fernverbindungen minimiert wird. Es ermöglicht auch Redundanz . Große Websites verwenden Load Balancer (noch eine Reihe von Servern!), Um ein automatisches Failover zu ermöglichen, damit der Dienst jederzeit verfügbar ist.

Tatsächlich gibt es eine ganze Serverklasse, die die vertikale Skalierung auf eine andere Ebene bringt: Mainframes. Sie haben eine Vielzahl von Vorteilen (Geschwindigkeit, Zuverlässigkeit) und Nachteilen (Kosten), werden jedoch im Großen und Ganzen in der Regel verwendet, wenn bei der von uns als bezeichneten Transaktionsverarbeitung enorme Datenmengen über die Eingabe-Ausgabe-Verarbeitung verarbeitet werden müssen (denken Sie an Kreditkartenkäufe, Bank-, Wahl- und Volkszählungsdaten). Banken bedienen beispielsweise Websites von vertikal skalierten Webservern, während das Back-End Transaktionen über den Mainframe verarbeitet.

Interessanterweise haben sich Unternehmen wie Paypal und Visa vom Mainframe zu geclusterten Systemen mit Tausenden von horizontal skalierten Systemen entwickelt. In der sich schnell entwickelnden digitalen Welt treffen sogar Großrechner auf die horizontale Skalierungsgrenze:

"Bei all den Verfügbarkeits- und Leistungsanforderungen konnten wir Zahlungen nicht auf Großrechnern verarbeiten.

Quelle: Adam Banks, in ComputerWorldUK

10
Lilienthal
  • Größenbeschränkung. Wir möchten vorgeben, dass eine einzelne Box mit mehreren Prozessoren, Speicherchips und Festplatten einheitlich ist. Dies ist nicht ganz richtig, aber es ist richtig genug, wenn Ihre Zahlen nicht zu groß werden. Es gibt technische Grenzen für Wärme, Energie, Nähe usw., was bedeutet, dass die Größe eines einzelnen Servers praktisch immer begrenzt ist.

  • Skalierbarkeit - Es gibt einen großen Unterschied zwischen einem Einzelserversystem mit gemeinsam genutztem Speicher für IPC und einem Multiserversystem, das Netzwerke oder Cluster verwendet. Der Unterschied zwischen zwei Servern und 200 ist jedoch erheblich geringer. Wenn Sie ein skalierbares System erstellt haben, können Sie es VIEL größer skalieren, bevor ein Problem auftritt. Wenn dies der Fall ist, ist eigentlich kein großer einzelner Server erforderlich an erster Stelle.

  • Ausfallsicherheit - Ein Server ist ein Ort, den ein Administrator möglicherweise "oops". Oder es gibt ein physikalisches Problem, das bedeutet, dass die Wartung dieses ganzen Zinnstücks unterbrochen wird. (Im Datenzentrum ist Wasser ausgetreten, jemand kracht gegen ein Gestell und stößt es um, so etwas). Mehrere Server können innerhalb eines Rechenzentrums oder besser geografisch verteilt sein. Wenn Sie Ihre App bereits vertreiben, ist die Skalierung auf "mittelgroßen" Computern fast immer billiger als die gleiche Menge an CPU/Arbeitsspeicher/E/A auf einer kleineren Anzahl größerer Computer.

  • Updates - Wenn ich einen Server patche, kann dies einen Dienst instabil machen, einen Neustart erfordern oder auf andere Weise Ausfallzeiten verursachen. Wenn ich 4 Server habe, auf denen dasselbe ausgeführt wird, kann ich einen für eine Weile außer Betrieb setzen, um dies zu tun. Und lassen Sie es außer Betrieb, wenn der Patch-/Update-Zyklus schief geht.

8
Sobrique

Nehmen wir das Problem im kleinen Maßstab. Ein winziges Büro mit einem Server, auf dem Mail, ActiveDirectory, Dateifreigabe und die Website des Unternehmens ausgeführt werden.

Hacker treffen es und Sie müssen neu starten, weil IIS durcheinander ist. Oder Exchange benötigt ein Update und einen Neustart. Oder Active Directory wurde beschädigt.

Jedes dieser isolierten "One Service Is Down" -Probleme wirkt sich auf den gesamten Server aus, sodass sich die Freigabe auf diesem Server auf den gesamten Server auswirkt, da ein Neustart oder etwas anderes erforderlich ist.

Sobald ein echter IT-Mann auftaucht und diesen Server sieht, wird er empfehlen, ihn in separate Server aufzuteilen (und einen Backup-Domänencontrollerserver zu haben).

Es ist das alte Sprichwort von "nicht alle Eier in einen Korb legen"

Jetzt wird diese Philosophie auf Webserver angewendet. Wenn ich nur einen einzigen Webserver habe und meine Web-App (die neue MyFaceLink.com) veröffentliche und diese sehr beliebt wird, treten neue Probleme auf. Ich kann die Site nicht ausschalten, um Wartungsarbeiten durchzuführen, während Benutzer darauf sind. Und wenn es abstürzt oder ich zu viele User bekomme, bin ich abgespritzt. Selbst der weltweit größte einzelne Server wird von 1 Milliarde FB-Konvertern überfordert sein.

Aus dem gleichen Grund kommt der Lastenausgleich ins Spiel. Verteilen Sie die Site auf 3 Server, und wenn einer ausfällt, übernehmen die restlichen 2 die Kapazität. Wenn ich Patches machen muss, mache ich nur einen nach dem anderen und niemand merkt es.

Im einfachsten Fall geht es nicht um den Preis des Megaservers oder darum, ob er die Last wirklich bewältigen kann (obwohl dies möglich ist). Es geht um Single Point of Failure. Sobald das Geschäft ausgelastet ist und 5 Benutzer rund um die Uhr und nicht mehr 8-5 arbeiten, sind Ausfallzeiten nicht mehr akzeptabel. Geplante Ausfälle sind schwerer einzuplanen. Sie verteilen also die Last.

7
Ken Forslund

Wenn versucht wird, dass eine Maschine die Arbeit von zwei erledigt, müssen einige Teile der Maschine größer sein, aber mit der gleichen Geschwindigkeit laufen, einige können die gleiche Größe behalten, müssen aber schneller laufen, und einige müssen größer sein nd schneller. Inwieweit es sinnvoll ist, die Rollen kleinerer Maschinen in eine größere zu kombinieren oder die Rollen größerer Maschinen in kleinere zu unterteilen, hängt zu einem großen Teil davon ab, welche Art von Skalierung für die teuersten Maschinenteile gelten würde. Wenn die Workloads zu vieler Maschinen zu einem riesigen Koloss zusammengefasst werden, werden die Kosten von Dingen dominiert, die größer werden müssten nd schneller, um mit erhöhten Workloads fertig zu werden. Selbst wenn die Kosten solcher Dinge in Bezug auf Geschwindigkeit und Größe linear wären, würde eine Verdoppelung der Arbeitslast die Kosten einer Maschine für deren Verarbeitung mehr als verdoppeln. Die Tatsache, dass die Geschwindigkeit über einen bestimmten Punkt hinaus ansteigt, führt zu einer (viel) höheren als der linearen Kostensteigerung und verstärkt den Effekt.

Es gibt keinen festen Punkt, an dem die Praktikabilität die Unterteilung der Arbeit erzwingt. Abhängig von der Art der auszuführenden Arbeit kommt eine Maschine, die zwei Arbeitslasten kombiniert, möglicherweise mit weniger als dem Doppelten des Arbeitsspeichers aus oder läuft mit weniger als der doppelten Geschwindigkeit. Auf der anderen Seite, je mehr Aufgaben eine Maschine zu erledigen hat, desto stärker skalieren Speicher- und Geschwindigkeitsanforderungen linear mit der Arbeitslast. Je weiter man darüber hinausgeht, desto höher sind die relativen Kosten für jede Verdoppelung der Arbeitslast.

1
supercat