Der Vorgänger des Lamp-Cloud-Microservice-Gerüsts ist zuihou-admin-cloud. Ab 3.0.0 wurde es in Lamp-Cloud umbenannt.
Das Lamp-Cloud-Microservice-Gerüst ist ein SaaS-Microservice-Gerüst, das auf SpringCloud (Hoxton.SR10) + SpringBoot (2.3.10.RELEASE) basiert. Es verfügt über ein einheitliches Autorisierungs- und Authentifizierungs-Hintergrundverwaltungssystem, das Benutzerverwaltung, Ressourcenberechtigungsverwaltung und Gateway umfasst Mehrere Module wie API, verteilte Transaktionen und die Fragmentierung großer Datei-Breakpoints unterstützen die parallele Entwicklung von Multi-Business-Systemen und können als Entwicklungsgerüst für Back-End-Dienste verwendet werden. Der Code ist prägnant und die Struktur klar, zum Lernen und zur direkten Verwendung in Projekten geeignet. Die Kerntechnologie nutzt wichtige Frameworks und Middleware wie Nacos, Fegin, Riadfdson, Zuul, Hystrix, JWT Token, Mybatis, SpringBoot, Redis und RiadfdsitMQ.
Lamp-Cloud-Microservice-Gerüstfunktion
1. Dienstregistrierung, -erkennung und -aufruf
Die auf Nacos basierende Dienstregistrierung und -erkennung kann mithilfe von Feign zur Implementierung der Dienstintermodulation das gleiche Codierungserlebnis erzielen wie das Aufrufen lokaler Methoden, wenn HTTP-Anforderungen für Remoteaufrufe verwendet werden. Entwickler sind sich überhaupt nicht bewusst, dass es sich um eine Remote-Methode handelt, und noch mehr: Dies ist nicht der Fall Ich habe erkannt, dass es sich hierbei um eine HTTP-Anfrage handelt.
2. Dienstauthentifizierung:
Verwenden Sie JWT, um die Berechtigungsüberprüfung für die Planung zwischen Diensten zu stärken und die Sicherheit interner Dienste zu gewährleisten.
3. Lastausgleich
Der vom Dienst beibehaltene Rest wird für die Proxy- und Gateway-Steuerung verwendet. Zusätzlich zu den häufig verwendeten node.js und nginx können uns zuul und riadfdson der Spring Cloud-Serie bei der Durchführung der normalen Gateway-Steuerung und des Lastausgleichs helfen. Darunter basieren die Erweiterungen und Referenzen ausländischer Projekte auf dem Strombegrenzungs-Plug-in JWT Zuul, das den Strom begrenzt.
4. Fixiermechanismus
Aufgrund der Verteilung von Diensten wird Hystrix als Sicherung verwendet, um die „Lawine“ von Anrufen zwischen Diensten zu vermeiden, um die „Lawine“ von Anrufen zwischen Diensten zu vermeiden.
5. Überwachung
Verwenden Sie Spring Boot Admin, um den Betriebsstatus jedes unabhängigen Dienstes zu überwachen. Verwenden Sie Turbine, um den Betriebsstatus und die Aufrufhäufigkeit der Schnittstelle in Echtzeit anzuzeigen. Verwenden Sie Zipkin, um die Aufrufkette zwischen den einzelnen Diensten usw. anzuzeigen.
6. Link-Anrufüberwachung
Verwenden Sie Zipkin, um eine vollständige Link-Leistungsüberwachung von Mikrodiensten zu realisieren, verschiedene Indikatoren von der Gesamtdimension bis zur lokalen Dimension anzuzeigen und alle Informationen zur Anrufkettenleistung anwendungsübergreifend zentral anzuzeigen, wodurch die Gesamt- und lokale Leistung leicht gemessen und die Quelle leicht gefunden werden kann Fehler, die die Fehlerbehebungszeit in der Produktion erheblich verkürzen können. Damit können wir es schaffen
Verfolgung von Anforderungslinks und schnelle Fehlerlokalisierung: Fehlerinformationen können über die Anrufkette in Kombination mit Geschäftsprotokollen schnell lokalisiert werden. Visualisierung: Jede Phase braucht Zeit und es wird eine Leistungsanalyse durchgeführt. Abhängigkeitsoptimierung: Verfügbarkeit jedes Anruflinks, Aussortieren von Dienstabhängigkeiten und Optimierung. Datenanalyse, Linkoptimierung: Die Verhaltenspfade der Benutzer können ermittelt werden, und eine zusammenfassende Analyse wird in vielen Geschäftsszenarien angewendet.
7. Datenberechtigungen
Implementierung einfacher Datenberechtigungen mithilfe des auf Mybatis basierenden DataScopeInterceptor-Interceptors
8. Nicht-intrusive SaaS-Lösung (Multi-Tenant).
Verwenden Sie den Mybatis-Interceptor, um das gesamte SQL abzufangen und das Standardschema zu ändern, um eine mandantenfähige Datenisolierung zu erreichen. Und unterstützt die Steckbarkeit.
9. Cache der zweiten Ebene
J2Cache wird zum Betreiben des Caches verwendet. Der Cache der ersten Ebene verwendet Speicher (Koffein) und der Cache der zweiten Ebene verwendet Redis. Da eine große Anzahl von Cache-Lesevorgängen dazu führt, dass das L2-Netzwerk zum Engpass des gesamten Systems wird, besteht das Ziel von L1 darin, die Anzahl der Lesevorgänge auf L2 zu reduzieren. Dieses Caching-Framework wird hauptsächlich in Clusterumgebungen verwendet. Es kann auch auf einem einzelnen Computer verwendet werden, um die Auswirkungen auf das Back-End-Geschäft nach dem Cache-Kaltstart durch den Neustart der Anwendung zu vermeiden.
10. Elegant Bean-Konvertierung
Verwenden Sie Dozer-Komponenten zur Optimierung und Konvertierung von DTO, DO, PO und anderen Objekten
11. Einheitliche Formularüberprüfung im Front- und Backend
Eine strenge Formularüberprüfung erfordert normalerweise eine gleichzeitige Front-End- und Back-End-Überprüfung. In herkömmlichen Projekten können jedoch das Front-End und das Front-End jeweils nur einmal getestet werden und Backend müssen gleichzeitig geändert werden. Daher ist die Startabhängigkeit von zuihou-validator-starter auf Basis von hibernate-validator gekapselt und stellt eine gemeinsame Schnittstelle zum Abrufen der zu überprüfenden Regeln bereit. Anschließend verwendet das Front-End die vom Back-End zurückgegebenen Regeln. Wenn sich die Regeln in Zukunft ändern, muss nur das Backend geändert werden.
12. Verhindern Sie Cross-Site-Scripting-Angriffe (XSS)
Verwenden Sie Filter, um Formularparameter in allen Anfragen zu filtern
Filtern Sie alle Anwendungs-/JSON-Typparameter über den Json-Deserializer
13. Derzeit angemeldeter Benutzerinformationsinjektor
Benutzeridentitätsinjektion durch Anmerkungen
14. Online-API
Da einige Funktionen der nativen Swagger-UI nicht benutzerfreundlich genug sind, haben wir die inländische Open-Source-Swagger-Bootstrap-UI übernommen und einen Stater erstellt, um Springboot-Benutzern die Arbeit zu erleichtern.
15. Codegenerator
Eine Reihe von Codegeneratoren wird basierend auf dem Mybatis-plus-Generator angepasst. Durch die Konfiguration der Anmerkungen von Datenbankfeldern werden automatisch Aufzählungsklassen, Datenwörterbuchanmerkungen, SaveDTO, UpdateDTO, Anmerkungen zu Formularvalidierungsregeln, Swagger-Anmerkungen usw. generiert.
16. Planer geplanter Aufgaben
Funktionserweiterungen basierend auf xxl-jobs. (Zum Beispiel: Aufgaben zu einem bestimmten Zeitpunkt senden, Projekte mit Ausführenden und Planern zusammenführen, mehrere Datenquellen)
17. Hochladen großer Dateien/Haltepunkte/fragmentierter Lebensläufe
Das Front-End verwendet webupload.js und das Back-End verwendet NIO, um das fragmentierte Hochladen großer Dateien durch Haltepunkte zu implementieren. Nach dem Starten der Eureka-, Zuul- und Dateidienste können Sie docs/chunkUploadDemo/demo.html direkt zum Testen öffnen. Nach dem Test beträgt der maximale Speicher des lokalen Limit-Stacks 128 MB, um den Dateidienst zu starten, und eine große Datei mit 4,6 G+ kann innerhalb von 5 Minuten erfolgreich hochgeladen werden. Die offizielle Dienstzeit wird von der Benutzerbandbreite und der Serverbandbreite beeinflusst dauert lange.
18. Verteilte Transaktionen
Integriert in Alibabas verteilte Transaktions-Middleware: Seata, löst es die verteilten Transaktionsprobleme, die in Microservice-Szenarien auftreten, auf effiziente und nullinvasive Weise.
19. Automatischer Injektor für tabellen-, datenbank- und dienstbezogene Daten
Es wird verwendet, um das Problem zu lösen, dass verwandte Daten von Attributen tabellen-, datenbank- und dienstübergreifender Paging-Daten oder Attributen eines einzelnen Objekts wiedergegeben werden. Es unterstützt die automatische Injektion statischer Datenattribute (Datenwörterbuch) und dynamischer Primärschlüssel Daten.
20. Graustufenfreigabe
Um das Problem der häufigen Online-Dienstaktualisierung, des Rollbacks, der schnellen Iteration und der kollaborativen Entwicklung innerhalb des Unternehmens zu lösen, verwendet dieses Projekt die modifizierte Lastausgleichsstrategie von riadfdson, um eine Graustufenfreigabe zu erreichen.
Lampen-Cloud-Update-Protokoll
v3.5.5
Refaktor
lamp-cloud: Passen Sie die Ausführungsreihenfolge von TraceFilter an, um anderen Filtern im Gateway das Aufzeichnen von Protokollinformationen zu erleichtern
lamp-cloud: Optimieren Sie RouterMeta und unterstützen Sie benutzerdefinierte Front-End-Schlüssel
lamp-cloud: Optimieren Sie das Problem mit verstümmelten Crawling-Daten der regionalen Crawling-Schnittstelle
lamp-cloud: Durch die Optimierung der regionalen Crawling-Schnittstelle können keine Daten für Landkreise unterhalb der Stadt gecrawlt werden
lamp-cloud: AddChildren-Methode zur Basisentität der Baumstruktur hinzugefügt
lamp-cloud: Optimieren Sie die Swagger-Aggregationsstruktur, um den Web-Socket-Dienst zu ignorieren
Fix
lamp-util: Wenn ein Anforderungsheader-Parameter Chinesisch enthält, meldet der asynchrone Feign-Aufruf einen Fehler
lamp-cloud: Der Fehler wurde behoben, dass die Baumstruktur nicht die richtige hierarchische Spleißstruktur erhalten konnte.
lamp-web-plus: Fehler behoben, der durch die feste Höhe der Baumseite verursacht wurde
lamp-web-plus: Beheben Sie das Problem der TableAction-Komponente Dropdown, das dazu führt, dass die Trennlinie aufgrund von Berechtigungen falsch angezeigt wird
lamp-web-plus: Das Problem wurde behoben, bei dem Daten von der Listenseite auf die Bearbeitungsseite übertragen und die Daten versehentlich geändert wurden.