Eines der Guide [Advanced] JAVA des Architekten: Wie Architektur-Design

Vorwort

  Dieser Blog ist ein langwierige Serie Blog zu helfen , sich verbessern will, technische Engpässe zu überwinden, aber nicht wissen , wie das System so zu lernen , leiden als ihr Kinderschuhs Autor übernimmt zu verbessern , dass der Leser eine 3 hat - 5 Jahre Erfahrung in der Entwicklung, Java solide Grundlage, ich will Pause ihre technischen Engpass ein ausgezeichneter Architekt zu werden, java solide Grundlage genannt, wie zum Beispiel:
  . 1.java Sprache drei Merkmale
  2.java Sprache und stellen eine Reihe von acht Grundtypen.
  3. Warum Schwimmer und das Vorhandensein von doppelter Genauigkeit verloren geht?
  Bereich 4.publish / privat / default /? dargestellt geschützt
  5.static / Endnutzung und Bedeutung.
  eine solide Basis von Java Schuhen sollten diese Probleme der Lage sein , sie zu beantworten, und die Lage sein , diese wissen zu wissen , warum, von unten Prinzip verstehen , warum dies so ist, nachdem dieser Grund hat, erweitern ihre eigenen zu brechen, ein besserer Ingenieur zu sein.

  Natürlich ist diese Serie der ursprüngliche Autor ist, sind viele Ansichten des eigenen Augen des Autors Sicht, wenn es nicht korrekt ist oder ich mag diskutieren, äußerst gern gesehen, schließlich macht jeder Fehler, Fortschritt, den wir zusammen nicht Miaozai!

Wie ein Architekt zu werden?

  Ich glaube , dass ein Architekt zu werden, zunächst der erste Punkt der Technik gut genug, genug Tiefe und Breite des Wissens sein muss, Probleme auftreten können schnell den am besten geeigneten Weg finden , um den Geist zu lösen. Zweitens Architektur die Lehrer werden das Projekt als Ganzes führen, den Umgang mit Menschen wesentlich ist, kommunizieren also mit Menschen diese Soft Skills sind auch wichtig, natürlich, das variiert, sind manche Menschen mehr geboren werden , mit Menschen zu tun haben , aber in jedem Fall ausreichende technische ausgezeichnet ist die Grundvoraussetzung, natürlich wollen ein guter Architekt sein, praktische Entwicklung Erfahrung ist wichtig, nicht der Architekt der langjährigen Erfahrung nicht funktioniert, aber zumindest wollen wir einen Architekten sein, müssen Sie zunächst das theoretische Wissen ?? ist es nicht oder darüber reden , was sie üben , damit ich eine Java Advanced Learning Architekt Karte zusammengefasst:
Datei
  natürlich gibt es viele Techniken und Fertigkeiten sind auch, wie erforderlich: Architekt Dokumentenausgabe, müssen Sie ähnliche Zahlen ziehen gängiges Beispiel: ein Flussdiagramm / Anwendungsfalldiagramm / Zeitdiagramm / Spur Diagramm / Zustandsdiagramm / Kollaborationsdiagramme usw. ( man erinnere sich, dass diese Kurse in der Schule kein Lehrer ist , aber wir haben etwas dagegen , den Autor nicht alle sprachen über nichts, zumindest? Auf diese Weise ha ha ~). Ein weiteres Beispiel Java - Reflexionsmechanismus und der damit verbundenen API, hohe Leistung NIO --- Netty Rahmen und so weiter. Wenn wir große Daten relevant zu wissen , flink / blinken / Funken / hadoop / müssen hbase, nicht unbedingt alle zu sein, aber meiner Meinung nach zumindest muss ein Konzept sein, ist diese Technologie zu tun, so dass , wenn die Leute können sagen , verstehen. Was , warum nicht in der obigen Abbildung gezogen hat, weil ich zu schreiben vorbereitet nur Follow-up - Artikel der Inhalt der Figur, und die um ihre eigenen Kinderschuhe verließ Rest , es zu lernen. natürlich, weil der Blog des begrenzten Raumes, jede Technologie nicht hundertprozentig alle Wissenspunkte genannt werden kann, sondern dafür zu sorgen , dass alle über trockene Waren sprechen, Energie lesen wir die Kinderschuhe zu gewinnen etwas!

