Maison > Java > javaDidacticiel > Comment Java gère-t-il la simultanéité élevée ?

Comment Java gère-t-il la simultanéité élevée ?

青灯夜游
Libérer: 2022-05-13 09:35:42
original
29800 Les gens l'ont consulté

Comment gérer une concurrence élevée en Java : 1. Optimisez le code et réduisez le gaspillage inutile de ressources ; 2. Séparez les images des pages et placez les images dans des serveurs d'images indépendants ; 3. Utilisez le cache, vous pouvez réduire considérablement le nombre d'images. interaction avec la base de données et amélioration des performances ; 4. Utiliser des clusters de bases de données ; 5. Effectuer l'optimisation de la base de données 6. Réaliser l'équilibrage de charge sur le matériel, etc.

Comment Java gère-t-il la simultanéité élevée ?

Méthode Java pour gérer la concurrence élevée :

1. Commencez par l'endroit le plus élémentaire et optimisez ce que nous écrivons. code pour réduire le gaspillage inutile de ressources.

a. Évitez l'utilisation fréquente de nouveaux objets. Pour les classes qui n'ont besoin que d'une seule instance pour l'ensemble de l'application, nous pouvons utiliser le mode singleton. Pour les opérations de connexion String, utilisez StringBuffer ou StringBuilder, accessibles via des méthodes statiques pour les classes d’outils.

b. Évitez d'utiliser la mauvaise méthode et essayez de ne pas utiliser instanceof pour un jugement conditionnel. Utilisez des classes efficaces en Java, telles que ArrayList, qui offre de meilleures performances que Vector.

Recommandation de cours vidéo → : "Solution de concurrence de données de niveau dix millions (théorie + combat pratique)"

2 , html static

Nous accédons via une adresse de lien, via cette adresse de lien, le module correspondant du serveur traite la requête, accède à la page jsp correspondante, et génère enfin les données souhaitées. Cependant, s'il y a des dizaines de millions de requêtes et qu'il y a trop de requêtes simultanées, cela augmentera la pression sur le serveur et, dans le pire des cas, le serveur sera arrêté. Alors comment éviter cette situation ? Si nous enregistrons le résultat de la demande initiale de test.do dans un fichier html, et que l'utilisateur accède ensuite à ce fichier html à chaque fois, de sorte qu'il n'est plus nécessaire d'accéder au serveur, la pression sur le serveur ne serait-elle pas réduit?

Comment générer automatiquement une page statique ? Lorsqu'un utilisateur la visite, test.html sera automatiquement généré puis affiché à l'utilisateur.

3. Séparation des serveurs d'images

Pour les serveurs Web, les images consomment le plus de ressources, il nous est donc nécessaire de séparer les images des pages. Une telle architecture peut réduire la pression sur le système serveur qui fournit les demandes d'accès aux pages et garantir que le système ne tombera pas en panne en raison de problèmes d'image. Sur le serveur d'images, nous pouvons optimiser différentes configurations.

4. Utiliser le cache

Essayez d'utiliser le cache, y compris le cache utilisateur, le cache d'informations, etc. Dépensez plus de mémoire pour la mise en cache, ce qui peut réduire considérablement l'interaction avec la base de données et améliorer les performances.

5. Transmission par lots

Lorsque je travaillais sur un certain projet, trop de paramètres étaient transmis en même temps, et la base de données stipulait que le nombre maximum de paramètres pouvant être transmis en même temps le temps était de 30 000. A cette époque, il y en avait 50 000. Comment l'envoyer ? La dernière méthode consiste à envoyer les personnes par lots. Si l'ascenseur ne peut pas accueillir autant de personnes à la fois, il signalera un bug de surpoids, les personnes seront donc envoyées par lots.

Une autre fois, dans le système d'examen, si autant de candidats se soumettaient à la base de données en même temps, la pression sur la base de données augmenterait et parfois elle tomberait en panne. La méthode utilisée à cette époque était d'utiliser ajax. transmission asynchrone sans attente. Lorsque le candidat clique sur le bouton Soumettre, les réponses du candidat sont automatiquement soumises. Cela évite également la perte des questions que le candidat a posées auparavant en cas de panne de courant soudaine.

6. Cluster de bases de données

Face à des applications complexes et à un grand nombre d'utilisateurs qui y accèdent, un ensemble de données sera bientôt incapable de répondre à la demande, nous devons donc utiliser un cluster de bases de données. ou hachage de table de base de données.

Nous installons des modules métiers et applicatifs ou fonctionnels dans l'application pour séparer les données. Différents modules correspondent à différentes bases de données ou tables, puis disséminons une certaine page ou fonction dans des bases de données plus petites selon une certaine stratégie.

7. Optimisation de la base de données

a. Lors de la conception de la base de données, nous devons considérer la maintenance ultérieure. Les trois paradigmes de la base de données sont les principes que nous devons suivre lors de la conception de la base de données.

b. Création d'index : La création d'index doit être appropriée Si une table est souvent interrogée et rarement utilisée pour des ajouts et des modifications, nous pouvons créer un index pour cette table car pour les opérations d'ajouts, de modifications et de suppression, notre maintenance. de l'indice dépasse largement l'efficacité que l'indice nous apporte.

c. La sélection du type des champs du tableau doit inclure de manière appropriée la longueur et le type des champs, etc. La sélection doit être basée sur les données réellement stockées. La longueur ne doit pas être trop longue, sinon cela affectera. efficacité.

d. Les clés étrangères doivent être utilisées avec prudence, car la clé primaire représente cette table, et la clé étrangère représente un groupe de tables, qui associe les tables, nous devons les associer lors de la suppression, de la modification, etc. .

e. Dans les opérations de base de données

Essayez d'utiliser prepareStatement et utilisez l'instruction less, car PrepareStatement est précompilé.

La connexion est définie sur readOnly. La connexion est une connexion à la bibliothèque et est lourde. Nous pouvons simplement l'utiliser.

Grâce au pool de connexions, nous pouvons modifier le nombre de connexions par défaut dans la base de données.

8. Réaliser l'équilibrage de charge sur le matériel

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal