当前位置:网站首页>Conception finale: système distribué de gestion de la santé pour la prévention des épidémies hautement simultanées basé sur vue + socket + redis
Conception finale: système distribué de gestion de la santé pour la prévention des épidémies hautement simultanées basé sur vue + socket + redis
2022-07-19 04:53:00 【Mabo [email protected]】
Bishop.:Basé surVue+Socket+RedisSystème distribué de gestion de la santé pour la prévention des épidémies hautement simultanées
Un.、 Résumé
Résumé: Pendant l'épidémie,Forte pression en ligne pour signaler l'épidémie sur le campus,Utilisation fréquente.Comme l'éclosion sur le campus, ce type d'éclosion est plus fréquent.,Accès fréquent aux systèmes nécessitant une réponse rapide.Faible concurrence des systèmes traditionnels,Ne peut pas répondre aux besoins des utilisateurs dans ce cas.
Ce système adopteBSArchitecture, La maintenance du client est simple . Le système est séparé de l'avant et de l'arrière ,Front EndPC Séparation de l'extrémité mobile , Déploiement distribué de l'arrière - plan , Améliore à la fois la vitesse d'accès et la stabilité du système , En cas d'exception rencontrée sur un serveur individuel , L'utilisation normale par l'utilisateur est toujours garantie .
Nginx Agir comme distributeur pour les demandes de première ligne , Peut être redirigé vers PC Serveur terminal ou mobile ,Front EndPC Lorsqu'un serveur ou un serveur mobile doit demander un serveur d'arrière - plan , Accès unifié NginxServeur d'équilibrage de charge. .Serveur d'équilibrage de charge redistribuer les tâches à Redis Serveur d'arrière - plan pour le déploiement distribué en tant que cache implémente une réponse complète du serveur . Application de ce système , Capacité de répondre rapidement aux demandes simultanées de plusieurs utilisateurs , C'est l'un des moyens efficaces de prévenir et de contrôler les épidémies dans les collèges et les universités .
Mots clés:Séparation avant et arrière;Distribué;Redis;BSArchitecture;Java;Vue
Distributed high-concurrent epidemic prevention and health management system based on Vue + Socket + Redis
Abstract: During the epidemic period, campus epidemic reporting is under great pressure and used frequently.For example, campus epidemic reporting systems with a high amount of concurrency and frequent visits require rapid response.The traditional system has low concurrency and cannot meet the needs of users in this case.
This system adopts the BS architecture, and the client maintenance is simple.The system adopts front and rear end separation, front-end PC and mobile end separation, back-end distributed deployment, can not only improve the access speed and improve the stability of the system, in the case of individual server abnormal, can still ensure the normal use of users.
Nginx is the distribution server for the front-end request, which can redirect to the PC or mobile server according to the type of device that the user visits. When the front-end PC server or the mobile-end server needs the back-end server, the Nginx load balancing server.Load balancing server redistribution tasks to a distributed deployment with Redis as a cache.The application of this system can quickly respond to concurrent multi-user requests, which is one of the effective ways to solve the problem of epidemic prevention and control in universities.
Keywords: Front and rear end separation; distributed; Redis; BS architecture; Java; Vue
`
2.、Description du système
BSArchitecture
Le système adopteBSArchitecture,C'est le navigateur----Schéma du serveur
BSLes avantages de
Avantages:
- Forte distribution,Maintenance zéro client.Tant qu'il y a un réseau、Navigateur,Peut être interrogé n'importe quand, n'importe où、Traitement des affaires telles que la navigation.
- L'expansion des affaires est simple et pratique,Ajouter des fonctionnalités de serveur en ajoutant des pages Web.
- Entretien simple et pratique,Il suffit de changer la page,La mise à jour synchrone est disponible pour tous les utilisateurs.
- Développement simple,Fort partage.
Séparation avant et arrière
Avantages de la séparation avant - arrière
- Libérer complètement l'avant . L'avant n'a plus besoin de fournir des modèles à l'arrière - plan ou de l'arrière - plan à l'avant - plan HTML Background Generation Embedded in .
- Améliorer la productivité,La Division du travail est plus claire. Le Front End se concentre uniquement sur le Front End , Les coulisses ne se soucient que du travail des coulisses , Les deux peuvent être développés simultanément , Quand l'arrière - plan n'a pas encore eu le temps de fournir l'interface , L'avant - plan peut d'abord écrire les données à mort ou appeler local JSONLes fichiers sont OK., L'ajout de pages et les modifications de routage n'ont plus besoin de déranger l'arrière - plan , Développement plus flexible .
- Amélioration des performances locales . Configuration via le routage frontal , Nous pouvons charger la page à la demande , Charger toutes les ressources du site sans avoir à charger la page d'accueil au début , Le serveur n'a plus besoin de résoudre les pages frontales , Amélioration de l'interaction des pages et de l'expérience utilisateur .
- Réduire les coûts d'entretien. Par le courant dominant actuel MVCCadre, Nous pouvons localiser et trouver les problèmes très rapidement , Les problèmes du client n'exigent plus la participation et le débogage de l'arrière - plan , Remaniement du Code et amélioration de la maintenabilité .
- Réaliser une haute cohésion et un faible couplage, Réduire l'arrière - plan (Application)Concurrence du serveur/Pression de charge.
- Même si les services d'arrière - plan sont temporairement hors service ou hors service,Les pages frontales sont également accessibles normalement, Mais les données ne sont pas disponibles .
- Peut permettre à l'arrière - plan de mieux poursuivre la haute concurrence 、Haute disponibilité、Haute performance, Améliorer la performance de la page de poursuite à l'avant 、Vitesse lisse、Compatibilité、Expérience utilisateur, etc..
Avant et arrièreHTTP Demande d'établissement d'une communication ,Utilisation frontaleAjaxTechnologies de la communication, L'arrière - plan est natif socketLa demande est encapsulée sousHTTP Demande de communication
Schéma de déploiement du système
Le système se compose de sept Parties :
Serveur mobile
PCServeur final
SpringServeur d'arrière - plan
Serveur de cadre personnalisé
MySQLBase de données
RedisMiddleware
NginxServeur
Front End:PC、Séparation des extrémités mobiles
Les serveurs frontaux du système sont divisés en serveurs mobiles et PCServeur final,Fonction cohérente,Déploiement autonome,Aucune influence mutuelle. Lorsqu'il est utilisé dans le Navigateur pour accéder à l'adresse du serveur ,DemandeNginxServeur,Nginx Le serveur distribue les demandes en fonction du type de périphérique de l'utilisateur ,Affectation àPC Serveur ou serveur mobile .
Diagramme de répartition des niveaux d'autorité des rôles
Trois types de rôles sont définis dans le système , Et divisé en administrateurs de haut en bas ,Enseignants,Étudiants.
(1) Il existe trois types de rôles dans le système ,Administrateurs, respectivement,Enseignants,Étudiants.
(2) Tous les rôles, à l'exception de l'Administrateur, participent à l'amélioration des renseignements personnels , Fonction de déclaration des éclosions .
(3) L'Administrateur peut voir tous les enseignants , Statistiques sur la situation épidémique des étudiants . Une classe qui peut être assignée ou non assignée à un enseignant .
(4) Les enseignants peuvent consulter les détails et les statistiques des rapports d'éclosion dans leurs classes assignées. .
Quatre、Introduction aux technologies pertinentes utilisées dans le système
Cinq、Introduction aux difficultés(Analyse du principe du Code)
La principale difficulté du projet est que le système n'est pas utilisé Tomcat Attendre que le serveur open source fasse le serveur back - end , Le traitement logique du serveur au bas du projet est développé et mis en œuvre par nous - mêmes .
Code d'affaires et utilisation du serveur de cadre personnalisé Spring Le cadre écrit presque exactement le même code pour l'entreprise serveur . Le cadre personnalisé est une simulation Spring Un ensemble de cadres ,SimulationSpringLe cadre met en œuvreSpringDansIOC、AOPModule fonctionnel.
Le serveur demande la distribution
Dans ce projet, Le serveur back - end contient Spring Le serveur du cadre et le serveur du cadre personnalisé , Aucune source ouverte n'est utilisée TomcatServeur. Tous les serveurs d'arrière - plan répondent aux demandes en utilisant un serveur de réponse aux demandes personnalisé .
Le processus de justification de la résolution de la réponse à la demande dans ce système est le suivant :
(1) Demande reçue,Obtenir les données demandées
(2) Résoudre le type de demande ,Analyser les données de la demande
(3) Selon le type de demande, Charger et instancier en utilisant le mécanisme de réflexion , Trouvé correspondant à Controller Objets et méthodes de classe
(4) Exécuter la méthode correspondante, Et d'exercer ses activités
(5) Résultats de l'exécution des tests , Et renvoie le résultat à l'avant
Voici le Code de base de la classe correspondante pour l'exécution de la réflexion
Cadre personnaliséIOC
Le 26 mars 2012 , Selon le site Web de la cybersécurité Cyber Kendra Couverture,Spring Cloud
Function Le cas d'essai officiel révèle une vulnérabilité d'injection à distance , Un hacker peut exploiter cette vulnérabilité pour déclencher une commande à distance pour exécuter du Code malveillant . Cette vulnérabilité d'exécution de code à distance , Intégration à distance de codes malveillants, etc. , La vulnérabilité a été prouvée .SpringVulnérabilité dans,Unionjdk9 Caractéristiques des nouvelles versions et plus , Si cette vulnérabilité est exploitée avec succès, elle peut même entraîner une augmentation des droits de l'utilisateur , Danger tel qu'une porte arrière qui peut être commandée arbitrairement .
.Vous pouvez voir que l'utilisation de cadres personnalisés dans ce projet ,Pour simulerSpring Il est très important de réaliser les fonctions pertinentes , Il est également très utile pour la sécurité de la construction future du système .
(1) IOCQu'est - ce que c'est?
IOCC'est l'injection de dépendance.,Contrôle de l'inversion. Est de laisser le processus de création de l'objet à IOCConteneur( Le projet actuel est un Map)Pour finir, Les développeurs n'ont pas besoin de réfléchir à la façon dont cet objet a été créé . Il suffit de l'utiliser en fonction du caractère unique de l'objet idObtenir cet objet, Pour une utilisation directe . Ce processus d'utilisation réduit le processus de création d'objets par les développeurs et réduit l'absence de noyau entre les programmes , Améliorer la disponibilité et la réutilisation .
(2) IOCLes avantages de
IOC L'avantage est de laisser le processus de création d'objets à l'application pour compléter , Si les développeurs créent des objets directement, beaucoup d'objets sont stockés en mémoire. . Réduit l'efficacité opérationnelle du système . Et cela réduit le couplage entre les classes .UtiliserIOCAcquisition de conteneursBean Plus facile à utiliser pour les développeurs . Et dans les tests de développeurs 、 Il est plus facile de déboguer le Code .
(3) IOCLa raison d'être de
IOC Le principe de base est que la réflexion dans le système Dans ce systèmeIOCLe processus de mise en œuvre de, Scannez d'abord tous les systèmes classDocumentation,Et découvrirclass Nom du paquet et nom de classe du fichier , Les objets de cette classe sont ensuite générés à partir des réflexions du nom du paquet et du nom de la classe , Puis mettez l'objet dans IOCDans le récipient. Lorsque vous devez utiliser l'objet, vous n'avez besoin que de l'obtenir dans ce conteneur .
Dans un cadre personnalisé IOC L'injection est configurée par annotation . Spring Les dépendances dans le cadre sont configurées par le fichier produit .
IOCCode source de base:
(4) Comment utiliser IOC
Arrière - planSpring Le cadre utilise un profil pour injecter des objets ,Il n'y a pas beaucoup d'explications ici..
Le cadre personnalisé utilise la forme annotée pour l'injection de dépendance .
La raison d'être est la suivante:
Scannez tous les classDocumentation, Et trouver le nom du paquet et le nom de la classe
Générer un objet de classe basé sur le nom du paquet et le nom de la classe
Placer l'objet de classe généré dans IOCDans le récipient,Est en fait unMapObjet
Classe de chargement du système terminée ,ConnexionRedisCache
DémarragesockerServices,En attendant la demande
Demande reçue, Résoudre le type de demande
Selon le type de demande,Trouver l'objet correspondant,DeIOCObtenir dans le conteneur
Obtenir l'objet de classe,Mise en œuvre de la méthode correspondante,Retour aux résultats
Dans le processus de développement réel,IOC L'héritage existe encore 、Problèmes de dépendance cyclique, La solution se fait par un cache à trois niveaux .
Cadre personnaliséAOP
(1) AOPQu'est - ce que c'est?
AOPProgrammation orientée tangente, En termes simples, il s'agit d'exécuter des blocs de code supplémentaires avant et après l'exécution de cette méthode au moyen d'un proxy dynamique pré - compilé et en cours d'exécution. .
(2) AOPLes avantages de
AOPL'apparition de, .Le couplage entre le Code et le Code a été complètement réduit , Pour que nous puissions précéder n'importe quel bloc de code , Autres opérations commerciales par la suite . Non seulement augmente la disponibilité du programme , Réduit également le couplage entre les programmes .
(3) AOPLa raison d'être de
AOP Le principe de l'agent dynamique . Utilisé dans ce système cglibAgent dynamique,cglib Le proxy dynamique est une sous - classe de la classe actuelle qui est générée après amélioration , Et ajouter des fonctionnalités supplémentaires sur la base de la classe parent . Lorsque le système obtient une telle méthode d'exécution , Exécute la classe proxy, c'est - à - dire la Sous - classe .L'avantage du proxy dynamique est qu'il est très pratique de traiter les fonctions de la classe proxy uniformément,Au lieu de modifier les méthodes dans chaque classe de proxy.
(4) Comment utiliser IOC
Il existe deux façons de mettre en œuvre un agent dynamique JDKAgents dynamiques etCGLIBAgent dynamique, La simple différence entre les deux est JDK La classe de l'agent dynamique doit implémenter l'interface ,EtCGLIBIl n'est pas nécessaire d'implémenter l'interface,MaisCGLIB Ça va augmenter les frais généraux du système ,Donc, dansSpring Les deux sont utilisés .
Le cadre n'est utilisé que CGLIBAgent dynamique pour,CGLIB Le principe de l'Agence est en fait d'hériter de cette classe , Si la classe a besoin d'un mandataire , La méthode doit être publicModification, Sinon, la Sous - classe ne peut pas implémenter un proxy normal .CGLIB Est de créer des sous - classes de cette classe par la technologie Bytecode ,Mise en place d'un agent dynamique. Le principe de base est qu'un nouveau classDocumentation, Est hérité de la classe représentée , Amélioration des classes représentées
AOPLes codes de base sont les suivants::
LogLog
(1) Signification du Journal de fonctionnement du système personnalisé
Log4jC'est unJava Excellent cadre de journalisation Open Source , Mais le 24 novembre 2002, l'équipe d'Alibaba Cloud a découvert une grave vulnérabilité dans le cadre du journal. . Cette vulnérabilité peut être exploitée pour exécuter des blocs arbitraires à distance . Pour la grande majorité de la Chine JavaEntreprises développées, Même la grande majorité des entreprises du monde entier ont un impact énorme . Certaines entreprises ont même été touchées par le virus du chantage .
Visible de haut, Les outils de journalisation sont fréquemment utilisés dans la construction du système , Il s'agit d'une référence importante pour les développeurs dans le processus de construction du système. .Et, L'état de fonctionnement du système peut être enregistré ,Données,Jugement logique, etc.. Alors construisez une efficacité 、 Outil de journalisation du système sécurisé ,C'est très nécessaire.
(2) Effet réel
Spring Les outils de journalisation diffèrent dans les systèmes d'arrière - plan et les cadres personnalisés .Spring Seuls les types de journaux sont inclus dans les informations de base des journaux pour le système d'arrière - plan (Information、Attention、Erreur) Et le temps de sortie . Le système du cadre personnalisé affiche des chemins de classe spécifiques et d'autres informations de log basées sur l'objet de classe courant . Comme le montre la figure, le Journal d'exécution du serveur réel :
Journal d'exécution réel du serveur
(3) Principes
Le principe de journalisation dans ce projet est simple , C'est - à - dire créer ou ouvrir un txtDocumentation. Puis ajoutez l'enregistrement .Les codes de base sont les suivants::
Sécurité du système
Authentification des jetons de boîte aux lettres
La méthode d'authentification de sécurité de ce projet est validée par un jeton de boîte aux lettres tiers , Lors de l'inscription de l'utilisateur , Vous devez utiliser une boîte aux lettres pour vous lier au compte courant .
Le processus spécifique est le suivant::
(1) Après avoir rempli la boîte aux lettres et d'autres informations de base , Cliquez pour le jeton
(2) Le système vérifie si les informations actuellement remplies sont conformes aux exigences ,Conformité aux exigences, Lié au système QQ Compte de boîte aux lettres envoyer un courriel au compte de boîte aux lettres rempli , Il contient des informations sur le jeton ( La prescription est 3Minutes).
(3) Après avoir reçu le jeton dans la boîte aux lettres de l'utilisateur , Remplissez l'interface d'inscription du système en cliquant sur soumettre , Les jetons remplis correspondent à ceux envoyés par le système ,Inscription réussie,Sinon, l'échec.
MD5Cryptage
Les mots de passe de tous les utilisateurs du système MD5Cryptage. Et le mot de passe chiffré est stocké . Lorsque le système vérifie le mot de passe de l'utilisateur actuel , Le mot de passe entré par l'utilisateur sera d'abord chiffré , Les mots de passe chiffrés sont ensuite comparés aux mots de passe stockés dans le système .
MD5 Le chiffrement empêche la manipulation de données sensibles , Si, au cours de la transmission, la chaîne est modifiée ,Donc le calculMD5 La valeur doit être différente de la valeur originale .Et calculerMD5Vite!,Cryptage rapide, C'est aussi son avantage de ne pas avoir besoin d'une clé .
PréventionSQLInjection
SQL L'injection fait référence au fait que le système logiciel n'effectue aucune vérification ou filtrage de la légalité des données saisies par l'utilisateur. . Un attaquant peut saisir des caractères spéciaux ou des déclarations supplémentaires dans une requête d'application , Ce qui a conduit à l'original SQL Changement sémantique , Après l'exécution de la demande , Peut entraîner une action illégale à l'insu de l'Administrateur . Cela pourrait entraîner une connexion excessive de l'utilisateur actuel au système , Falsifier le contenu du système et même voler des informations importantes .
La solution de ce système ne sera pas compilée à l'avance SQLDéclaration passée dansPreparedStatementDans l'objet, Le paramètre à passer utilise ?Remplacer,Alors, oui.SQL L'instruction est précompilée ,À l'heure actuelleSQL L'instruction est compilée en remplissant les caractères pertinents entrés par l'utilisateur , Même si les caractères entrés par l'utilisateur contiennent des caractères illégaux , Il n'y a pas non plus de changement sémantique dû à des caractères illégaux entrés par l'utilisateur ,Cause des anomalies du système.Et utiliserPreparedStatement Précompilé améliore les performances d'exécution .
SpécifiqueSQLL'énoncé est le suivant:
Six、Avantages du système
Extensibilité
L'extensibilité du système se reflète principalement dans les aspects suivants :
(1) Séparation avant et arrière
Déploiement séparé avant et arrière, En théorie, les serveurs frontaux peuvent être augmentés sans limitation . Il suffit d'ajouter un serveur d'équilibrage de charge frontale dédié , Les demandes d'accès frontal sont réparties uniformément entre les serveurs frontaux .Pas besoin de développement, Il suffit de modifier la configuration individuelle du serveur .
(2) Déploiement distribué du serveur d'arrière - plan
Accès au serveur d'arrière - plan,Passe d'abord.Nginx Transfert du serveur d'équilibrage de charge , Rediriger vers le serveur d'arrière - plan . En théorie, il n'y a pas de limite supplémentaire pour les serveurs d'arrière - plan . Chaque fois qu'un nouveau serveur d'arrière - plan est ajouté ,Il suffit deNginx Ajouter une nouvelle adresse de serveur au serveur d'équilibrage de charge complète .Pas besoin de développement,Mise en service simple,Facile à configurer.
La technologie traditionnelle d'expansion du serveur consiste généralement à améliorer les performances du processeur physique du serveur ou la capacité du disque du serveur. . Et la taille de la mémoire . Cette approche est limitée par la technologie matérielle . Un déploiement distribué groupé peut déployer deux serveurs ou plus dans le même environnement centralisé , Les performances de plusieurs serveurs peuvent être cumulées , Donc, en principe, il n'y a pas de goulot d'étranglement . Théoriquement, les performances du serveur peuvent être augmentées indéfiniment . Et les serveurs groupés sont plus résistants à la pression , Le taux de défaillance du système est plus faible , Un noeud a échoué , Il suffit de le remplacer séparément , Sans affecter le bon fonctionnement des autres systèmes . Le serveur Cluster peut également être augmenté ou diminué en fonction de l'état de fonctionnement réel du système. . Peut être personnalisé en fonction de l'utilisation réelle de l'utilisateur .
(3) ShardedJedis
Lors de la sélection des connexions Redis Quand le client ,SélectionShardedJedisConnexion.C'est - à - dire distribuéRedisFonctionnement du client. Lorsque l'accès au système augmente ,Machine autonomeRedis Lorsque la réponse normale du système n'est pas prise en charge ,C'est vrai.ShardedJedis Ajouter au cluster pour RedisServeur, Il suffit de modifier le profil du serveur d'arrière - plan ,Redémarrer le serveur prend effet.
Charge élevée
Le temps de réponse du système est influencé par de nombreux facteurs , Y compris la largeur de bande du réseau , État du système d'exploitation ,Matériel informatique, Même la température , Les effets du temps .
Les données d'essai suivantes sont basées sur des essais effectués localement indépendamment de la largeur de bande ,Système d'exploitationwin10Version professionnelle、CPU 8Générationi7-8750u.
(1) Front End
Comme le montre la figure ci - dessous, Le système frontal fonctionne PC Déploiement séparé de l'extrémité mobile , Avantages naturels sur la charge du système . Les tests locaux ne tiennent pas compte de la largeur de bande du réseau , Le chargement complet de la page avant n'est nécessaire que 680ms.
(2) Arrière - plan
Comme le montre la figure ci - dessous,Utiliser uniquementSpringServeur d'arrière - plan,In1400 Test de concurrence , Le taux d'anomalie du système est de 1.79. Et le temps de réponse moyen du système est 531ms. Le temps de réponse le plus rapide est 17ms, Temps de réponse le plus lent 2561ms. Dans les limites du temps de réponse au fonctionnement du système .
Comme le montre la figure ci - dessous, Serveur d'arrière - plan de cadre personnalisé ,In1400 Test de concurrence , Le taux d'anomalie du système est de 0.57. Et le temps de réponse moyen du système est 795ms. Le temps de réponse le plus rapide est 28ms, Temps de réponse le plus lent 3108ms. Dans les limites du temps de réponse au fonctionnement du système .
Comme le montre la figure ci - dessous,NginxEn tant que serveur d'équilibrage de charge, Le serveur d'arrière - plan est un Spring Après le déploiement du serveur Framework et d'un cluster de serveurs Framework personnalisé ,In1400 Test de concurrence , Le taux d'anomalie du système est de 0. Et le temps de réponse moyen du système est 692ms. Le temps de réponse le plus rapide est 16ms, Temps de réponse le plus lent 6275ms. Dans les limites du temps de réponse au fonctionnement du système . La raison pour laquelle les temps de réponse individuels sont plus longs est que Nginx Détermine la charge du serveur Cluster actuel avant de distribuer les tâches , Il en résulte des délais de réponse plus longs pour les demandes individuelles .
Et les données sont basées sur un ordinateur qui démarre simultanément deux serveurs d'arrière - plan ,Un.NginxServeur,Un articleRedisDans le cas du serveur, Redémarrer sur le même ordinateur Jemeter Résultat de l'essai de l'outil d'essai . L'écart entre les résultats et les attentes est important . Si le serveur et la machine d'essai ne fonctionnent pas sur la même machine , Le temps de réponse moyen du système sera plus court , Le temps de réponse maximal peut être plus grand .
Signification pratique
(1) Facilité de gestion
Toutes les ressources du serveur et les applications du système groupé peuvent être gérées à l'aide d'un logiciel ou d'un autre appareil géré par le cluster. . Et la technologie des grappes permettra d'équilibrer automatiquement la charge dans les grappes , Maximiser l'utilisation des ressources du système ,Augmenter la vitesse de réponse du système, Et ce processus ne nécessite aucune intervention humaine .
(2) Libérer complètement l'avant
Quand le système frontal a été construit , Il n'est pas nécessaire de tenir compte des problèmes de données de la page actuelle , Il suffit de développer selon les spécifications d'interface convenues à l'avant et à l'arrière . Libère le plus possible les contraintes des pages frontales en raison des limites des données de fond .
(3) Améliorer la productivité,La Division du travail est plus claire
Front End se concentre uniquement sur le contenu de l'interface Front End , L'arrière - plan ne se soucie que de l'acquisition et de la poussée des données de l'arrière - plan , Les extrémités avant et arrière peuvent être exécutées simultanément . Le développement simultané des systèmes traditionnels avant et arrière est lent , Et le développement est inefficace , La prise en compte simultanée de l'avant et de l'arrière exige également une certaine technologie de développement .
(4) Réduire les coûts d'entretien
Système de séparation avant et arrière,Quand il y a un problème avec le système, Nous devons d'abord voir si c'est un problème de première ligne ou un problème de dernière ligne . J'ai compris si c'était une question d'avant ou d'arrière - plan , Il suffit de le laisser à son homologue pour trouver le problème . Il suffit de se concentrer sur l'avant ou l'arrière - plan et de ne pas chercher d'erreurs à l'avant et à l'arrière à plusieurs reprises. , De cette façon, le développement sera plus efficace ,Réduction des coûts d'entretien.
(5) Haute cohésion et faible couplage
Réduire l'arrière - plan (Application)Concurrence du serveur/Pression de charge.
(6) Stabilité
Même si le Service d'arrière - plan ne répond pas ou s'arrête , La page frontale peut également être consultée normalement à ce stade . Bien que les données ne puissent pas être affichées correctement , Mais la réception peut donner à l'utilisateur les conseils appropriés ,Améliorer l'expérience utilisateur.
(7) Personnalisation
Le matériel du serveur correspondant peut être raisonnablement acheté en fonction du nombre de groupes d'utilisateurs. . Il n'est pas nécessaire de gaspiller trop de ressources . Si les utilisateurs recherchent une grande concurrence et une grande capacité , Les exigences de haute performance peuvent également être satisfaites .
Résumé
Difficultés rencontrées dans la construction du système
(1) Résolution des demandes
Parce que le système est séparé de l'avant et de l'arrière , Donc vous devez envoyer une demande quand vous communiquez entre l'avant et l'arrière . Les communications avant et arrière utilisent postDemande, Lors de l'analyse de la demande, il faut prêter attention à l'analyse de l'en - tête de la demande et des paramètres de la demande. . Lors de l'analyse de la demande , La résolution de la demande a échoué , Cas où l'en - tête de la requête n'est pas disponible .
(2) Cross - Domain
La séparation de l'avant et de l'arrière peut causer des problèmes inter - domaines . Quand l'avant envoie une demande à l'arrière , Il peut y avoir un problème avec l'avant qui ne reçoit pas la valeur de retour de l'arrière - plan . Une configuration spéciale du système frontal est donc nécessaire .
(3) Embellissement de la page
Parce que je préfère le développement de back - end , Il y a donc beaucoup de problèmes d'embellissement de l'interface et d'optimisation de la page dans le développement du système frontal. . Tous les projets utilisent element ui Composants pour optimiser les pages frontales .
(4) Héritage du cadre personnalisé 、Dépendance cyclique
Dans un système de cadre personnalisé à l'arrière - plan ,IOC L'échec de l'héritage et la dépendance cyclique sont apparus dans la construction du système. . Le problème de la dépendance cyclique est particulièrement important , Le système est simulé spring Un tampon à trois niveaux pour résoudre les dépendances cycliques entre les classes .
(5) Lancement officiel
Le système de cadre personnalisé ne lit pas correctement le profil du système lors du déploiement en ligne réel du projet , Impossible de lire correctement les dépendances du système classQuestions relatives aux documents. Les fichiers de configuration liés au système doivent être ajustés manuellement dans le répertoire spécifié pour assurer le bon fonctionnement du système. . Lors de l'initialisation du système de cadre personnalisé , Il y a une différence entre le développement et le déploiement réel du projet , C'est parce que le système de cadre personnalisé lit la génération du compilateur au moment du développement classDocumentation, Mais le déploiement réel se fait par jar Les paquets sont de nouveau déployés . Il y a donc une légère différence entre le Code de l'environnement de production et celui de l'environnement d'essai . Lors du déploiement de l'environnement de production , Le fichier d'initialisation du système de cadre personnalisé est requis à partir de jar Résolution des boucles dans le paquet .
(6) Tests
En ligne sur le système , Déployer sur Alibaba Cloud Server pour tester les performances du système après le démarrage complet , Les performances du système sont très faibles . La raison en est que le financement est limité , Les performances des serveurs Cloud achetés sont très faibles ,Faible largeur de bande, Impossible de vraiment montrer le système de séparation avant - arrière 、 Performance du système groupé . Donc C'est un déploiement local pour les tests de performance , Mais dans les tests réels, il a été constaté que parce qu'il n'y a qu'un seul ordinateur , Ainsi, lorsque tous les serveurs démarrent, les tests de performance du système sont effectués localement. , L'effet n'est toujours pas idéal . Parce que le système démarre plusieurs serveurs et nécessite un logiciel de test qui prend plus de ressources du système , La charge du système est élevée , Il n'est donc toujours pas possible de déterminer avec précision les performances réelles du système .
Point d'optimisation du système
Parce que le temps de conception de la graduation est limité , Dans ce projet de graduation, le contenu de base du projet ne peut être présenté que dans la mesure du possible . Les éléments suivants du projet doivent être améliorés et améliorés :
Point d'optimisation avant
(1) Le style de l'interface système est unique , Faible interactivité du système
(2) Vue Faible degré de componentisation du projet , Faible réutilisabilité
(3) Le mécanisme de traitement des exceptions n'est pas parfait , Une exception inconnue du système frontal peut se produire une page qui ne répond pas correctement
Point d'optimisation de l'arrière - plan
(1) L'adaptation personnalisée de la résolution des requêtes du serveur à d'autres systèmes de séparation avant et arrière nécessite des modifications
(2) La structure de la table de base de données est confuse , Créer plus de vues pour augmenter la pression du serveur de base de données
(3) La base de données ne supporte pas temporairement le déploiement de Clusters , Cela peut entraîner l'échec du déploiement de la base de données après le déploiement du cluster système, ce qui devient un goulot d'étranglement du système. , Les performances du système ne peuvent pas être améliorées davantage
(4) Système distribué actuel en raison d'une entreprise unique , La question de la cohérence n'est pas importante , Le système n'a pas encore envisagé . Après l'expansion des activités du système , La nécessité d'introduire des serrures distribuées pour résoudre les problèmes de cohérence . Si nécessaire, il est nécessaire d'introduire RedissonRésoudre le problème.
(5) Le système ne tient pas compte des problèmes de transaction .
Conclusions
Le but de ce projet de Graduation est de concevoir et de construire un 、 Systèmes d'arrière - plan systèmes déployés de façon distribuée .Au stade de la conception globale, Les bases techniques préliminaires ont été préparées pendant longtemps , A déposé une certaine base technique , Les outils d'application sont familiers .Alors..., Les difficultés techniques rencontrées dans le processus de construction du système sont en fait au début Demo Tout a été résolu dans les tests. .
Techniquement parlant,, Le projet est également à ce jour , Ma participation à la conception et à la construction de l'ensemble du système est la plus compliquée , Un grand projet . De la construction de chaque page à l'avant et VueUtilisation du cadre, Y compris les sauts entre les pages ,Vue Redirection du routage 、Ajax Les communications, etc., sont largement utilisées dans ce projet .En même temps, De nombreux problèmes se posent également lors de la construction du Front End , Et s'approfondit aussi Vue Connaissance et compréhension du cadre . Le processus de construction du système du cadre personnalisé d'arrière - plan m'a permis de mieux comprendre Spring Le principe sous - jacent du cadre et son processus de mise en oeuvre spécifique .Alors..., C'est très important pour moi de développer d'autres cadres à l'avenir. .
En dernier analyse, Ce projet de Graduation est à la fois l'exigence de l'école pour notre graduation de quatre ans , C'est aussi un résumé de ce que nous avons appris dans notre université . Bien que l'université soit finie , Mais c'est aussi un début .Dans le domaine informatique, La carrière universitaire n'est qu'un début , En tant que développeur , Il reste encore beaucoup à apprendre. . Nous n'avons besoin que de plus de nous - mêmes , Être capable d'obtenir continuellement de nouvelles réalisations en tant que force motrice !
SpringCloudVersion
Schéma
Schéma de déploiement distribué de l'arrière - plan
版权声明
本文为[Mabo [email protected]]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/200/202207170502056918.html
边栏推荐
- Common PostgreSQL data operation notes (updated from time to time)
- 超链接实现post方式提交
- Reproduction of XOR and encryption decryption
- Warriors of the Visual Studio, Assemble! (warriors of visual studio, assemble!) Original 19:40:00 on July 12, 2009 label: compilation /mic
- Service end interface test - test point of interface test [Hangzhou multi tester] [Hangzhou multi tester _ Wang Sir]
- [论文精读]BERT
- MYSQL模糊匹配1,11,111这种相似字符串问题
- 3.RestClient查询文档
- 'ionic' is not an internal or external command, nor is it a runnable program or batch file.
- Construction and application of knowledge atlas de (V): knowledge reasoning
猜你喜欢
Extreme video compression using the pellet toolbox
HighTec 新建 AURIX TC37X demo 工程
Mongo Db单机版的安装和快速使用
Money making master applet [latest version 5.9.9] mall / instant withdrawal of commission / distribution promotion / phone recharge / is meituan hungry for takeout
邮箱发送邮件(包含附件,网易、QQ)
2022 latest version of campus errand applet source code
数据库学习笔记(一)检索数据
Notes on Advanced Mathematics: selected exercises of Wu Yue
Redis简介
OLTP Load Performance Optimization Practice
随机推荐
[论文精读]BERT
项目组暑假总结01
MYSQL数据库表A数据同步到表B
C language dynamic memory development and flexible array
PY3 redis general call
项目组暑假总结02
Minio installation, deployment and use
Expected to replace deepfake? Uncover this year's super popular nerf Technology
npm安装教程
junit4和junit5区别
Overview of CKA core knowledge points
Common PostgreSQL data operation notes (updated from time to time)
[FPGA tutorial case 27] realize dual port RAM ping-pong structure through Verilog
Masm32 writer
Tasking new aurix tc37x demo project
mysql8.026-- 视图(下)
三种高并发方式实现i++
服务端接口测试-接口测试的测试点【杭州多测师】【杭州多测师_王sir】
解决[email protected]: `node install.js` 的问题
Tidb performance optimization overview