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:
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:
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 |