Heim > Java > JavaInterview Fragen > Interviewer: Wie viel wissen Sie über hohe Parallelität? Ich: emmm...

Interviewer: Wie viel wissen Sie über hohe Parallelität? Ich: emmm...

Freigeben: 2023-07-26 16:07:26
nach vorne
1060 Leute haben es durchsucht

Interviewer: Wie viel wissen Sie über hohe Parallelität? Ich: emmm...

Hohe Parallelität ist eine Erfahrung, die fast jeder Programmierer haben möchte. Der Grund ist einfach: Mit zunehmendem Datenverkehr treten verschiedene technische Probleme auf, z. B. Zeitüberschreitungen bei der Schnittstellenantwort, erhöhte CPU-Last, häufiger GC, Deadlock, großer Datenspeicher usw. Diese Probleme können uns dazu veranlassen, uns kontinuierlich zu verbessern unsere technische Tiefe.

Wenn der Kandidat in früheren Vorstellungsgesprächen an einem Projekt mit hoher Parallelität gearbeitet hat, habe ich den Kandidaten normalerweise gebeten, über sein Verständnis von hoher Parallelität zu sprechen, aber nicht viele Leute können diese Frage systematisch beantworten, wahrscheinlich geteilt in die Folgende Kategorien:

1. Kein Konzept für datenbasierte Indikatoren: Sie sind sich nicht sicher, welche Art von Indikatoren Sie zur Messung von Systemen mit hoher Parallelität wählen sollen? Ich kann den Unterschied zwischen Parallelität und QPS nicht erkennen und kenne nicht einmal die Gesamtzahl der Benutzer meines Systems, die Anzahl der aktiven Benutzer, QPS und TPS während Flach- und Spitzenzeiten und andere wichtige Daten.

2. Einige Pläne wurden entworfen, aber die Details sind noch nicht vollständig erfasst: Ich kann die technischen Punkte und möglichen Nebenwirkungen des Plans nicht erklären. Wenn es beispielsweise einen Engpass bei der Leseleistung gibt, wird Caching eingeführt, aber Probleme wie Cache-Trefferrate, Hotkeys und Datenkonsistenz werden ignoriert.

3. Einseitiges Verständnis, das Design mit hoher Parallelität mit Leistungsoptimierung gleichsetzt: spricht von gleichzeitiger Programmierung, mehrstufigem Caching, Asynchronisierung und horizontaler Erweiterung, ignoriert jedoch Design mit hoher Verfügbarkeit, Service-Governance und Betrieb Wartungsgarantien.

4. Beherrschen Sie den großen Plan, aber ignorieren Sie die grundlegendsten Dinge: Kann große Ideen wie vertikale Schichtung, horizontale Partitionierung, Caching klar erklären, hat aber kein Bewusstsein für die Analyse der Datenstruktur ist vernünftig und der Algorithmus Ob er effizient ist oder nicht, ich habe nie darüber nachgedacht, Details aus den beiden grundlegendsten Dimensionen von IO und Computing zu optimieren.

In diesem Artikel möchte ich meine Erfahrung in Projekten mit hoher Parallelität zusammenfassen, um das Wissen und die praktischen Ideen, die in High-Parallelität gemeistert werden müssen, systematisch zusammenzufassen. Ich hoffe, dass es für Sie hilfreich ist. Der Inhalt gliedert sich in folgende 3 Teile:

  • Wie versteht man hohe Parallelität?
  • Was ist das Ziel des Systemdesigns mit hoher Parallelität?
  • Was sind die praktischen Lösungen für hohe Parallelität?

01 Wie ist hohe Parallelität zu verstehen?

Hohe Parallelität bedeutet großen Datenverkehr, und es müssen technische Mittel eingesetzt werden, um den Auswirkungen des Datenverkehrs zu widerstehen. Diese Mittel ähneln dem operativen Datenverkehr, sodass der Datenverkehr vom System reibungsloser verarbeitet werden kann und den Benutzern ein besseres Erlebnis geboten wird.

