analyse Netty Netty des éléments de base présente

Bootstrap, ServerBootstrap

des moyens de guidage Bootstrap, généralement par l'application d'un Netty Bootstrap un début, le rôle principal est de configurer l'ensemble du programme Netty, divers composants en série, la classe de démarrage Bootstrap Netty est la classe du programme client, la fin du service de ServerBootstrap classe de démarrage.

Les méthodes courantes:

nom de la méthode description
groupe ServerBootstrap publique (EventLoopGroup parentGroup, EventLoopGroup childGroup) Un serveur, à condition que deux EventLoopGroup
groupe public B (groupe EventLoopGroup) Un client, à condition qu'un EventLoopGroup
chaîne publique B (classe <? étend C> channelClass) Régler la fin de service du tunnel pour atteindre
option publique de B (en option ChannelOption, la valeur T) Pour ajouter la configuration à ServerChannel
publique ServerBootstrap childOption (ChannelOption childOption, la valeur de T) Pour ajouter à la configuration du canal reçu
publique ServerBootstrap childHandler (ChannelHandler childHandler) Traitement de définir la classe d'affaires
ChannelFuture publique liaison (int InetPort) Pour définir le numéro de port de service
publique ChannelFuture connexion (String inetHost, int InetPort) Un client connecté au serveur

Avenir, ChannelFuture

Netty toutes les opérations d'entrées-sorties sont asynchrones, ne peuvent pas savoir immédiatement si le message est traité correctement. Mais après un certain temps et il peut être complété ou exécuté enregistrer directement une implémentation spécifique d'écoute est à travers l'avenir et ChannelFutures, ils peuvent enregistrer un écouteur, lorsqu'un succès de l'opération ou de l'échec de la surveillance sera déclenchée automatiquement enregistrées pour écouter les événements.

Les méthodes courantes:

nom de la méthode description
canal canal () Retourne le canal actuel étant des opérations d'entrées-sorties
ChannelFuture sync () En attente d'opérations asynchrones sont terminées

Canal

Channel est l' assemblage communication réseau Netty, le réseau peut être utilisé pour effectuer des opérations d' E / S.
État du courant de canal via une connexion réseau canal disponible.
Les paramètres de configuration (par exemple, la réception la taille du tampon) par connexion réseau du canal disponible, le réseau de canal fournissant opération d' E / S asynchrone (par exemple, pour établir une connexion, la lecture et l' écriture, le port lié), un moyen d'appel asynchrone à ce que les appels d' E / S seront retourne immédiatement et ne sont pas garantis à la fin de l'invocation de l'opération E / S a demandé a été complétée.
notification callback retourner immédiatement un appel à l'appelant ChannelFuture exemple, en enregistrant les auditeurs à ChannelFuture, vous pouvez réussir des opérations d' E / S, annuler ou échouer. canal de support opération associée E / S correspondant à la procédure de traitement, différents protocoles, différents types de connexion de blocage types canal ont différents correspondant, commune Type de canal:

  • NioSocketChannel: client asynchrone TCP Socket connexion
  • NioServerSocketChannel: asynchrone côté serveur TCP Socket connexion
  • NioDatagramChannel: Asynchronous connexion UDP
  • NioSctpChannel: client asynchrone connexion SCTP
  • NioSctpServerChannel: asynchrone connexion au serveur SCTP, les canaux couvrent le fichier réseau UDP et TCP IO et IO.

Sélecteur

objet de sélection basée sur Netty multiplexeur I / O, un fil peut écouter via sélecteur de canal pluralité d'événements de connexion.
Quand un sélecteur pour enregistrer le canal, le sélecteur de mécanisme interne peut continuer automatiquement à la requête (Select) si ceux - ci ont été enregistrés avec l' événement I / O Canal prêt (lecture, écriture, connexion réseau est terminée, etc.), donc le programme peut simplement utiliser un fil pour gérer efficacement plusieurs canaux.

ChannelHandler

Est une interface de traitement d' E / S ou les événements d' interception des opérations d' E / S, et le transmet à l'autre programme de traitement qui a été ajouté le ChannelPipeline (chaîne de traitement de service).
Il ne pas en soi bien des égards, parce qu'il ya plusieurs façons à ce besoin d'interface pour mettre en œuvre, facile à période d'utilisation, peut hériter de ses sous - classes.

Interface commune:

  • ChannelInboundHandler: Evénements entrants E / S pour le traitement.
  • ChannelOutboundHandler: une station de traitement des opérations d'E / S.

sous-catégories communes:

  • ChannelInboundHandlerAdapter: Evénements entrants E / S pour le traitement.
  • ChannelOutboundHandlerAdapter: une station de traitement des opérations d'E / S.
  • ChannelDuplexHandler: événements entrants et sortants pour le traitement.

Pipeline, ChannelPipeline

ChannelPipeline est une collection de gestionnaire, qui est responsable du traitement et d'intercepter les événements entrants ou sortants et des opérations, ce qui équivaut à un Netty tout au long de la chaîne. (Peut-on comprendre: ChannelPipeline ChannelHandler est stocké dans la liste, pour le traitement ou l'interception des événements entrants et sortants de fonctionnement du canal).

ChannelPipeline met en œuvre une forme avancée du mode de filtre d'interception, l'utilisateur a la gestion des événements de contrôle total, et comment chacun des canaux dans ChannelHandler interagissent les uns avec les autres.

Chaque canal a un et un seul correspondant dans ChannelPipeline Netty, le rapport des compositions de ceux-ci comme indiqué ci-dessous:
Insérer ici l'image Description

analyse du processus:

  • Un canal contient un ChannelPipeline et ChannelPipeline il maintient également une liste doublement chaînée composée par le ChannelHandlerContext, et chacun à son tour, est associée à une ChannelHandlerContext ChannelHandler

  • événements événements entrants et sortants dans une liste doublement chaînée, l'événement entrant dans la liste seront transmises à la dernière tête du entrant gestionnaire, les événements sortants de la liste passée au gestionnaire avant la queue avant le maximum d'une station, deux sans perturber chaque type de gestionnaire

Les méthodes courantes:

nom de la méthode description
ChannelPipeline addFirst (ChannelHandler ... manutentionnaires) Le service de traitement d'une classe (Handler) a été ajouté à la première position dans la chaîne
ChannelPipeline addLast (ChannelHandler ... manutentionnaires) Le service de traitement d'une classe a été ajouté (Handler) jusqu'à une position finale dans la chaîne

ChannelHandlerContext

Toutes les informations contextuelles pertinentes stockées Channel, tandis qu'un ChannelHandler objets associés, à savoir ChannelHandlerContext contient un gestionnaire d'événement spécifique ChannelHandler, alors que ChannelHandlerContext également pipeline lié et l'information correspondante du canal, facile à l'appel ChannelHandler.

Les méthodes courantes:

nom de la méthode description
ChannelFuture close () Fermez le canal
ChannelOutboundInvoker flush () rafraîchir
ChannelFuture writeAndFlush (Object msg) L'écriture des données à un processus de démarrage suivant actuellement ChannelPipeline ChannelHandler ChannelHandler (Sortant)

ChannelOption

Après avoir créé instance Netty Channel, généralement besoin de paramètres définis par l'ChannelOption, des paramètres communs sont les suivants:

nom du paramètre description
ChannelOption.SO_BACKLOG Correspondant à la fonction de paramètre de retard de protocole TCP / IP écouter, le serveur peut être utilisé pour initialiser la taille de la file d'attente de connexion. serveur demandes de connexion client de traitement sont traitées de manière séquentielle, de sorte que dans le même temps peut gérer une connexion cliente. Lorsqu'une pluralité de client, le serveur ne sera pas traiter la demande de connexion du client dans une file d'attente en attente à traiter, le paramètre de retard spécifie la taille de la file d'attente
ChannelOption.SO_KEEPALIVE Toujours connecté actif

EventLoopGroup, NioEventLoopGroup

EventLoopGroup est une interface, NioEventLoopGroup est une sous-classe de EventLoopGroup, abstraite EventLoopGroup EventLoop est un groupe, afin de mieux utiliser les ressources CPU Netty multicœur, ont généralement une pluralité EventLoop simultanément, chaque instance EventLoop maintient un sélecteur.

EventLoopGroup fournit ensuite une interface, qui peut être obtenu à partir d'un groupe qui EventLoop selon certaines règles pour traiter la tâche. Du côté du serveur de programmation Netty, nous sommes généralement tenus de fournir deux EventLoopGroup, comme BossEventLoopGroup et WorkerEventLoopGroup.

Habituellement, un port de service qui est un correspond de ServerSocketChannel à un sélecteur et un fil EventLoop. BossEventLoop chargé de recevoir client est connecté à et SocketChannel WorkerEventLoopGroup traitement IO est effectuée, comme indiqué ci-dessous:
Insérer ici l'image Description

BossEventLoopGroup habituellement EventLoop un seul thread, EventLoop tient un registre de constante interrogation de sélection de sélection instance BossEventLoop ServerSocketChannel séparera l'événement de connexion

Habituellement événement OP_ACCEPT, puis reçu SocketChannel à WorkerEventLoopGroup
WorkerEventLoopGroup seront choisis par le plus proche qui sera enregistré à un EventLoop ce SocketChannel à son entretien Selector et son traitement ultérieur événement IO

Les méthodes courantes:

nom du paramètre description
NioEventLoopGroup publique () constructeur
futur public <?> shutdownGracefully () Disconnected, fermez le fil

classe non mis en commun

Netty non mis en commun est conçu pour fournir une opération d'outils tampon (à savoir Netty de conteneur de données).

Les méthodes courantes:

nom du paramètre description
public static ByteBuf copiedBuffer (chaîne de CharSequence, charset charset) ByteBuf en retournant un objet de données donné est un codage de caractères et similaire mais différenciées dans NIO ByteBuffer
Publié 107 articles originaux · a gagné les éloges 19 · vues 20000 +

Je suppose que tu aimes

Origine blog.csdn.net/chen_changying/article/details/104167857
conseillé
Classement