Was für Architekten sollten besorgt sein?

  Das Problem, mit anderen Worten, zu machen, was wir uns Sorgen machen sollen, wenn Design-Architektur, glauben wir, dass die beiden Arten, funktionale Anforderungen und nicht-funktionale Anforderungen von großen Begriffen, die Aufschlüsselung für die folgenden sechs Bereiche:

1. Funktion

  Ich erinnere mich, meinen Lehrer hat einmal gesagt, die Funktion ist 0 und die anderen 1 ist, dann schnellen Hardware-Architekt, wenn nicht funktioniert, dann schnell Hardware-Design ist nutzlos, und nur unter der Prämisse, das funktionale und anderes Design gerecht zu werden nützlich zu sein.

2. Leistungs

  Für moderne Systeme ist desto kürzer ist die Reaktionszeit eher Kunden behalten, denn wer stehen würde, eine Seite zu öffnen, auf 10 Sekunden oder sogar Minuten davon warten? Zumindest, wenn ich eine Website besuchen, mehr als fünf Sekunden, um eine Seite direkt zu laden off. häufigsten verwendete Leistungsindikatoren QPS (Abfragen pro Sekunde Rate) / TPS (Transaktionen pro Sekunde Rate). natürlich, gemeinsam die Notwendigkeit voranUmweltLeistung (Umwelt- und produktionsähnlichen Umgebung) Tests nach dem Abschluss der Systementwicklung, Prüfung Performance-Tools Apachebench (bezeichnet als ab) / http_load / jmeter usw. .QPS auch das Prinzip der 28, der Tag 80% des Verkehrs in 20% der Zeit konzentriert folgen, könnten wir die QPS Website dann schätzen, die Serverkonfiguration planen, wenn die Leistung nicht bis ist, die Notwendigkeit zur Optimierung Optimierungsmethoden häufig Plus Maschine (Brute), das vordere Ende der Optimierung (CDN / statischen und dynamischen Trennung / Abnahme Anzahl von Anforderungen /), Optimierung Backend-Code-Cache (z.B. redis), optimierte JVM.

3. Verfügbarkeit

  Usability ist ein modernes verteiltes System, wenn es einen oder mehrere seiner Subsysteme Knoten ausfällt, wenn noch in der Lage sein, normale Dienste zur Verfügung zu stellen, um fortzufahren. Häufig verwendete Mittel eines Clusters und automatisches Failover, die fast alle verteilten Systemen Technologie Nutzung Unterstützung für hohe Verfügbarkeit, wie offizielle redis Cachen Redis-Cluster Cluster, Fragmentierung MongoDB-Cluster-Middleware-Messaging (ActiveMQ / RabbitMQ / kafka / RocketMQ) Cluster, MySQL Cluster-Datenbank und so weiter, wenn alle oben sind uns bewusst, Kinderschuhe, zusammenzufassen, sie werden feststellen, dass die Kernidee ist die gleiche, die Datenredundanz durch Clustering zur Verfügung zu stellen, und durch die automatische Erkennung und Failover-Mechanismus eine hohe Verfügbarkeit Komponenten zu gewährleisten.

4. Dehnfähigkeit

  Skalierbarkeit bezieht sich auf, wenn die Systemkapazität unzureichend ist oder Überschuss, ob sie das Verhalten der Expansions- / Kontraktionsverarbeitungskapazität, viele große Unternehmen auch in dieser Hinsicht tun erleichtern können, bessere Strategie ist containerisiert, Verwendung Docker + K8S Deployment Management kann leicht Expansion oder Kontraktion Verarbeitungskapazität, besser rationelle Nutzung von Ressourcen.

