Le prédécesseur de l'échafaudage de microservices lamp-cloud est zuihou-admin-cloud. À partir de la version 3.0.0, il a été renommé lamp-cloud. Il est membre du projet lamp.
L'échafaudage de microservices lamp-cloud est un échafaudage de microservices SaaS basé sur SpringCloud (Hoxton.SR10) + SpringBoot (2.3.10.RELEASE). Il dispose d'un système de gestion d'arrière-plan d'autorisation et d'authentification unifié, qui comprend la gestion des utilisateurs, la gestion des autorisations de ressources et une passerelle. Plusieurs modules tels que l'API, les transactions distribuées et la reprise de la fragmentation des points d'arrêt de fichiers volumineux prennent en charge le développement parallèle de systèmes multi-entreprises et peuvent être utilisés comme échafaudage de développement pour les services back-end. Le code est concis et la structure est claire, adaptée à l'apprentissage et à l'utilisation directe dans les projets. La technologie de base utilise des frameworks et middleware majeurs tels que Nacos, Fegin, Riadfdson, Zuul, Hystrix, JWT Token, Mybatis, SpringBoot, Redis et RiadfdsitMQ.
fonction d'échafaudage de microservices lamp-cloud
1. Enregistrement, découverte et invocation du service
L'enregistrement et la découverte de services basés sur Nacos, utilisant Feign pour implémenter l'intermodulation de services, peuvent obtenir la même expérience de codage que l'appel de méthodes locales lors de l'utilisation de requêtes HTTP pour les appels à distance. Les développeurs ignorent complètement qu'il s'agit d'une méthode distante, et encore plus. perçu qu'il s'agit d'une requête HTTP.
2. Authentification du service :
Utilisez JWT pour renforcer la vérification des autorisations pour la planification entre les services et garantir la sécurité des services internes.
3. Équilibrage de charge
Le reste conservé par le service est utilisé pour le contrôle du proxy et de la passerelle. En plus des node.js et nginx couramment utilisés, zuul et riadfdson de la série Spring Cloud peuvent nous aider à effectuer un contrôle normal de la passerelle et un équilibrage de charge. Parmi eux, l'extension et la référence de projets étrangers sont basées sur le plug-in de limitation de courant JWT Zuul, qui limite le courant.
4. Mécanisme de fusion
Du fait de la répartition des services, afin d'éviter « l'avalanche » d'appels entre services, Hystrix est utilisé comme fusible pour éviter « l'avalanche » d'appels entre services.
5. Surveillance
Utilisez Spring Boot Admin pour surveiller l'état d'exécution de chaque service indépendant ; utilisez Turbine pour afficher l'état d'exécution et la fréquence des appels de l'interface en temps réel ; utilisez Zipkin pour afficher la chaîne d'appels entre chaque service, etc.
6. Surveillance des appels de liaison
Utilisez Zipkin pour réaliser une surveillance complète des performances des microservices, afficher divers indicateurs de la dimension globale à la dimension locale et afficher de manière centralisée toutes les informations sur les performances de la chaîne d'appels dans les applications, ce qui peut facilement mesurer les performances globales et locales et trouver facilement la source de défauts. , ce qui peut réduire considérablement le temps de dépannage en production. Avec cela, nous pouvons faire
Demander le suivi des liens et la localisation rapide des pannes : les informations sur les erreurs peuvent être rapidement localisées via la chaîne d'appels combinée aux journaux d'activité. Visualisation : chaque étape prend du temps et une analyse des performances est effectuée. Optimisation des dépendances : disponibilité de chaque lien d'appel, tri des dépendances de service et optimisation. Analyse des données, optimisation des liens : les comportements des utilisateurs peuvent être obtenus et une analyse récapitulative est appliquée dans de nombreux scénarios commerciaux.
7. Autorisations de données
Implémentation d'autorisations de données simples à l'aide de l'intercepteur DataScopeInterceptor basé sur Mybatis
8. Solution SaaS (multi-tenant) non intrusive
Utilisez l'intercepteur Mybatis pour intercepter tout le SQL et modifier le schéma par défaut afin d'obtenir une isolation des données multi-locataires. Et prend en charge la possibilité de branchement.
9. Cache de deuxième niveau
J2Cache est utilisé pour faire fonctionner le cache. Le cache de premier niveau utilise de la mémoire (Caffeine) et le cache de deuxième niveau utilise Redis. Étant donné qu'un grand nombre de lectures de cache fera du réseau L2 le goulot d'étranglement de l'ensemble du système, l'objectif de L1 est de réduire le nombre de lectures à L2. Ce framework de mise en cache est principalement utilisé dans les environnements de cluster. Il peut également être utilisé sur une seule machine pour éviter l'impact sur l'activité back-end après le démarrage à froid du cache provoqué par le redémarrage de l'application.
10. Conversion élégante de haricots
Utilisez les composants Dozer pour optimiser et convertir des objets DTO, DO, PO et autres.
11. Vérification unifiée des formulaires avant et arrière
Une vérification rigoureuse du formulaire nécessite généralement une vérification front-end + back-end en même temps. Cependant, dans les projets traditionnels, le front-end et le front-end ne peuvent être testés qu'une seule fois chacun. Si les règles sont modifiées ultérieurement, le front-end. et le back-end doivent être modifiés en même temps. Par conséquent, la dépendance de démarrage de zuihou-validator-starter est encapsulée sur la base de hibernate-validator, fournissant une interface commune pour obtenir les règles qui doivent être vérifiées. Ensuite, le front-end utilise les règles renvoyées par le back-end. Si les règles changent à l’avenir, seul le back-end est nécessaire. Il suffit de le modifier.
12. Empêcher les attaques de scripts intersites (XSS)
Utilisez des filtres pour filtrer les paramètres du formulaire dans toutes les demandes
Filtrer tous les paramètres de type application/json via le désérialiseur Json
13. Injecteur d'informations utilisateur actuellement connecté
Injection d’identité utilisateur via des annotations
14. API en ligne
Étant donné que certaines fonctions de swagger-ui natif ne sont pas assez conviviales, nous avons adopté le swagger-bootstrap-ui open source national et créé un stater pour faciliter les utilisateurs de Springboot.
15. Générateur de codes
Un ensemble de générateurs de code est personnalisé sur la base de Mybatis-plus-generator en configurant les annotations des champs de base de données, il génère automatiquement des classes d'énumération, des annotations de dictionnaire de données, SaveDTO, UpdateDTO, des annotations de règles de validation de formulaire, des annotations Swagger, etc.
16. Planificateur de tâches planifiées
Améliorations fonctionnelles basées sur les travaux XXL. (Par exemple : envoi de tâches à une heure précise, fusion de projets avec des exécuteurs et des planificateurs, plusieurs sources de données)
17. Téléchargement de fichiers volumineux/points d'arrêt/CV fragmenté
Le front-end utilise webupload.js et le back-end utilise NIO pour implémenter le téléchargement fragmenté par point d'arrêt de fichiers volumineux. Après avoir démarré les services Eureka, Zuul et File, vous pouvez directement ouvrir docs/chunkUploadDemo/demo.html pour les tests. Après les tests, la mémoire maximale de la pile limite locale est de 128 Mo pour démarrer le service de fichiers, et un fichier volumineux de 4,6 G+ peut être téléchargé avec succès dans les 5 minutes. La durée officielle du service sera affectée par la bande passante de l'utilisateur et la bande passante du serveur, et elle le sera. prendre beaucoup de temps.
18. Transactions distribuées
Intégré au middleware de transactions distribuées d'Alibaba : Seata, il résout les problèmes de transactions distribuées rencontrés dans les scénarios de microservices de manière efficace et zéro invasive.
19. Injecteur automatique de données inter-tables, inter-bases de données et inter-services
Il est utilisé pour résoudre le problème de l'écho des données associées aux attributs de données de pagination inter-tables, de bases de données croisées ou d'attributs d'un seul objet. Il prend en charge l'injection automatique d'attributs de données statiques (dictionnaire de données) et de clé primaire dynamique. données.
20. Version en niveaux de gris
Afin de résoudre le problème de la mise à jour fréquente des services en ligne, de la restauration, de l'itération rapide et du développement collaboratif au sein de l'entreprise, ce projet utilise la stratégie d'équilibrage de charge modifiée de Riadfdson pour obtenir une version en niveaux de gris.
journal de mise à jour du nuage de lampes
v3.5.5
refactoriser
lamp-cloud : Ajustez l'ordre d'exécution de TraceFilter pour faciliter l'enregistrement des informations de journal par d'autres filtres dans la passerelle.
lamp-cloud : optimisez RouterMeta et prenez en charge les clés personnalisées frontales
lamp-cloud : Optimiser l'interface d'exploration régionale, problème d'exploration des données tronquées
lamp-cloud : L'optimisation de l'interface d'exploration régionale ne permet pas d'explorer les données des comtés situés en dessous de la ville.
lamp-cloud : Ajout de la méthode addChildren à l'entité de base de la structure arborescente
lamp-cloud : Optimiser la structure d'agrégation swagger pour ignorer le service de socket Web
réparer
lamp-util : Lorsqu'un paramètre d'en-tête de requête contient du chinois, l'appel simulé asynchrone signale une erreur
lamp-cloud : correction du bug empêchant la structure arborescente d'obtenir la structure hiérarchique d'épissage correcte.
lamp-web-plus : Correction d'un bug causé par la hauteur fixe de la page de l'arborescence
lamp-web-plus : résout le problème de la liste déroulante du composant TableAction provoquant l'affichage incorrect de la ligne de démarcation en raison des autorisations
lamp-web-plus : Correction du problème où les données de la page de liste sont transférées vers la page d'édition et les données sont accidentellement modifiées.