Maison  >  Article  >  Java  >  Comment résoudre la concurrence élevée en Java

Comment résoudre la concurrence élevée en Java

(*-*)浩
(*-*)浩original
2019-05-21 16:09:1112559parcourir

Méthodes Java pour résoudre la concurrence élevée : 1. Optimiser le code ; 2. HTML statique ; 3. Séparer les images des serveurs ; 5. Cluster de base de données ; 6. Équilibrage de charge ; .

Comment résoudre la concurrence élevée en Java

La concurrence élevée a toujours été un problème auquel nous devons faire face en Java, alors comment le résoudre ? Voici quelques méthodes pour votre référence.

(Tutoriel recommandé : cours Java )

Méthode Java pour résoudre la haute concurrence :

1. Partez de l'endroit le plus élémentaire, optimisez le code que nous écrivons et réduisez 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 de mauvaises méthodes 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.

2. HTML statique

On accède via une adresse de lien, le module correspondant du serveur traite la requête et accède à la page jsp correspondante. . Enfin, générez 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 faut donc séparer les images des pages. sur un serveur d'images distinct. 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. Mise en cache

Le mécanisme de mise en cache avec lequel j'ai été en contact spécifiquement est le mécanisme de mise en cache d'Hibernate. Afin d'éviter d'obtenir des données de la base de données à chaque fois, nous mettons en mémoire les données auxquelles les utilisateurs accèdent fréquemment. Même lorsque le cache est très volumineux, nous pouvons mettre le cache en mémoire sur le disque dur. Il existe également l'utilisation de bases de données de cache distribuées avancées, qui peuvent augmenter la résistance au stress du système.

5. Transmission par lots

Lorsque vous travailliez sur un certain projet, trop de paramètres étaient transférés en même temps, et la base de données stipulait que le nombre maximum de paramètres pouvant être transférés être transférés à un moment donné était de 30 000, il y avait 50 000 enregistrements à cette époque, alors comment les transmettre ? En fin de compte, il est envoyé 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 vous devez utiliser un cluster de base de données ou un hachage de table de bibliothèque.

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. 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 la maintenance de l'index dépasse largement l'efficacité que l'index 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. Équilibrage de charge

L'équilibrage de charge sera une solution haut de gamme pour les grands sites Web afin de résoudre les accès à charge élevée et un grand nombre de requêtes simultanées.

La technologie d'équilibrage de charge est développée depuis de nombreuses années et il existe de nombreux fournisseurs de services et produits professionnels parmi lesquels choisir. J'ai personnellement rencontré certaines solutions, et deux d'entre elles peuvent être utilisées comme référence.

(1) Commutation matérielle de couche quatre

La commutation de couche 4 utilise les informations d'en-tête des paquets d'informations de couche 3 et 4 pour identifier le flux commercial en fonction de l'intervalle d'application et convertir l'intégralité du segment d'intervalle. Les flux métiers sont affectés aux serveurs d'applications appropriés pour le traitement.

La fonction de commutation de couche 4 est comme une adresse IP virtuelle, pointant vers le serveur physique. Les services qu'il transmet obéissent à divers protocoles, notamment HTTP, FTP, NFS, Telnet ou autres. Ces services nécessitent des algorithmes complexes d'équilibrage de charge basés sur des serveurs physiques. Dans le monde IP, le type de service est déterminé par l'adresse du port TCP ou UDP du terminal. Dans la commutation de couche 4, la plage d'applications est déterminée par les adresses IP source et terminale, les ports TCP et UDP.

Dans le domaine des produits matériels de commutation à quatre couches, il existe des produits bien connus parmi lesquels choisir, tels que Alteon, F5, etc. Ces produits sont chers, mais ils en valent la peine et peuvent fournir très excellentes performances et capacité de gestion très flexible. "Yahoo China" disposait à l'origine de près de 2 000 serveurs, mais n'utilisait que trois ou quatre Alteon pour y parvenir.

(2), commutation logicielle à quatre couches

Une fois que tout le monde connaît le principe du commutateur matériel à quatre couches, une commutation logicielle à quatre couches basée sur le modèle OSI a vu le jour. Le principe de mise en œuvre de la solution est le même, mais les performances sont légèrement moins bonnes. Cependant, il est toujours facile de répondre à une certaine pression. Certains disent que la méthode de mise en œuvre du logiciel est en réalité plus flexible et que la puissance de traitement dépend entièrement de la familiarité de votre configuration.

Nous pouvons utiliser le LVS couramment utilisé sur Linux pour résoudre la commutation à quatre couches du logiciel. LVS est un serveur virtuel Linux. Il fournit une solution de réponse aux catastrophes en temps réel basée sur la ligne de battement de cœur, ce qui améliore la robustesse. du système et fournit également des fonctions flexibles de configuration et de gestion VIP virtuelles, il peut répondre à plusieurs exigences d'application en même temps, ce qui est essentiel pour les systèmes distribués.

Une stratégie typique d'équilibrage de charge consiste à créer un cluster Squid basé sur une commutation logicielle ou matérielle à quatre couches. Cette idée est adoptée par de nombreux grands sites Web, y compris les moteurs de recherche. Cette architecture est peu coûteuse, haute performance et. Forte évolutivité, il est très simple d’ajouter ou de supprimer des nœuds à l’architecture à tout moment.

Pour les grands sites Web, chacune des méthodes mentionnées ci-dessus peut être utilisée en même temps. L'introduction ici est relativement simple. De nombreux détails du processus de mise en œuvre spécifique nécessitent que tout le monde se familiarise et comprenne progressivement. Parfois, un petit paramètre Squid ou un paramètre Apache peut avoir un impact important sur les performances du système.

9. Mise en miroir

La mise en miroir est une méthode souvent utilisée par les grands sites Web pour améliorer les performances et la sécurité des données. La technologie de mise en miroir peut résoudre le problème des différents fournisseurs d'accès au réseau et géographiques. zones. La différence dans les vitesses d'accès des utilisateurs, comme la différence entre ChinaNet et EduNet, a incité de nombreux sites Web à créer des sites miroirs au sein du réseau éducatif, et les données sont mises à jour régulièrement ou en temps réel. En ce qui concerne la technologie détaillée de la mise en miroir, je n'entrerai pas dans les détails ici. Il existe de nombreuses architectures et produits de solutions professionnelles disponibles dans le commerce. Il existe également des moyens peu coûteux de l'implémenter via des logiciels, tels que rsync et d'autres outils sous Linux.

10. Dernière nouveauté : la technologie d'accélération CDN

Qu'est-ce que CDN ?

Le nom complet du CDN est Content Delivery Network. Son objectif est d'ajouter une nouvelle couche d'architecture de réseau à l'Internet existant pour publier le contenu du site Web au « bord » du réseau le plus proche de l'utilisateur, afin que l'utilisateur puisse obtenir le contenu requis à proximité et améliorer la vitesse de réponse du l'accès de l'utilisateur au site Web.

CDN est différent de la mise en miroir car il est plus intelligent que la mise en miroir, ou vous pouvez utiliser cette métaphore : CDN = mise en miroir plus intelligente + mise en cache + détournement de trafic. Par conséquent, le CDN peut améliorer considérablement l’efficacité du flux d’informations sur le réseau Internet. Techniquement, nous résoudrons de manière globale les problèmes causés par la faible bande passante du réseau, les grandes visites d'utilisateurs et la répartition inégale des points de vente, et améliorerons la vitesse de réponse des utilisateurs accédant au site Web.

Caractéristiques du type CDN :

La mise en œuvre du CDN est divisée en trois catégories : mise en miroir, mise en cache et lignes dédiées.

Mirror Site est le plus courant, il permet de publier directement du contenu et convient à la synchronisation de données statiques et quasi-dynamiques. Cependant, le coût d'achat et de maintenance de nouveaux serveurs est relativement élevé, et des serveurs miroirs doivent être installés dans diverses régions et des techniciens professionnels doivent être déployés pour la gestion et la maintenance. Pour les grands sites Web, le coût de la bande passante pour les mises à jour augmente également considérablement.

Cache, à moindre coût, adapté aux contenus statiques. Les statistiques Internet montrent que plus de 80 % des utilisateurs accèdent souvent à 20 % du contenu du site Web. Selon cette règle, le serveur de cache peut gérer la plupart des demandes statiques des clients, tandis que le serveur d'origine n'a besoin de traiter qu'environ 20 % des requêtes non-stop. Les requêtes de mise en cache et les requêtes dynamiques accélèrent considérablement le temps de réponse des requêtes des clients et réduisent la charge sur le serveur d'origine.

Les services CDN placent généralement des serveurs de cache sur des nœuds clés à travers le pays.

Une ligne dédiée permet aux utilisateurs d'accéder directement aux sources de données et de réaliser une synchronisation dynamique des données.

Recommandations d'apprentissage associées : Tutoriel de base Java

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!

Déclaration:
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