"Architecture Internet" Software Architecture-Code source des threads de Tomcat, familier avec les méthodes de communication (on)

Aujourd'hui, je parle du modèle de code source de thread tomcat.Si vous voulez utiliser le modèle de code source de thread tomcat, l'ancien fer peut être familiarisé avec la configuration de connexion et de haute concurrence. Si vous le configurez avant, vous en bénéficierez pour toujours. Parlons du modèle de threading de tomcat.

Présentation des quatre modèles de threads pris en charge par Tomcat

À partir de 8.0, tomcat prend en charge quatre modèles de terrain,

  • BIO

BIO a été utilisé avant tomcat6.0, 8.0 est le BIO par défaut, et le java IO traditionnel est en fait socket.

  • NIO

Via le sélecteur, il est assigné au thread spécifié par requête, juste pour la lecture. Il sera publié immédiatement après la lecture. Avisez le client. La lecture et l'écriture sont séparées. Le test est lisible et inscriptible. Chaque requête crée un thread et tomcat ne contrôle pas les threads par lui-même. Mais à travers le pool de threads. Actuellement, le mode haute concurrence est utilisé et NIO est utilisé par défaut.

  • AVR

Tomcat peut installer la bibliothèque APR via JNI. Linux installe la version Linux de la bibliothèque Apache et Windows installe la version Windows de la bibliothèque Apache. Beaucoup de gens pensent qu'apache traite les fichiers statiques plus rapidement que tomcat. C'est peut-être avant. La vitesse est fondamentalement la même maintenant.

  • AIO

Après tomcat7, parce que NIO a select, il s'agit en fait d'un sélecteur multiplex, AIO ne

Utilisez la méthode de configuration du modèle d'E / S spécifié:

Configurez la modification dans le fichier server.xml.
Le protocole de configuration par défaut 8.0 = "HTTP / 1.1" Avant 8.0 est BIO, après 8.0 est NIO

  • BIO (monogame, ne faire qu'une seule chose par demande)
protocol=“org.apache.coyote.http11.Http11Protocol“
  • NIO (polygamie, une demande est recyclée pour plusieurs tâches)
protocol=”org.apache.coyote.http11.Http11NioProtocol“
  • AIO (l'intermédiaire n'est plus nécessaire, un thread termine la lecture et le jette au thread suivant pour gérer l'écriture)
protocol=”org.apache.coyote.http11.Http11Nio2Protocol“
  • AVR
protocol=”org.apache.coyote.http11.Http11AprProtocol“

Tomcat BIO, analyse du code source d'implémentation NIO

Vous devriez avoir déjà entendu parler du blocage de BIO bloquant et du NIO non bloquant. Comment ils l'ont fait. Quel est leur principe?

Synchronisation: prenez la carte bancaire pour retirer de l'argent par vous-même (lors de l'utilisation d'E / S synchrones, Java gère la lecture et l'écriture d'E / S par lui-même);

Asynchrone: confiez à un frère cadet le soin d'emmener la carte bancaire à la banque pour retirer de l'argent, puis de vous la donner (lors de l'utilisation d'E / S asynchrones, Java délègue la lecture et l'écriture d'E / S au système d'exploitation pour le traitement, et l'adresse et la taille du tampon de données doivent pour être transmis au système d'exploitation (carte bancaire et mot de passe), le système d'exploitation doit prendre en charge l'API d'opération d'E / S asynchrone);

Blocage: files d'attente ATM pour les retraits, vous ne pouvez qu'attendre (lorsque vous utilisez le blocage d'E / S, l'appel Java bloquera jusqu'à ce que la lecture et l'écriture soient terminées avant de revenir);

Non bloquant: retirez de l'argent au comptoir, prenez un numéro, puis asseyez-vous sur une chaise pour faire autre chose. La diffusion du signe égal vous informera de passer. Vous ne pouvez pas y aller si vous n'obtenez pas le numéro. Vous pouvez continuer à demander au responsable du lobby si la file d'attente est active. Vous ne pouvez pas vous en passer (lorsque vous utilisez des E / S non bloquantes, si vous ne pouvez ni lire ni écrire, l'appel Java reviendra immédiatement. Lorsque le répartiteur d'événements IO vous en informera lire et écrire, puis continuer à lire et écrire, et continuer à boucler jusqu'à ce que la lecture et l'écriture soient terminées)

Interprétation des paramètres de concurrence du connecteur Tomcat

Le connecteur utilise généralement le plus, le nombre maximum de connexions, le délai maximum, le package de connexion,

PS: NIO consiste à faire le plus de choses avec le moins de threads, et BIO consiste à trouver plus de personnes pour le faire. Ils sont tous bloqués, en particulier la méthode selector.select (), qui est identique à accept () de bio, mais elle est en fait bloquante. En comparant les méthodes de traitement mono-thread et multi-thread, en général, peu importe laquelle, le mode nio est meilleur que le bio.

Je suppose que tu aimes

Origine blog.csdn.net/zhugeaming2018/article/details/111850771
conseillé
Classement