Zu unseren gängigen Szenarien mit hoher Parallelität gehören: Taobaos Double 11, Ticketraub während des Frühlingsfestes, heiße Neuigkeiten von Weibo Vs usw. Zusätzlich zu diesen typischen Dingen können Flash-Sale-Systeme mit Hunderttausenden Anfragen pro Sekunde, Bestellsysteme mit Dutzenden Millionen Bestellungen pro Tag, Informationsflusssysteme mit Hunderten Millionen täglichen Aktiven pro Tag usw. klassifiziert werden als hohe Parallelität.

Natürlich variiert der Grad der Parallelität bei den oben genannten Szenarien mit hoher Parallelität. Wie viel Parallelität gilt also als hohe Parallelität?

1. Man kann nicht nur auf Zahlen schauen, man muss sich konkrete Geschäftsszenarien ansehen. Es kann nicht gesagt werden, dass der Flash-Verkauf von 10-W-QPS eine hohe Parallelität aufweist, aber der Informationsfluss von 1-W-QPS weist keine hohe Parallelität auf. Das Informationsflussszenario umfasst komplexe Empfehlungsmodelle und verschiedene manuelle Strategien, und seine Geschäftslogik kann mehr als zehnmal komplexer sein als das Flash-Sale-Szenario. Daher befinden sie sich nicht in derselben Dimension und haben keine vergleichende Bedeutung.

2. Das Geschäft wird von 0 auf 1 aufgebaut. Parallelität und QPS sind nur Referenzindikatoren. Das Wichtigste ist: Wenn das Geschäftsvolumen allmählich das Zehnfache oder das Hundertfache erreicht, verwenden Sie es Wenn es um hohe Parallelität geht Verarbeitungsmethoden: Wie können Sie Ihr System weiterentwickeln und Probleme verhindern und lösen, die durch hohe Parallelität in den Dimensionen Architekturdesign, Codierungsimplementierung und sogar Produktlösungen verursacht werden? Anstatt blind die Hardware aufzurüsten und Maschinen für die horizontale Erweiterung hinzuzufügen.

Darüber hinaus sind die Geschäftsmerkmale jedes Szenarios mit hoher Parallelität völlig unterschiedlich: Es gibt Informationsflussszenarien mit mehr Lesen und weniger Schreiben und es gibt Transaktionsszenarien mit mehr Lesen und Schreiben Ist da? eine universelle technische Lösung zur Lösung verschiedener Szenarien? Was ist mit dem Problem der hohen Parallelität?

Ich denke, wir können aus den großen Ideen und den Plänen anderer lernen, aber im eigentlichen Umsetzungsprozess wird es unzählige Fallstricke im Detail geben. Da die Software- und Hardwareumgebung, der Technologie-Stack und die Produktlogik nicht vollständig konsistent sein können, führen diese außerdem zu demselben Geschäftsszenario. Selbst wenn dieselbe technische Lösung verwendet wird, treten unterschiedliche Probleme auf, und diese Fallstricke müssen auftreten nach und nach überwunden werden.

Daher werde ich mich in diesem Artikel auf Grundkenntnisse, allgemeine Ideen und effektive Erfahrungen konzentrieren, die ich geübt habe, in der Hoffnung, Ihnen ein tieferes Verständnis der hohen Parallelität zu vermitteln.

02 Was ist das Ziel des Systemdesigns mit hoher Parallelität?

Klaren Sie zunächst die Ziele des High-Parallel-Systemdesigns und besprechen Sie dann den Designplan und die praktischen Erfahrungen, um sinnvoll und zielgerichtet zu sein.

2.1 Makroziel

Hohe Parallelität bedeutet nicht nur das Streben nach hoher Leistung, was für viele Menschen ein einseitiges Verständnis ist. Aus makroökonomischer Sicht gibt es drei Ziele für das Design von Systemen mit hoher Parallelität: hohe Leistung, hohe Verfügbarkeit und hohe Skalierbarkeit.

1. Hohe Leistung:

