Wir sprechen hier nicht von PHP, JSP oder .NET-Umgebung. Wir betrachten das Problem aus der Perspektive der Architektur. Der Vorteil der Sprache liegt eher in der Implementierung als in der Qualität. Egal für welche Sprache Sie sich entscheiden, die Architektur muss bewältigt werden.
1. Verarbeitung großer Datenmengen
Wie wir alle wissen, ist die Datenmenge bei einigen relativ kleinen Websites nicht sehr groß. Die Last selbst ist nicht sehr groß und kann durch Hinzufügen einiger weniger gelöst werden höchstens Indizes. Bei großen Websites kann die Datenmenge jeden Tag in die Millionen gehen. Bei einer schlecht gestalteten Viele-zu-Viele-Beziehung wird es in der Anfangsphase jedoch keine Probleme geben Die Anzahl der Daten wird geometrisch zunehmen. Derzeit sind die Kosten für die Auswahl und Aktualisierung einer Tabelle (ganz zu schweigen von der gemeinsamen Abfrage mehrerer Tabellen) sehr hoch.
2. Datengleichzeitigkeitsverarbeitung
In einigen Fällen haben 2.0-CTOs ein Shang-Fang-Schwert, das im Cache gespeichert ist. Bei hoher Parallelität und hoher Verarbeitungsgeschwindigkeit stellt das Caching ebenfalls ein großes Problem dar. Der Cache wird global von der gesamten Anwendung gemeinsam genutzt. Wenn wir jedoch Änderungen vornehmen und zwei oder mehr Anforderungen gleichzeitig Aktualisierungen des Caches anfordern, stirbt die Anwendung direkt ab. Zu diesem Zeitpunkt sind eine gute Strategie für die Datenparallelitätsverarbeitung und eine gute Caching-Strategie erforderlich.
Darüber hinaus gibt es das Problem eines Deadlocks in der Datenbank. In Situationen mit hoher Parallelität ist die Wahrscheinlichkeit eines Deadlocks sehr hoch.
3. Probleme bei der Dateispeicherung
Bei einigen 2.0-Sites, die das Hochladen von Dateien unterstützen, sollten wir mehr darüber nachdenken, wie Dateien gespeichert und effektiv indiziert werden sollten, wenn die Festplattenkapazität immer größer wird. Eine gängige Lösung besteht darin, Dateien nach Datum und Typ zu speichern. Wenn das Dateivolumen jedoch sehr groß ist und eine Festplatte 500 G triviale Dateien speichert, stellt die Io der Festplatte ein großes Problem bei der Wartung und Nutzung dar. Selbst wenn Ihre Bandbreite ausreicht, reagiert die Festplatte möglicherweise nicht. Wenn zu diesem Zeitpunkt auch ein Upload durchgeführt wird, wird die Festplatte schnell leer.
Vielleicht kann die Verwendung von RAID und dedizierten Speicherservern das aktuelle Problem lösen, aber es gibt immer noch ein Problem beim Zugriff von verschiedenen Orten aus. Vielleicht befindet sich unser Server in Peking, Yunnan oder Xinzang. Wie lässt sich die Zugriffsgeschwindigkeit lösen? Formel, wie sollten wir dann unseren Dateiindex und unsere Dateistruktur planen?
Wir müssen also zugeben, dass die Dateispeicherung ein sehr schwieriges Problem ist
4. Verarbeitung von Datenbeziehungen
Wir können problemlos eine Datenbank planen, die dem dritten Paradigma entspricht, das viele Viele-zu-Viele-Beziehungen enthält, und GUID auch verwenden, um INDENTIFY COLUMN zu ersetzen sind reichlich vorhanden, das dritte Paradigma ist Das erste sollte verworfen werden. Gemeinsame Abfragen mehrerer Tabellen müssen effektiv auf ein Minimum reduziert werden.
5. Datenindexproblem
Wie wir alle wissen, ist die Indizierung der günstigste und einfachste Weg, die Effizienz von Datenbankabfragen zu verbessern. Bei einem hohen UPDATE-Wert sind die Aktualisierungs- und Löschkosten jedoch unvorstellbar hoch. Der Autor ist auf eine Situation gestoßen, in der die Aktualisierung eines fokussierten Index 10 Minuten dauerte. Für die Site ist dies unerträglich.
Indizierung und Aktualisierung sind natürliche Feinde, die wir bei der Architektur berücksichtigen müssen, und sie können auch die Probleme sein, die am meisten Zeit in Anspruch nehmen.
6. Verteilte Verarbeitung
Für 2.0-Websites ist der Effekt von CDN aufgrund ihrer hohen Interaktivität grundsätzlich 0. Der Inhalt wird in Echtzeit aktualisiert und wir verarbeiten ihn konventionell. Um die Zugriffsgeschwindigkeit an verschiedenen Orten sicherzustellen, müssen wir uns einem großen Problem stellen, nämlich der Frage, wie die Datensynchronisierung und -aktualisierung von Servern an verschiedenen Orten effektiv erreicht werden kann.
7. Ajax Vor- und Nachteile-Analyse
AJAX ist erfolgreich und AJAX scheitert. AJAX ist zum Mainstream-Trend geworden, und plötzlich stellte ich fest, dass Post und Get auf XMLHTTP basieren. Der Client ruft Daten ab oder sendet sie an den Server, und der Server gibt sie zurück, nachdem er die Datenanforderung erhalten hat. Dies ist eine normale AJAX-Anfrage. Wenn wir jedoch während der AJAX-Verarbeitung ein Paketerfassungstool verwenden, sind die Datenrückgabe und -verarbeitung auf einen Blick klar. Für einige rechenintensive AJAX-Anfragen können wir eine Paketsendemaschine konstruieren, die einen Webserver leicht zum Erliegen bringen kann.
8. Analyse der Datensicherheit
Für das HTTP-Protokoll werden Datenpakete im Klartext übertragen. Vielleicht können wir sagen, dass wir Verschlüsselung verwenden können, aber für das G-Problem kann der Verschlüsselungsprozess im Klartext erfolgen (wie das QQ, das wir kennen). seine Verschlüsselung leicht beurteilen und effektiv eine Verschlüsselungs- und Entschlüsselungsmethode schreiben können, die seiner ähnelt). Wenn Ihr Site-Verkehr nicht sehr groß ist, wird sich niemand um Sie kümmern, aber wenn Ihr Verkehr zunimmt, werden sogenannte Plug-ins und sogenannte Massennachrichten nacheinander folgen (die Hinweise aus den Massennachrichten können Sie unter sehen). der Beginn von QQ). Vielleicht können wir mit Sicherheit sagen, dass wir zur Implementierung eine höhere Beurteilungsebene oder sogar HTTPS verwenden können. Beachten Sie, dass Sie bei der Durchführung dieser Prozesse enorme Datenbank-, E/A- und CPU-Kosten zahlen müssen. Bei einigen Massensendungen ist dies grundsätzlich unmöglich. Dem Autor ist es gelungen, Massennachrichten für den Baidu-Raum und den QQ-Raum zu erreichen. Wenn Sie bereit sind, es zu versuchen, ist es eigentlich nicht schwierig.
9. Probleme bei der Datensynchronisierung und Clusterverarbeitung
Wenn einer unserer Datenbankserver überlastet ist, müssen wir zu diesem Zeitpunkt datenbankbasiertes Laden und Clustering durchführen. Dies ist derzeit möglicherweise das problematischste Problem. Abhängig vom Design der Datenbank ist die Datenverzögerung ein unvermeidbares Problem. In diesem Fall müssen wir andere Mittel zur Lösung verwenden Stellen Sie sicher, dass innerhalb dieser Verzögerung von einigen Sekunden oder länger eine effektive Interaktion erreicht wird. Zum Beispiel Daten-Hashing, Segmentierung, Inhaltsverarbeitung und andere Probleme.
10. Datenaustauschkanäle und OPENAPI-Trends
Openapi ist zu einem unvermeidlichen Trend geworden, von Google über Facebook bis hin zu inländischen Schulen. Es kann Benutzer effektiver binden, mehr Interesse wecken und mehr Menschen anziehen Entwicklung. Zu diesem Zeitpunkt sind eine effektive Datenaustauschplattform und eine offene Datenplattform unverzichtbar geworden. Die Gewährleistung der Datensicherheit und -leistung bei offenen Schnittstellen ist ein weiteres Thema, das wir ernsthaft berücksichtigen müssen.