Corporate CTO: High Performance Development, Java Zero Basic Self - Learning video

Programmeur uauc 2021-08-19 22:15:47 阅读数:973

corporate cto high performance development

NettyC'est si important?

J'ai passé en revue les vraies questions d'entretien d'usine que j'avais,Demande.BIO、NIO、Asynchrone aussi.,NettyLa fréquence d'apparition n'est pas très élevée,Peut - être que je regarde les questions d'entrevue au collège.

Quoi qu'il en soit,,Je veux une augmentation de salaire.,Haute performance、Forte concurrence、Haute disponibilité vous ne pouvez pas.

Ici.,Je vais en partager.NettyPoints techniques de base pertinents:

Note::Pour des raisons de longueur,Je vais simplement en extraire une partie,Obtenir le contenu complet et les cartes HD,Message privé【Haute performance】Recevez gratuitement!

Netty Principes

Netty Est une haute performance、Asynchrone event - driven NIO Cadre,Basé sur JAVA NIO Fourni API Réalisation.Il fournit la bonneTCP、UDP Et le support de transfert de fichiers,Comme asynchrone NIO Cadre,Netty Tous les IO Les opérations sont asynchrones et non bloquantes,Adoption Future-Listener Mécanismes,L'utilisateur peut facilement l'obtenir de sa propre initiative ou par l'intermédiaire d'un mécanisme de notification IO Résultats des opérations.

Netty Haute performance

In IO Pendant la programmation,Lorsque plusieurs demandes d'accès client doivent être traitées simultanément,Vous pouvez utiliser plusieurs Threads ou IO Multiplexage pour le traitement.IO La technologie multiplexage permet de IO Le blocage de est réutilisé dans le même select Sur le blocage,Cela permet au système de traiter simultanément plusieurs demandes de clients dans le cas d'un seul thread.Et le Multithreading traditionnel/Rapport du modèle multi - processus,I/O Le plus grand avantage du multiplexage est que les frais généraux du système sont faibles,Le système n'a pas besoin de créer de nouveaux processus ou fils supplémentaires,Il n'est pas non plus nécessaire de maintenir le fonctionnement de ces processus et Threads,Réduction de la charge de travail d'entretien du système,Économies de ressources du système.

Avec Socket Classe et ServerSocket Correspondance de classe,NIO Est également disponible SocketChannel Et ServerSocketChannelDeux implémentations différentes de canaux de socket.

1、.Mode de communication multiplex

Netty Structure selon Reactor Conception et mise en œuvre du modèle,Son diagramme de séquence de communication côté serveur est le suivant:

Le diagramme de séquence des communications avec les clients est le suivant:

Netty De IO Thread NioEventLoop En raison de l'agrégation des multiplexeurs Selector,Peut traiter des centaines de clients simultanément Channel,Parce que les opérations de lecture et d'écriture ne sont pas bloquées,Cela peut être amélioré IO Efficacité de fonctionnement du fil,Évitez la fréquence IO Le fil est suspendu en raison du blocage.

  • Communication asynchrone NIO

Parce que Netty Mode de communication asynchrone utilisé,Un IO Les fils peuvent être traités simultanément N Connexions client et opérations de lecture et d'écriture,Cela résout fondamentalement le blocage synchrone traditionnel IO Une connexion un modèle de fil,Performance de l'architecture、La flexibilité et la fiabilité sont grandement améliorées.

  • Zéro copie(DIRECT BUFFERS Utilisation de la mémoire directe hors tas)

1、Netty Réception et transmission ByteBuffer Adoption DIRECT BUFFERS,En utilisant la mémoire directe hors tas Socket Lire et écrire,Aucune copie secondaire du tampon Byte n'est nécessaire.Si vous utilisez la mémoire tas traditionnelle(HEAP BUFFERS)En cours Socket Lire et écrire,JVM Va empiler la mémoire Buffer Une copie en mémoire directe,Avant d'écrire Socket Moyenne.Comparé à la mémoire directe hors tas,.Le message a été envoyé plus d'une copie mémoire du tampon.

2、Netty Offre une combinaison Buffer Objet,Peut être agrégé ByteBuffer Objet,L'utilisateur peut agir comme Buffer C'est une bonne combinaison. Buffer Exécution des opérations,Évitez de copier plusieurs petits Buffer Fusionner en un grandBuffer.

3、NettyLe transfert de fichiers pourtransferToMéthodes,Il peut envoyer les données du tampon de fichier directement à la destinationChannel,Évitez la circulation traditionnelle write Problème de copie de mémoire causé par.

  • Pool de mémoire(Mécanisme de réutilisation des tampons basé sur le pool de mémoire)

Avec JVM Machines virtuelles et JIT Développement de la technologie de compilation instantanée,La distribution et le recyclage des objets sont un travail très léger.Mais pour les tampons Buffer,C'est un peu différent.,En particulier pour l'allocation et la récupération de la mémoire directe hors tas,C'est une opération longue..Pour réutiliser le tampon autant que possible,Netty Fournit un mécanisme de réutilisation des tampons basé sur le pool de mémoire.

  • Efficace Reactor Modèle de thread

Fréquent Reactor Il existe trois modèles de Threading,Reactor Modèle à fil unique, Reactor Modèle multithreadé, Maître et esclave Reactor Modèle multithreadé.

Reactor Modèle à fil unique

C'est tout. IO Même opération NIO Terminé au - dessus du fil,NIO Les responsabilités du thread sont les suivantes::

  1. En tant que NIO Serveur,Reçu du client TCP Connexion;

  2. En tant que NIO Client, Initier au serveur TCP Connexion;

  3. Lire le message de demande ou de réponse de bout en bout de la communication ;

  4. Envoyer une demande de message ou une réponse à un message de pair à pair .

Parce que Reactor Le mode est asynchrone et non bloquant IO,Tous les IO Aucune opération n'entraîne de blocage , En théorie, un thread peut gérer tout seul IO Opérations connexes . Au niveau Architectural ,Un NIO Le thread peut vraiment faire ce qu'il fait .Par exemple,AdoptionAcceptor Reçu du client TCP Message de demande de connexion , Une fois le lien établi avec succès ,Adoption Dispatch Va correspondre à ByteBuffer Envoyé à Handler Décodage du message sur .Utilisateurs Handler Peut passer NIO Le thread envoie le message au client .

Reactor Modèle multithreadé

Reactor La plus grande différence entre un modèle multithreadé et un modèle monothreadé est qu'il y a un ensemble de NIO Traitement des fils IO Fonctionnement. Il y en a un spécial NIO Thread-Acceptor Le thread est utilisé pour écouter le serveur ,Reçu du client TCP Demande de connexion; Réseau IO Fonctionnement-Lire、 Écrivez et attendez par un NIO Le pool de Threads est responsable de , Le pool de Threads peut être standard JDK Mise en œuvre du pool de Threads , Il contient une file d'attente de tâches et N Fils disponibles , Par ceux - ci NIO Le thread est responsable de la lecture du message 、Décodage、 Codage et envoi ;

Enfin

Tous les sujets de technologie distribuée partagés ci - dessus+Analyse de l'entrevue+Notes relatives à l'écriture et à l'apprentissagepdf, HD version complète estampillée ici gratuitement

Et bien plus encore.JavaLes notes sont partagées comme suit::

image

Copyright:Cet article est[Programmeur uauc]Établi,Veuillez apporter le lien original pour réimprimer,remercier。 https://fra.fheadline.com/2021/08/20210819221544353p.html