Die Leistung spiegelt die Parallelverarbeitungsfähigkeit des Systems wider. Bei begrenzten Hardwareinvestitionen bedeutet Verbesserung Kosten. Gleichzeitig spiegelt die Leistung auch das Benutzererlebnis wider. Die Reaktionszeiten betragen 100 Millisekunden bzw. 1 Sekunde, was den Benutzern völlig unterschiedliche Gefühle vermittelt.

2. Hohe Verfügbarkeit

: gibt den Zeitpunkt an, zu dem das System normal funktionieren kann. Beim einen gibt es das ganze Jahr über keine Ausfallzeiten und keine Störungen; beim anderen kommt es hin und wieder zu Online-Unfällen und Ausfallzeiten. Benutzer werden sich definitiv für Ersteres entscheiden. Wenn das System außerdem nur eine Verfügbarkeit von 90 % erreichen kann, wird dies auch das Geschäft stark behindern.

3. Hohe Erweiterung : Zeigt die Skalierbarkeit des -Systems an, ob die Erweiterung in Spitzenverkehrszeiten in kurzer Zeit abgeschlossen werden kann und Spitzenverkehr, wie z. B. Double 11-Ereignisse, reibungsloser bewältigen kann , Scheidungen von Prominenten und andere heiße Ereignisse .

Interviewer: Wie viel wissen Sie über hohe Parallelität? Ich: emmm...

Diese drei Ziele müssen umfassend betrachtet werden, da sie miteinander verbunden sind und sich sogar gegenseitig beeinflussen.

als wie : Berücksichtigen Sie die Skalierbarkeit des Systems , Sie werden den Dienst zustandslos gestalten , Diese Art von Cluster Die designdesign gewährleistet eine hohe Skalierbarkeit und verbessert tatsächlich auch die Leistung und Benutzerfreundlichkeit des Systems.

Ein weiteres Beispiel: Um die Verfügbarkeit sicherzustellen, werden für Serviceschnittstellen normalerweise Timeout-Einstellungen festgelegt, um zu verhindern, dass eine große Anzahl von Threads langsame Anforderungen blockiert und eine Systemlawine verursacht. Im Allgemeinen nehmen wir Einstellungen basierend auf der Leistung abhängiger Dienste vor.

2.2 Mikroziele

Was sind aus Mikroperspektive die spezifischen Indikatoren zur Messung von hoher Leistung, hoher Verfügbarkeit und hoher Skalierbarkeit? Warum wurden diese Indikatoren ausgewählt?

❇ Leistungsindikatoren

Leistungsindikatoren können zur Messung aktueller Leistungsprobleme eingesetzt werden und dienen als Bewertungsgrundlage für die Leistungsoptimierung. Im Allgemeinen wird die Reaktionszeit der Schnittstelle innerhalb eines Zeitraums als Indikator verwendet.

1. Durchschnittliche Antwortzeit: Wird am häufigsten verwendet, weist jedoch offensichtliche Mängel auf und reagiert nicht empfindlich auf langsame Anfragen. Beispielsweise gibt es 10.000 Anfragen, davon sind 9.900 1 ms und 100 100 ms. Die durchschnittliche Antwortzeit hat sich zwar nur um 0,99 ms erhöht, die Antwortzeit hat sich jedoch um 100 erhöht mal.

2, TP90, TP99 und andere Quantilwerte: Sortieren Sie die Reaktionszeit von klein nach groß. Je größer der Quantilwert, desto empfindlicher ist er langsame Anfragen.

Interviewer: Wie viel wissen Sie über hohe Parallelität? Ich: emmm...

3. Durchsatz: Es ist umgekehrt proportional zur Antwortzeit. Wenn die Antwortzeit beispielsweise 1 ms beträgt, beträgt der Durchsatz 1000 Mal pro Sekunde.

Normalerweise werden bei der Festlegung von Leistungszielen sowohl der Durchsatz als auch die Antwortzeit berücksichtigt. Unter 10.000 Anfragen pro Sekunde wird beispielsweise AVG auf unter 50 ms und TP99 auf unter 100 ms gesteuert. Bei Systemen mit hoher Parallelität müssen die AVG- und TP-Quantilwerte gleichzeitig berücksichtigt werden.

Aus Sicht der Benutzererfahrung gelten 200 Millisekunden als erster Teilungspunkt, und Benutzer werden die Verzögerung nicht spüren. 1 Sekunde ist der zweite Teilungspunkt, und Benutzer werden die Verzögerung spüren, aber sie ist akzeptabel .

Daher sollte TP99 für ein gesundes System mit hoher Parallelität innerhalb von 200 Millisekunden und TP999 oder TP9999 innerhalb von 1 Sekunde gesteuert werden.

❇ VerfügbarkeitIndikator

Hohe Verfügbarkeit bedeutet, dass das System eine hohe Verfügbarkeit hat = Betriebszeit/Gesamtsystemlaufzeit, um das System zu beschreiben . Verfügbarkeit.

Interviewer: Wie viel wissen Sie über hohe Parallelität? Ich: emmm...

Für ein System mit hoher Parallelität lautet die grundlegendste Anforderung: 3 9s oder 4 9s garantieren. Der Grund ist einfach: Wenn Sie nur zwei Neunen erreichen können, bedeutet dies, dass es eine Ausfallzeit von 1 % gibt. Einige große Unternehmen haben beispielsweise oft einen Umsatz von mehr als 100 Milliarden Milliardenniveau.

❇ SkalierbarkeitIndikator

Angesichts plötzlichen Datenverkehrs ist es unmöglich, die Architektur vorübergehend zu ändern, indem Maschinen hinzugefügt werden, um die Verarbeitungsfähigkeiten des Systems linear zu verbessern.

Für Geschäftscluster oder Basiskomponenten gilt: Skalierbarkeit = Leistungsverbesserungsverhältnis / Maschinenadditionsverhältnis: Erhöhen Sie die Ressourcen um ein Vielfaches und verbessern Sie die Leistung um ein Vielfaches. Generell sollte die Expansionsfähigkeit über 70 % gehalten werden.

Aber aus der Perspektive der Gesamtarchitektur eines Systems mit hoher Parallelität besteht das Ziel der -Erweiterung nicht nur darin, den Dienst zustandslos zu gestalten, denn wenn der Datenverkehr um das Zehnfache ansteigt, steigt der Der Geschäftsdienst kann schnell um das Zehnfache erweitert werden, die Datenbank kann jedoch zu einem neuen Engpass werden.

Stateful-Storage-Dienste wie MySQL sind in der Regel technisch schwierig zu erweitern. Wenn die Architektur nicht im Voraus geplant wird (vertikale und horizontale Aufteilung), ist die Migration einer großen Datenmenge erforderlich.

Daher muss eine hohe Skalierbarkeit berücksichtigt werden: Service-Cluster, Middleware wie Datenbanken, Caches und Nachrichtenwarteschlangen, Lastausgleich, Bandbreite, abhängige Dritte usw. Wenn die Parallelität ein bestimmtes Niveau erreicht, werden alle oben genannten Faktoren berücksichtigt Könnte zu einem Engpass für die Expansion werden.


03 Was sind die praktischen Lösungen für hohe Parallelität?
Nachdem wir die drei Hauptziele des Designs mit hoher Parallelität verstanden haben, fassen wir den Plan für das Design mit hoher Parallelität systematisch zusammen und erweitern ihn aus den folgenden zwei Teilen: Zuerst fassen wir die allgemeinen Designmethoden zusammen und konzentrieren uns dann auf die hohe Parallelität Leistung, hohe Verfügbarkeit und hohe Erweiterung bieten jeweils spezifische praktische Lösungen.
3.1 Universelle Designmethode
Die universelle Designmethode geht hauptsächlich von den beiden Dimensionen vertikal und horizontal aus 」, allgemein bekannt als hohe Parallelität Verarbeitung Zwei große Herausforderungen: vertikale Expansion und horizontale Expansion.

❇Vertikale Erweiterung (Scale-up)

Ziel ist es, die Rechenleistung einer einzelnen Maschine zu verbessern, Der Plan umfasst außerdem:

1. Verbessern Sie die Hardwareleistung einer einzelnen Maschine: durch Erhöhen des Arbeitsspeichers, der CPU-Kerne, der Speicherkapazität oder durch Aufrüsten der Festplatte auf SSD und andere Hardware im Quadrat Stil Kommen Sie , um sich zu verbessern .
2. Verbessern Sie die Softwareleistung einer einzelnen Maschine: Verwenden Sie den Cache, um die Anzahl der E/As zu reduzieren, und verwenden Sie gleichzeitige oder asynchrone Methoden, um den Durchsatz zu erhöhen.
❇ Horizontale Erweiterung (Scale-out)

Da die Leistung einzelner Maschinen immer Grenzen hat, ist es letztendlich notwendig, eine horizontale Erweiterung einzuführen und die Fähigkeiten zur gleichzeitigen Verarbeitung durch Cluster-Bereitstellung weiter zu verbessern, einschließlich der folgenden zwei Richtungen:

1. Entwickeln Sie eine hierarchische Architektur: Dies ist der Fortschritt der horizontalen Erweiterung, da Systeme mit hoher Parallelität oft komplexe Geschäfte haben und die mehrschichtige Verarbeitung komplexe Probleme vereinfachen und die horizontale Erweiterung einfacher machen kann.


Interviewer: Wie viel wissen Sie über hohe Parallelität? Ich: emmm...

Das obige Bild ist die häufigste Schichtarchitektur im Internet. Natürlich wird die echte Systemarchitektur mit hoher Parallelität auf dieser Basis weiter verbessert. Beispielsweise wird eine dynamische und statische Trennung vorgenommen und CDN eingeführt. Die Reverse-Proxy-Schicht kann LVS+Nginx sein, die Web-Schicht kann ein einheitliches API-Gateway sein, die Business-Service-Schicht kann je nach vertikalem Geschäft weiter mikroserviced sein , und die Speicherschicht kann aus verschiedenen heterogenen Datenbanken bestehen.

2. Horizontale Erweiterung jeder Ebene: zustandslose horizontale Erweiterung, zustandsbehaftetes Shard-Routing. Geschäftscluster können normalerweise zustandslos gestaltet werden, während Datenbanken und Caches häufig zustandsbehaftet sind. Daher müssen Partitionsschlüssel für Speicher-Sharding konzipiert werden. Natürlich kann die Leseleistung auch durch Master-Slave-Synchronisierung und Lese-Schreib-Trennung verbessert werden.

3.2 Spezifische praktische Lösungen
Kombiniert mit meiner persönlichen Erfahrung werde ich praktische Lösungen zusammenfassen, die in den drei Aspekten hohe Leistung, hohe Verfügbarkeit und hohe Skalierbarkeit umgesetzt werden können.

❇ Leistungsstarke, praktische Lösung

1. Cluster-Bereitstellung reduziert den Druck auf eine einzelne Maschine durch Lastausgleich.

2. Mehrstufiges Caching, einschließlich der Verwendung von CDN, lokalem Caching, verteiltem Caching usw. für statische Daten sowie der Verarbeitung von Hotkeys, Cache-Penetration, Cache-Parallelität, Datenkonsistenz und anderen Problemen in Caching-Szenarien .
3. Unterdatenbank-, Tabellen- und Indexoptimierung sowie Verwendung von Suchmaschinen zur Lösung komplexer Abfrageprobleme.
4. Erwägen Sie die Verwendung von NoSQL-Datenbanken wie HBase, TiDB usw., aber das Team muss mit diesen Komponenten vertraut sein und über starke Betriebs- und Wartungsfähigkeiten verfügen.
5. Asynchron, sekundäre Prozesse asynchron verarbeiten durch Multithreading, MQ und sogar verzögerte Aufgaben.
6. Strombegrenzung Sie müssen zunächst überlegen, ob das Unternehmen eine Flussbegrenzung zulässt (z. B. sind Flash-Sale-Szenarien zulässig), einschließlich Front-End-Flussbegrenzung, Nginx-Zugriff Schichtflussbegrenzung, serverseitige Strombegrenzung.
7. Führen Sie Peak-Shaving und Valley-Filling im Verkehr durch und wickeln Sie den Verkehr über MQ ab.
8. Gleichzeitige Verarbeitung, Parallelisierung der seriellen Logik durch Multithreading.
9. Bei der Vorberechnung, z. B. beim „Erfassen von roten Umschlägen“, können Sie den Betrag für rote Umschläge im Voraus berechnen, zwischenspeichern und direkt beim Versenden roter Umschläge verwenden.
10,
Cache-Vorwärmen, durch asynchrone Aufgaben Daten im Voraus in den lokalen Cache oder verteilten Cache vorheizen .
11. Reduzieren Sie die Anzahl der E/As, wie Datenbank- und Cache-
Batch-Lesen und -Schreiben, RPC-Batch-Schnittstellenunterstützung oder eliminieren Sie RPC-Aufrufe durch redundante Daten.
12. Reduzieren Sie die Größe von Datenpaketen während der E/A, einschließlich der Verwendung einfacher Kommunikationsprotokolle, geeigneter Datenstrukturen, Entfernen redundanter Felder in Schnittstellen, Reduzieren der Größe von Cache-Schlüsseln, Komprimieren von Cache-Werten usw.
13. Optimierung der Programmlogik, z. B. Vorpositionierung der Beurteilungslogik, die mit hoher Wahrscheinlichkeit den Ausführungsprozess blockiert, Optimierung der Berechnungslogik von For-Schleifen oder Verwendung effizienterer Algorithmen.
14. Verwendung verschiedener Pooling-Technologien und Poolgrößeneinstellungen, einschließlich HTTP-Anforderungspool, Thread-Pool (berücksichtigen Sie CPU-intensiv oder IO-intensiv, um Kernparameter festzulegen), Datenbank- und Redis-Verbindungspool usw.
15. JVM-Optimierung, einschließlich der Größe der neuen und alten Generation, der Auswahl des GC-Algorithmus usw., um die GC-Frequenz und den Zeitaufwand so weit wie möglich zu reduzieren.

16. Sperren Sie die Auswahl, verwenden Sie optimistische Sperren in Szenarien, in denen mehr gelesen und weniger geschrieben wird, oder erwägen Sie die Reduzierung von Sperrkonflikten durch segmentierte Sperren.

Die obige Lösung ist nichts anderes als die Berücksichtigung aller möglichen Optimierungspunkte aus den beiden Dimensionen Computing und IO. Sie erfordert ein unterstützendes Überwachungssystem, um die aktuelle Leistung in Echtzeit zu verstehen und Sie bei der Durchführung von Leistungsengpassanalysen zu unterstützen Befolgen Sie dann 28 Prinzipien, erfassen Sie die Hauptwidersprüche und optimieren Sie sie.

❇ Praktische Hochverfügbarkeitslösungen

1 Sowohl Nginx als auch das Service-Governance-Framework unterstützen den Zugriff auf einen anderen Knoten.