5. Skalierbarkeit

  Skalierbarkeit bezieht sich auf die Zeit, wenn es Änderungen oder neue Anforderungen auftreten, ob die Funktion ohne Änderung Code oder Änderung erreicht werden kann, sehr wenig Code. Die Skalierbarkeit ist ein Test der Geschicklichkeit eines Architekten, scheint der Autor wie Design eine gute Skalierbarkeit des Systems, zusätzlich zu dem vor Berücksichtigung die Verwendung von Entwurfsmustern ist ein ziemlich gutes Programm gegebenenfalls Szenarien, so die Architekten, sehr wichtig! das Design-Modell ist zum Beispiel, gibt es einen Upload-Service, das FTP-Protokoll laden wir Apach FtpClient Paket basiert auf einer Reihe von Schnittstellen, zusätzlich gibt es zu dieser Zeit eine Nachfrage, erforderlich ist, das SFTP-Protokoll zu verwenden, verwenden wir einen anderen Satz von Schnittstellen jsch Paket, dass, wenn es Follow-up der neuen Vereinbarung? jede weitere wir ein Protokoll hinzufügen müssen, um den Code anzupassen, diesmal das Adaptermodell ist, kann keine gute Lösung für das Problem sein? das ist auch mit der Idee von Design Patterns im Einklang mit einer Schnittstelle programmieren, ein neues Abkommen in der Zukunft brauchen wir gerade ein neuen durch eine Implementierungsklasse, ohne Veränderung des ursprünglichen Codes ist es nicht in den Code-Änderungen auf einem Minimum trifft die Nachfrage?

6. Sicherheit

  Eine Website, wenn sie unter einer großen Menge an Benutzerzugriff ist, das Netzwerk für Hacker, gemeinsames Angriffsmittel ist anfällig ist:

6.1 XSS-Angriff

  Die Sterilisation ist ein gängiges Mittel der Verteidigung (keine Benutzereingabe vertrauen, und die Eingang Prüfsumme strenge Filterung, wie der Verwendung von „& lt“ anstelle von „<“, etc.).

6.2 SQL-Injection-Angriffe

  Bevor wir JDBC verwenden, wenn die Anweisung Ursache SQL-Injection-Angriffe verwendet wird, so ist es eine vorkompilierte PreparedStatement Weg zurück zum Verhindern, dass SQL-Injection-Angriffen und höhere Effizienz PreparedStatement bei einer großen Anzahl von Abfragen.

6.3 CSRF-Attacken

  Cross-Site-Request-Forgery, der Angreifer Diebstahl Opfer Cookies, böswillige Anfragen im Namen der Opfer zu senden, eine gemeinsame Abwehrmechanismen sind: submit Form Validierungscode (User Experience relativ unfreundlich), URL mit Token-Validierung, Referrer Verifikation.

6.4 DDoS-Angriff

  Distributed Denial-of-Service-Attacken, greift DOS erweiterte Version, die Verteidigung ist sehr schwierig, und das Programm ist relativ komplex, die Industrie stärker ist Ali, 11 Doppel oft eine große Förderung standen haben, nach allem, Ali Reichtum Bruder (Wu Han Qing, Ali, der jüngste P8, wie die Existenz Gott) Sicherheitsgruppe und ihre Führung.

  Natürlich gibt es weitere Angriffe, hier werde ich sie hier nicht aufzählen, interessiert sind, in den Schuhen der Kinder, sich über den nächsten Artikel informieren können, haben wir begonnen, erweiterte Content --- JVM Artikel, so stay tuned!

  Wenn Sie das Gefühl, dass die Blogger auch, begrüßen die Aufmerksamkeit auf die öffentliche Nummer Mikro-Kanal-Blogger schreiben, Blogger gelegentlich Sharing-Technologie trocken!
Datei

Dieser Artikel aus den Blog - Artikel mehr Plattformen Openwrite - Release!

Ich denke du magst

Origin www.cnblogs.com/wukongbubai/p/12529176.html
Empfohlen
Rangfolge