Wir werden nicht diskutieren, ob es sich hier um eine PHP-, JSP- oder .NET -Umgebung handelt. Wir betrachten das Problem aus der Sicht der Architektur. Die Implementierung der Sprache ist kein Problem. Der Vorteil der Sprache liegt eher in der Implementierung als in gut oder schlecht. Egal in welcher Sprache Sie sich entscheiden, die Architektur muss konfrontiert sein.
1. Verarbeitung massiver Daten
Wie wir alle wissen, ist die Datenmenge für einige relativ kleine Stellen nicht sehr groß. Wählen Sie und Update können die Probleme lösen, mit denen wir konfrontiert sind. Die Last selbst ist nicht sehr groß und es können höchstens wenige Indizes durchgeführt werden. Für große Websites kann die Datenmenge pro Tag Millionen betragen. Wenn eine schlecht gestaltete viel-zu-Viele-Beziehung in der frühen Phase nicht problematisch ist, aber wenn der Benutzer wächst, wächst die Datenmenge geometrisch. Wenn wir zu diesem Zeitpunkt eine Tabelle auswählen und aktualisieren (ganz zu schweigen von der gemeinsamen Abfrage mehrerer Tabellen), sind die Kosten sehr hoch.
2. Verarbeitung von Datenverhältnissen
Irgendwann hat der 2,0 CTO ein Shangfang -Schwert, das Cache ist. Für Cache ist es auch ein großes Problem, wenn eine hohe Parallelität und eine hohe Verarbeitung durchgeführt werden. In der gesamten Anwendung wird der Cache weltweit geteilt. Wenn wir jedoch Änderungen vornehmen, sterben die Anwendung direkt, wenn zwei oder mehr Anfragen gleichzeitig Aktualisierungen des Cache erfordern. Zu diesem Zeitpunkt sind eine gute Strategie für die Verarbeitung von Daten und eine Caching -Strategie erforderlich.
Darüber hinaus ist es das Problem mit der Datenbank -Deadlock. Vielleicht haben wir normalerweise nicht das Gefühl, dass die Wahrscheinlichkeit, dass Deadlocks in hoher Parallelität auftreten, sehr hoch ist, und das Disk -Caching ist ein großes Problem.
3.. Dateispeicherprobleme
Für einige Websites, die die Datei -Uploads 2.0 unterstützen, sollten wir mehr darüber nachdenken, wie die Dateien effektiv gespeichert und indiziert werden sollten, wenn wir Glück haben, dass die Festplattenkapazität immer größer wird. Eine gemeinsame Lösung besteht darin, Dateien nach Datum und Typ zu speichern. Wenn das Dateivolumen jedoch massiv ist, ist die IO der Festplatte während der Wartung und Verwendung ein großes Problem, wenn eine Festplatte 500 g triviale Dateien speichert. Auch wenn Ihre Bandbreite ausreicht, reagiert Ihre Festplatte möglicherweise nicht. Wenn das Hochladen zu diesem Zeitpunkt eingeladen wird, ist die Festplatte leicht zu Ende.
Vielleicht kann die Verwendung von RAID- und Dedized -Speicherservern das aktuelle Problem lösen, aber es gibt ein anderes Problem, das an verschiedenen Stellen zu Zugangsproblemen ist. Vielleicht ist unser Server in Peking, vielleicht in Yunnan oder Xintengs Zugriffsgeschwindigkeit? Wenn es verteilt ist, wie sollte unser Dateiindex und Architektur geplant werden?
Wir müssen also zugeben, dass Dateispeicher ein sehr schwieriges Problem ist
4. Verarbeitung von Datenbeziehungen
Wir können problemlos eine Datenbank planen, die der dritten Normalität entspricht, die voller vielen zu viele Beziehungen ist und die Spalte der Indentify auch durch GUID ersetzen kann. In der 2,0-Ära, in der viele zu viele Beziehungen überflutet werden, ist die dritte Normalität die erste, die aufgegeben werden sollte. Multi-Table-Joint-Abfrage muss effektiv minimiert werden.
5. Problemindexierungsproblem
Wie wir alle wissen, ist die Indexierung die kostengünstigste und einfachste Lösung zur Verbesserung von Abfragen zur Datenbankeffizienz. Bei hoher Aktualisierung sind die Kosten für Aktualisierung und Löschen jedoch hoch und undenkbar. Der Autor stieß auf eine Situation, in der es bei der Aktualisierung eines fokussierten Index 10 Minuten dauert. Für die Website sind diese grundsätzlich unerträglich.
Indexierung und Update sind ein Paar natürlicher Feinde. Fragen A, D und E sind die Probleme, die wir bei der Architektur berücksichtigen müssen, und können auch die Probleme sein, die die größte Zeit in Anspruch nehmen.
6. Verteilte Verarbeitung
Für 2.0 Websites beträgt der durch CDN erzielte Effekt aufgrund ihrer hohen Interaktivität im Grunde 0 0, und der Inhalt wird in Echtzeit aktualisiert, was unsere regelmäßige Verarbeitung ist. Um die Zugangsgeschwindigkeit an verschiedenen Stellen zu gewährleisten, müssen wir einem großen Problem konfrontiert werden, dh, wie die Datensynchronisation und das Aktualisieren und die Realisierung der Echtzeit-Kommunikation von Servern an verschiedenen Orten effektiv realisiert werden können, ist ein Problem, das berücksichtigt werden muss.
7. Analyse der Vor- und Nachteile von Ajax
Erfolg ist Ajax, Misserfolg ist Ajax, Ajax ist zum Mainstream -Trend geworden, und ich habe plötzlich festgestellt, dass der Beitrag und die Basis von XMLHTTP so einfach ist. Der Client erhält oder veröffentlicht die Daten an den Server, und der Server kehrt nach Empfang der Datenanforderung zurück. Dies ist eine sehr normale AJAX -Anfrage. Bei der Verarbeitung von AJAX sind die Datenrückgabe und -verarbeitung auf einen Blick klar. Für einige AJAX -Anfragen mit hohem Rechenvolumen können wir einen Auftragnehmer erstellen, der einen Webserver problemlos töten kann.
8. Analyse der Datensicherheit
Für das HTTP -Protokoll werden Datenpakete in einfachem Text übertragen. Vielleicht können wir sagen, dass wir die Verschlüsselung verwenden können, aber für das G -Problem kann der Verschlüsselungsprozess einfacher Text sein (zum Beispiel kann QQ, von dem wir wissen, dass er seine Verschlüsselung leicht beurteilen und effektiv eine Verschlüsselungs- und Entschlüsselungsmethode wie IT schreiben kann). Wenn Ihr Site-Verkehr nicht sehr groß ist, kümmert sich niemand um Sie, aber wenn Ihr Verkehr steigt, folgen die sogenannten Plug-Ins und das sogenannte Massenversenden nacheinander (die Hinweise können von der Masse zu Beginn von QQ aus erscheint). Vielleicht können wir sehr sagen, dass wir höhere Urteile oder sogar HTTPs verwenden können, um dies zu erreichen. Beachten Sie, dass Sie bei dieser Verarbeitung eine Menge Datenbank-, IO- und CPU -Kosten bezahlen. Für einige Massensendungen ist es im Grunde unmöglich. Der Autor kann bereits Mass Publishing für Baidu Space und QQ Space realisieren. Es ist nicht schwierig für alle, es zu versuchen.
9. Probleme der Datensynchronisation und Clusterverarbeitung
Wenn einer unserer Datenbanken überfordert ist, müssen wir datenbankbasierte Ladungen und Cluster durchführen. Dies kann das problematischste Problem sein. Die Daten basieren auf der Netzwerkübertragung. Datenverzögerung ist ein schreckliches Problem und ein unvermeidliches Problem. Auf diese Weise müssen wir andere Mittel verwenden, um innerhalb weniger Sekunden oder mehr Minuten nach dieser Verzögerung eine effektive Interaktion sicherzustellen. Zum Beispiel Datenhashing, Segmentierung, Inhaltsverarbeitung und andere Probleme.
10. Datenfreigabekanäle und OpenAPI -Trends
OpenAPI ist zu einem unvermeidlichen Trend geworden, von Google, Facebook, MySpace bis zu Campus zu Hause, dieses Problem wird berücksichtigt. Es kann Benutzer effektiver behalten und mehr Interessen anregen und es Ihnen ermöglichen, dass Sie die effektivste Entwicklung durchführen. Zu diesem Zeitpunkt wird die offene Plattform für die Datenfreigabe für eine effektive Datenfreigabe zu einer unverzichtbaren Art und Weise. Die Gewährleistung der Datensicherheit und -leistung mit offenen Schnittstellen ist ein weiteres Problem, das wir ernsthaft berücksichtigen müssen.