2. Failover von Nicht-Peer-Knoten durch Heartbeat-Erkennung und Implementierung von Master-Slave-Switching (z. B. Sentinel-Modus oder Cluster-Modus von Redis, Master-Slave-Switching von MySQL usw.).
3. Timeout-Einstellung, Wiederholungsstrategie und idempotentes Design auf Schnittstellenebene.
4. Downgrade-Verarbeitung: Kerndienste sicherstellen, Nicht-Kerndienste opfern, Leitungsunterbrechung bei Bedarf oder wenn es ein Problem mit der Kernverbindung gibt, gibt es eine alternative Verbindung.
5. Aktuelle limitierende Verarbeitung: Fehlercodes für Anfragen, die die Verarbeitungskapazität des Systems überschreiten, direkt ablehnen oder zurückgeben.
6. Garantie der Nachrichtenzuverlässigkeit in MQ-Szenarien, einschließlich Wiederholungsmechanismus auf der Produzentenseite, Persistenz auf der Brokerseite, Bestätigungsmechanismus auf der Verbraucherseite usw.
7. Die Graustufenversion kann je nach Maschinendimension die Bereitstellung von kleinem Datenverkehr unterstützen, Systemprotokolle und Geschäftsindikatoren beobachten und dann das volle Volumen übertragen, nachdem der Betrieb stabil ist.
8. Überwachung und Alarmierung: Ein umfassendes Überwachungssystem, einschließlich der grundlegendsten Überwachung von CPU, Speicher, Festplatte und Netzwerk sowie der Überwachung von Webservern, JVM, Datenbanken, verschiedenen Middleware und der Überwachung von Geschäftsindikatoren .
9. Notfallwiederherstellungsübung: Verwenden Sie ähnlich wie beim aktuellen „Chaos Engineering“ einige destruktive Methoden auf dem System, um zu beobachten, ob lokale Ausfälle zu Verfügbarkeitsproblemen führen.

Hochverfügbarkeitslösungen werden hauptsächlich aus drei Richtungen betrachtet: Redundanz, Kompromisse sowie Systembetrieb und -wartung. Gleichzeitig müssen sie über unterstützende Pflichtmechanismen und Fehlerbehandlungsprozesse verfügen können rechtzeitig nachverfolgt werden.

❇ Hochskalierbare praktische Lösung

1. Angemessene Schichtarchitektur: Zum Beispiel die oben erwähnte häufigste Schichtarchitektur des Internets, außerdem kann sie entsprechend der Datenzugriffsschicht und weiter angepasst werden Geschäftslogikschicht Microservices sind feinkörniger geschichtet (die Leistung muss jedoch bewertet werden, da es möglicherweise einen weiteren Hop im Netzwerk gibt).

2. Aufteilung der Speicherschicht: vertikale Aufteilung nach Geschäftsdimensionen und weitere horizontale Aufteilung nach Datenmerkmalsdimensionen (Unterdatenbank und Untertabelle).
3. Teilen Sie die Geschäftsschicht auf: Am häufigsten wird sie nach Geschäftsdimensionen aufgeteilt (z. B. Warendienstleistungen, Bestelldienste usw. in E-Commerce-Szenarien). Schnittstellen und Nicht-Kernschnittstellen, und es kann auch entsprechend der Entfernung der Anforderungsquelle aufgeteilt werden (z. B. Zu C und Zu B, APP und H5).


Abschließende Worte

Hohe Parallelität ist in der Tat ein komplexes und systemisches Problem. Aufgrund des begrenzten Platzes müssen technische Punkte wie verteilte Ablaufverfolgung, vollständige Link-Stresstests und flexible Transaktionen berücksichtigt werden. Wenn die Geschäftsszenarien unterschiedlich sind, unterscheiden sich außerdem auch die Implementierungslösungen für hohe Parallelität, aber die allgemeinen Designideen und die Lösungen, die als Referenz verwendet werden können, sind grundsätzlich ähnlich.

Design mit hoher Parallelität muss auch die drei Prinzipien des Architekturdesigns einhalten: Einfachheit, Angemessenheit und Entwicklung. „Vorzeitige Optimierung ist die Wurzel allen Übels“, kann nicht von der tatsächlichen Situation des Unternehmens getrennt werden, und überdesigne nicht , Die passende Lösung ist die perfekteste.

Ich hoffe, dass dieser Artikel Ihnen ein umfassenderes Verständnis der hohen Parallelität vermitteln kann. Wenn Sie auch über Erfahrung und fundiertes Denken verfügen, aus dem Sie lernen können, hinterlassen Sie bitte eine Nachricht im Kommentarbereich zur Diskussion.

Das obige ist der detaillierte Inhalt vonInterviewer: Wie viel wissen Sie über hohe Parallelität? Ich: emmm.... Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:Java学习指南
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage