Ich habe so gut wie keine Erfahrung im Umgang mit Websites mit hohem Transaktionsvolumen und bin kürzlich auf diese interessante Frage gestoßen. Ich möchte wissen, wo die Engpässe in einer Java-Webanwendung bei hoher Last (Tausende von Anfragen pro Sekunde) auftreten. Wenn mir jemand einen allgemeinen Ansatz für die folgende Frage geben könnte, wäre das großartig!
Das Einzige, was mir eingefallen ist, ist die Verwendung von Memcached zum Zwischenspeichern der Datenbankabfragen, aber ich weiß nicht, wie ich die Zeit berechnen kann, die jede Anfrage benötigt, und wie viele Anfragen pro Sekunde das System daher bewältigen könnte.
Frage: Anwendungen im Internet müssen so konzipiert sein, dass sie ein hohes Transaktionsvolumen verarbeiten können. Beschreiben Sie einen Entwurf für ein System, das durchschnittlich 30.000 HTTP-Anfragen pro Sekunde verarbeiten muss. Für jede Anfrage muss das System eine Suche in einem Wörterbuch mit 50 Millionen Wörtern durchführen, wobei ein Schlüsselwort verwendet wird, das über den URL-Abfrage-String eingegeben wird. Jede Antwort besteht aus einem String, der die Definition des Wortes enthält (100 Bytes oder weniger).
Beschreiben Sie die Hauptbestandteile des Systems, und notieren Sie, welche Bestandteile und welche Komponenten auf Anwendungen Dritter zurückgreifen könnten. Geben Sie für jede Komponente eine Schätzung der Hardware an. Bitte beachten Sie, dass der Entwurf maximale Leistung bei minimalen Hardware-/Software-Lizenzkosten beinhalten sollte.
Dokumentieren Sie die Gründe, die zu den Schätzungen geführt haben.
Beschreiben Sie, wie sich der Entwurf ändern würde, wenn die Definitionen jeweils 10 Kilobyte groß wären.