Netty est un framework NIO asynchrone hautes performances. Il prend en charge TCP, UDP et le transfert de fichiers. Toutes les opérations IO de Netty sont asynchrones et non bloquantes. Grâce au mécanisme Future-Listener, les utilisateurs peuvent facilement le faire. Obtenez ou obtenez activement les résultats de l’opération IO via le mécanisme de notification.
Bien que JDK fournisse une riche bibliothèque de classes NIO et qu'il existe de nombreuses routines d'apprentissage NIO sur Internet, il est difficile d'utiliser directement la bibliothèque de classes Java NIO pour développer un système stable et cadre de communication fiable. Ce n'est pas facile, pour les raisons suivantes :
1) Les bibliothèques de classes et les API de NIO sont compliquées et difficiles à utiliser. Vous devez maîtriser le sélecteur, le canal de socket du serveur
SocketChannel, ByteBuffer. , etc.
2) Vous devez avoir d'autres compétences supplémentaires comme base, comme être familier avec la programmation multithread Java. En effet, la programmation NIO implique le mode Reactor. Vous devez être très familier avec la programmation multi-thread et réseau afin d'écrire des programmes NIO de haute qualité.
3) Pour compléter les capacités de fiabilité, la charge de travail et la difficulté sont très importantes. Par exemple, le client est confronté à des problèmes tels que la déconnexion et la reconnexion, l'interruption du réseau, la lecture et l'écriture de demi-paquets, l'échec de la mise en cache, la congestion du réseau et le traitement anormal du flux de code. La caractéristique de la programmation NIO est que le développement de fonctions est relativement simple, mais fiable. les capacités doivent être complétées. Le volume et la difficulté sont très importants.
4) Bugs du JDK NIO, tels que le fameux bug epoll, qui amèneront le sélecteur à interroger vide, provoquant finalement un CPU à 100 %. Le responsable affirme que ce problème a été résolu dans la mise à jour I8 de la version JDK16, mais le problème existe toujours jusqu'à la version JDK1.7, mais la probabilité d'apparition d'un BUG a été réduite et il n'a pas été fondamentalement résolu. Ce BUG et les tickets de problème liés à ce BUG peuvent être trouvés sur le lien suivant :
http://bugsjava.com/bugdatabase/viewbug.do?bugid=6403933
http:/bugs.javacom /bugdatabase /viewbugdo?bugid=2147719
Avec le développement du framework open source NO, de plus en plus de systèmes commerciaux adoptent actuellement la méthode d'intégration directe du framework open source NO pour remplacer les précédentes solutions auto-développées . Prenons comme exemple Netty, le framework NIO le plus mature. Il a été vérifié par des centaines de projets commerciaux. Par exemple, le framework RPC de Hadoop avro utilise Netty comme cadre de communication sous-jacent, le cadre de communication sous-jacent de Sum utilise également Netty et le cadre RPC interne de Twitter Finagle, dont le cadre de communication sous-jacent est également construit sur Netty.
◎L'API est simple à utiliser et le seuil de développement est faible.
◎Puissant, avec plusieurs fonctions de codec prédéfinies et prise en charge de plusieurs protocoles grand public.
◎ Fortes capacités de personnalisation, le cadre de communication peut être étendu de manière flexible via ChannelHandler.
◎Hautes performances. Comparé aux autres frameworks NO traditionnels du secteur, Netty offre les meilleures performances globales.
◎ Mature et stable, Nety a corrigé tous les BUG JDK NIO qui ont été découverts. Les développeurs commerciaux n'ont plus à se soucier des BUG N1O.
◎La communauté est active, le cycle d'itération des versions est court et les bugs découverts peuvent être corrigés à temps. Dans le même temps, d’autres nouvelles fonctionnalités seront ajoutées.
◎Tests d'application commerciale à grande échelle expérimentés, et sa qualité a été vérifiée. Il a été commercialisé avec succès dans de nombreux secteurs tels que l'Internet, le big data, les jeux en ligne, les applications d'entreprise, les logiciels de télécommunications, etc., prouvant qu'il peut pleinement répondre aux applications commerciales de différentes industries.
Netty fonctionne si bien que notre cadre de communication est conçu et développé sur la base de Netty.
Cet article fait référence aux « Principes et pratiques du cadre de services distribués » de Li Linfeng, compilés par la formation Java de Shanghai Shangxuetang. Veuillez revenir à cette colonne pour lire plus d'articles techniques Java, obtenir des informations techniques Java ou des vidéos d'apprentissage, veuillez. contactez la dame du service client.
Les articles suivants valent la peine d'être lus : "Principes et caractéristiques fonctionnelles de l'architecture de services distribués_Formation Java à Shanghai", "Qu'est-ce que l'architecture des microservices ?" La différence entre l'architecture des microservices et l'architecture SOA", "L'architecture et les principes RPC, et une introduction au framework RPC dominant dans l'industrie", "Introduction au framework d'application vertical classique-framework MVC"
Recommandations associées :
Cadre réseau Netty basé sur NIO (explication détaillée de l'image et du texte)
Exemple détaillé du modèle de thread Netty
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!