Heim  >  Artikel  >  Java  >  So lösen Sie hohe Parallelität in Java

So lösen Sie hohe Parallelität in Java

(*-*)浩
(*-*)浩Original
2019-05-21 16:09:1112559Durchsuche

Java-Methoden zur Lösung hoher Parallelität: 2. Statisches HTML; 4. Datenbank-Cluster; 7. CDN-Beschleunigungstechnologie; .

So lösen Sie hohe Parallelität in Java

Hohe Parallelität war schon immer ein Problem, mit dem wir in Java zu kämpfen haben. Wie kann man es also lösen? Hier sind einige Methoden als Referenz.

(Empfohlenes Tutorial: Java-Kurs )

Java-Methode zur Lösung hoher Parallelität:

1 Beginnen Sie am grundlegendsten Punkt, optimieren Sie den von uns geschriebenen Code und reduzieren Sie unnötige Ressourcenverschwendung.

a. Vermeiden Sie die häufige Verwendung neuer Objekte. Für Klassen, die nur eine Instanz für die gesamte Anwendung benötigen, können wir den Singleton-Modus verwenden. Verwenden Sie für String-Verbindungsvorgänge StringBuffer oder StringBuilder, auf die über statische Methoden für Toolklassen zugegriffen werden kann.

b. Vermeiden Sie die Verwendung falscher Methoden und versuchen Sie, Instanzen nicht für die bedingte Beurteilung zu verwenden. Verwenden Sie effiziente Klassen in Java, z. B. ArrayList, die eine bessere Leistung als Vector bieten.

2. HTML-Statik

Wir greifen über eine Linkadresse zu, das entsprechende Modul des Servers verarbeitet die Anfrage und geht zur entsprechenden JSP-Seite . Generieren Sie schließlich die gewünschten Daten. Wenn es jedoch zig Millionen Anfragen gibt und es zu viele gleichzeitige Anfragen gibt, erhöht sich der Druck auf den Server, und im schlimmsten Fall kommt es zum Ausfall des Servers. Wie kann man diese Situation vermeiden? Wenn wir das Ergebnis der ersten Anfrage für test.do in einer HTML-Datei speichern und der Benutzer dann jedes Mal auf diese HTML-Datei zugreift, sodass kein Zugriff mehr auf den Server erforderlich ist, wäre der Druck auf den Server nicht größer reduziert?

Wie erstelle ich automatisch eine statische Seite? Wenn ein Benutzer sie besucht, wird test.html automatisch generiert und dann dem Benutzer angezeigt.

3. Bildservertrennung

Bei Webservern verbrauchen Bilder die meisten Ressourcen, daher ist es für uns notwendig, Bilder von Seiten zu trennen auf einem separaten Bildserver. Eine solche Architektur kann den Druck auf das Serversystem, das Seitenzugriffsanfragen bereitstellt, verringern und sicherstellen, dass das System nicht aufgrund von Bildproblemen abstürzt. Auf dem Bildserver können wir verschiedene Konfigurationen optimieren.

4. Caching

Der Caching-Mechanismus, dem ich speziell ausgesetzt war, ist der Caching-Mechanismus von Hibernate. Um zu vermeiden, dass jedes Mal Daten aus der Datenbank abgerufen werden, legen wir die Daten, auf die Benutzer häufig zugreifen, im Speicher ab. Selbst wenn der Cache sehr groß ist, können wir den Cache im Speicher auf der Festplatte ablegen. Darüber hinaus werden fortschrittliche verteilte Cache-Datenbanken verwendet, die die Stressresistenz des Systems erhöhen können.

5. Stapelübertragung

Bei der Arbeit an einem bestimmten Projekt wurden zu viele Parameter auf einmal übertragen und die Datenbank gab an, dass die maximale Anzahl von Parametern, die möglich waren, überschritten wurde 30.000 Datensätze wurden auf einmal übertragen, zu diesem Zeitpunkt gab es 50.000 Datensätze. Wie kann man sie also übertragen? Wenn der Aufzug nicht so viele Personen gleichzeitig aufnehmen kann, wird ein Übergewichtsfehler gemeldet, sodass die Personen gruppenweise nach oben geschickt werden.

Ein anderes Mal im Prüfungssystem würde sich der Druck auf die Datenbank erhöhen, wenn sich so viele Prüflinge gleichzeitig an der Datenbank beteiligen würden. Die damals verwendete Methode war die Verwendung von Ajax Asynchrone Übertragung ohne Wartezeit. Wenn der Kandidat auf die Schaltfläche „Senden“ klickt, werden die Antworten des Kandidaten automatisch übermittelt. Dadurch wird auch vermieden, dass die Fragen, die der Kandidat zuvor beantwortet hat, bei einem plötzlichen Stromausfall verloren gehen.

6. Datenbankcluster

Bei komplexen Anwendungen und einer großen Anzahl von Benutzern, die darauf zugreifen, wird ein Datensatz bald nicht mehr in der Lage sein, den Bedarf zu decken, so wir Sie müssen einen Datenbankcluster oder einen Bibliothekstabellen-Hash verwenden.

Wir installieren Geschäfts- und Anwendungs- oder Funktionsmodule in der Anwendung, um die Daten zu trennen. Verschiedene Module entsprechen verschiedenen Datenbanken oder Tabellen und verteilen dann eine bestimmte Seite oder Funktion gemäß einer bestimmten Strategie in kleinere Datenbanken.

7. DB-Optimierung

a. Beim Entwerfen der Datenbank müssen wir die spätere Wartung berücksichtigen. Die drei Paradigmen der Datenbank sind die Prinzipien, denen wir beim Entwerfen folgen sollten Datenbank.

b. Indexerstellung: Wenn eine Tabelle häufig abgefragt und selten für Ergänzungen und Änderungen verwendet wird, können wir einen Index für diese Tabelle erstellen, da unsere Die Wartung des Index übersteigt die Effizienz, die der Index uns bringt, bei weitem.

c. Die Typauswahl der Tabellenfelder sollte angemessen die Länge und den Typ der Felder usw. umfassen. Die Auswahl sollte auf den tatsächlich gespeicherten Daten basieren, da sie sonst beeinträchtigt wird Effizienz.

d. Fremdschlüssel sollten mit Vorsicht verwendet werden, da der Primärschlüssel diese Tabelle darstellt und der Fremdschlüssel eine Gruppe von Tabellen darstellt, die wir beim Löschen, Ändern usw. verknüpfen müssen .

e. Bei Datenbankoperationen

Versuchen Sie, PrepareStatement und weniger Anweisungen zu verwenden, da PrepareStatement vorkompiliert ist.

Die Verbindung ist auf readOnly eingestellt und ist eine Verbindung zur Bibliothek. Wir können sie einfach verwenden.

Mithilfe des Verbindungspools können wir die Standardanzahl der Verbindungen in der Datenbank ändern.

8. Lastausgleich

Load Balancing wird eine High-End-Lösung für große Websites sein, um Zugriffe mit hoher Auslastung und eine große Anzahl gleichzeitiger Anfragen zu bewältigen.

Lastausgleichstechnologie wird seit vielen Jahren entwickelt und es stehen viele professionelle Dienstleister und Produkte zur Auswahl. Ich persönlich bin auf einige Lösungen gestoßen, von denen zwei als Referenz dienen können.

(1) Hardware-Layer-4-Switching

Layer-4-Switching verwendet die Header-Informationen von Layer-3- und Layer-4-Informationspaketen, um den Geschäftsfluss entsprechend dem Anwendungsintervall zu identifizieren und das gesamte Intervallsegment umzuwandeln Geschäftsabläufe werden zur Verarbeitung den entsprechenden Anwendungsservern zugewiesen.

Die Layer-4-Switching-Funktion ist wie eine virtuelle IP, die auf den physischen Server verweist. Die von ihm übertragenen Dienste gehorchen einer Vielzahl von Protokollen, darunter HTTP, FTP, NFS, Telnet oder anderen Protokollen. Diese Dienste erfordern komplexe Lastausgleichsalgorithmen auf Basis physischer Server. In der IP-Welt wird der Diensttyp durch die TCP- oder UDP-Portadresse des Terminals bestimmt. Beim Layer-4-Switching wird der Anwendungsbereich durch die Quell- und Terminal-IP-Adressen, TCP- und UDP-Ports bestimmt.

Im Bereich der Hardware-Vierschicht-Switching-Produkte stehen einige bekannte Produkte zur Auswahl, wie z. B. Alteon, F5 usw. Diese Produkte sind teuer, aber ihr Geld wert und können sie bieten Sehr hervorragende Leistung und sehr flexible Managementfähigkeit. „Yahoo China“ hatte ursprünglich fast 2.000 Server, nutzte dafür aber nur drei oder vier Alteons.

(2), Software-Vierschicht-Switching

Nachdem jeder das Prinzip der Hardware-Vierschicht-Umschaltung kennt, entstand eine solche Lösung Das Prinzip der Lösungsimplementierung ist dasselbe, die Leistung ist jedoch etwas schlechter. Es ist jedoch immer noch einfach, einem gewissen Druck standzuhalten. Einige Leute sagen, dass die Software-Implementierungsmethode tatsächlich flexibler ist und die Verarbeitungsleistung vollständig von der Vertrautheit Ihrer Konfiguration abhängt.

Wir können das häufig verwendete LVS unter Linux verwenden, um das vierschichtige Umschalten von Software zu lösen. LVS ist ein Linux Virtual Server. Es bietet eine Echtzeit-Katastrophenreaktionslösung, die die Robustheit verbessert des Systems und bietet außerdem flexible virtuelle VIP-Konfigurations- und Verwaltungsfunktionen, sodass mehrere Anwendungsanforderungen gleichzeitig erfüllt werden können, was für verteilte Systeme unerlässlich ist.

Eine typische Lastausgleichsstrategie besteht darin, einen Squid-Cluster basierend auf Software- oder Hardware-Vierschicht-Switching aufzubauen. Diese Idee wird von vielen großen Websites, einschließlich Suchmaschinen, übernommen. Diese Architektur ist kostengünstig, hochleistungsfähig und Aufgrund der starken Skalierbarkeit ist es jederzeit sehr einfach, Knoten zur Architektur hinzuzufügen oder zu entfernen.

Bei großen Websites kann jede der oben genannten Methoden gleichzeitig verwendet werden. Die Einführung hier ist relativ einfach. Viele Details im spezifischen Implementierungsprozess erfordern, dass sich jeder nach und nach vertraut macht. Manchmal kann eine kleine Squid-Parameter- oder Apache-Parametereinstellung einen großen Einfluss auf die Systemleistung haben.

9. Spiegelung

Spiegelung ist eine Methode, die häufig von großen Websites verwendet wird, um die Leistung und Datensicherheit zu verbessern und das Problem verschiedener Netzwerkzugangsanbieter und geografischer Regionen zu lösen Der Unterschied in den Benutzerzugriffsgeschwindigkeiten, wie z. B. der Unterschied zwischen ChinaNet und EduNet, hat viele Websites dazu veranlasst, Spiegelseiten innerhalb des Bildungsnetzwerks zu erstellen, und die Daten werden regelmäßig oder in Echtzeit aktualisiert. Was die detaillierte Technologie der Spiegelung angeht, werde ich hier nicht zu sehr ins Detail gehen. Es stehen viele professionelle Standardlösungsarchitekturen und -produkte zur Auswahl. Es gibt auch kostengünstige Möglichkeiten, dies über Software wie rsync und andere Tools unter Linux zu implementieren.

Neueste: CDN-Beschleunigungstechnologie

Was ist CDN?

Der vollständige Name von CDN ist Content Distribution Network. Sein Zweck besteht darin, dem bestehenden Internet eine neue Ebene der Netzwerkarchitektur hinzuzufügen, um den Inhalt der Website an dem Netzwerkrand zu veröffentlichen, der dem Benutzer am nächsten liegt, sodass der Benutzer die erforderlichen Inhalte in der Nähe erhalten und die Reaktionsgeschwindigkeit verbessern kann Zugriff des Benutzers auf die Website.

CDN unterscheidet sich von Spiegelung, weil es intelligenter als Spiegelung ist, oder Sie können diese Metapher verwenden: CDN = intelligentere Spiegelung + Caching + Verkehrsumleitung. Daher kann CDN die Effizienz des Informationsflusses im Internetnetzwerk erheblich verbessern. Technisch werden wir die Probleme, die durch geringe Netzwerkbandbreite, große Benutzerbesuche und ungleichmäßige Verteilung der Verkaufsstellen verursacht werden, umfassend lösen und die Reaktionsgeschwindigkeit beim Zugriff der Benutzer auf die Website verbessern.

Merkmale des CDN-Typs:

Die CDN-Implementierung ist in drei Kategorien unterteilt: Spiegelung, Caching und Standleitungen.

Mirror Site ist die gebräuchlichste Site, die die direkte Veröffentlichung von Inhalten ermöglicht und sich für die statische und quasi-dynamische Datensynchronisierung eignet. Allerdings sind die Kosten für die Anschaffung und Wartung neuer Server relativ hoch, Spiegelserver müssen in verschiedenen Regionen eingerichtet werden und professionelle Techniker müssen für die Verwaltung und Wartung eingesetzt werden. Bei großen Websites steigen auch die Bandbreitenkosten für Updates deutlich an.

Cache, geringere Kosten, geeignet für statische Inhalte. Internetstatistiken zeigen, dass mehr als 80 % der Benutzer häufig auf 20 % des Website-Inhalts zugreifen. Nach dieser Regel kann der Cache-Server die meisten statischen Anfragen der Kunden verarbeiten, während der ursprüngliche Server nur etwa 20 % der ununterbrochenen Anfragen verarbeiten muss Caching-Anfragen und dynamische Anfragen beschleunigen die Antwortzeit von Client-Anfragen erheblich und reduzieren die Belastung des ursprünglichen Servers.

CDN-Dienste platzieren Cache-Server im Allgemeinen an wichtigen Knotenpunkten im ganzen Land.

Über eine dedizierte Leitung können Benutzer direkt auf Datenquellen zugreifen und eine dynamische Datensynchronisierung erreichen.

Verwandte Lernempfehlungen: Java Basic Tutorial

Das obige ist der detaillierte Inhalt vonSo lösen Sie hohe Parallelität in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn