码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 1、Netty入门介绍


    1、简介

    官网:https://netty.io。

    项目github地址:https://github.com/netty/netty。

    在这里插入图片描述

    上图是Netty官网主页,对Netty进行了大概介绍:

    ①Netty是一个异步、基于事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。

    ②Netty是一个NIO客户端服务器框架,可以快速轻松地开发协议服务器和客户端等网络应用程序。它极大地简化和流线了网络编程,例如 TCP 和 UDP 套接字服务器。

    ③Netty协议栈完善,可直接应用到生产环境中,如FTP、SMTP、HTTP、WebSocket以及各种二进制和基于文本的旧协议。

    2、选择Netty的理由

    原生java nio使用存在的问题

    ①NIO的类库和API繁杂,使用难度较大。需要熟练掌握Selector、ServerSocketChannel、SocketChannel、ByteBuffer等。

    ②需要具备其他的额外技能。要熟悉Java多线程编程,因为NIO编程涉及到Reactor模式,必须对多线程和网络编程非常熟悉,才能编写出高质量的NIO程序。

    ③开发工作量和难度都非常大。例如断连重连、网络闪断、半包读写、失败缓存、网络拥塞和异常流的处理等等。

    ④JDK NIO的Bug。例如臭名昭著的Epoll Bug,它会导致Selector空轮询,最终导致CPU 100%。直到JDK 1.7版本该问题仍存在,没有被根本解决。

    为什么使用netty

    ①解决了上述原生java nio使用存在的各种问题。自带编解码器处理tcp粘包|半包问题、心跳维持等问题,自带各种协议栈,且简单易用。

    ②简单而强大的线程模型(主从Reactor)及零拷贝(Zero-Copy),性能高效。

    ③经历了各大开源项目考验。如dubbo、rocketmq、elasticsearch等。

    netty应用场景

    ①作为RPC框架的网络通信工具。

    ②可以自实现简易HTTP服务器、TCP服务器等。

    ③实现及时通讯系统、推送系统等。

    3、Netty版本先择

    在这里插入图片描述

    如上图所示,官网能下载到的版本为3.x、4.0.x、4.1.x、5.x。

    在这里插入图片描述

    Netty5据说存在较大bug,已经被废弃了,从上图maven中央仓库可看出netty5已多年未发版。

    3.x、4.0.x也是几年没更新了,推荐使用4.1.x版本。

    4.1.80.Final版本maven依赖:

    <dependency>
        <groupId>io.nettygroupId>
        <artifactId>netty-allartifactId>
        <version>4.1.80.Finalversion>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    linux /usr/lib/共享库为何几乎都有链接(像是快捷方式)?
    【C语言刷LeetCode】438. 找到字符串中所有字母异位词(M)
    【DNS系列-K8S排错】busybox 中使用 nslookup 进行域名解析时好时坏
    Impala字符串截取left、right、substr/substring
    python毕业设计项目源码选题(7)校园排课选课系统毕业设计毕设作品开题报告开题答辩PPT
    java学习第三天笔记-运算符01算术运算符的基本用法41
    MySQL - 索引优化
    学会Bitmap内存管理,你的App内存还会暴增吗?
    【SQL 初级语法 2】聚合与排序
    使用代理IP常见问题及解答
  • 原文地址:https://blog.csdn.net/xiao_yu_gan/article/details/126724744
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号