初识netty

Netty是一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。
Netty是一个NIO客户端服务器框架,可以快速轻松地开发协议服务器和客户端等网络应用程序。它极大地简化了TCP
和UDP套接字服务器等网络编程。“快速简单”并不意味着最终的应用程序会受到可维护性或性能问题的影响。Netty经过精心设计,具有丰富的协议,如FTP,SMTP,HTTP以及各种二进制和基于文本的传统协议。 因此,Netty成功地找到了一种在不妥协的情况下实现易于开发,性能,稳定性和灵活性的方法。

特征

设计

  • 适用于各种传输类型的统一API - 阻塞和非阻塞套接字
  • 基于灵活且可扩展的事件模型,可以清晰地分离关注点
  • 高度可定制的线程模型 - 单线程,一个或多个线程池,如SEDA详情
  • 真正的无连接数据报套接字支持(自3.1起)【注①】

使用简单

  • 详细齐全的Javadoc,用户指南和示例
  • 没有其他依赖项,JDK 5(Netty 3.x)或6(Netty 4.x)就足够了
          。注意:某些组件(如HTTP/2)可能有更多要求。有关更多信息,请参阅the Requirements page页面。

性能

  • 高吞吐量,低延迟
  • 减少资源消耗
  • 最小化不必要的内存复制

安全

  • 完整的SSL/TLS和StartTLS支持

社区

  • 早发布,经常发布
  • 自2003年以来,作者一直在编写类似的框架,他依然觉得你的反馈很珍贵!

框架图

这里写图片描述

传输服务

  • Socket & DatagramSocket
  • Http Tunnel(http隧道)
  • In-VM pipe(虚拟机内的管道)

协议支持

  • Http&WebSocket
  • SSL&StartTLS(加密协议)
  • Google Protobuf(google开源的序列化协议)
  • zlib/gzip Compression(压缩格式)
  • LargeFile Transfer(支持大文件传输)
  • RTSP(位于应用层的多媒体 实时流传输协议)
  • Legacy Text.Binary Protocols with Unit Testability(传统的文本。具有单元可测试性的二进制协议)

    核心

  • Extensible Event Model(可的扩展事件模型)
  • Universal Communication API(通用通信API)
  • Zero-Copy-Capable Rich Byte Buffer(具有零拷贝功能的富字节缓冲区)【注②】

注释

①套接字分为——面向连接的套接字和无连接的套接字

  • 面向连接的套接字:提供了一个面向连接、可靠的数据传输服务,数据传输之前需要在发送端与接收端之间建立可靠连接,确定双方通信无碍。数据无差错(不丢包)、无重复地发送,且按发送顺序接收。内设流量控制,避免数据流超限(滑动窗口协议),数据被看作是字节流,无长度限制。TCP(传输控制协议)、FTP(文件传送协议)即使用流式套接(SOCK_STREAM)。
  • 无连接的套接字:提供了一个无连接服务,发送方只需要知道接收方的的IP地址和端口号,就可以直接发数据包。但是,能不能到达就不知道了。数据包以独立包形式被发送,不提供无错保证,数据可能丢失或重复,并且接收顺序混乱。UDP(用户数据报协议)、NFS(网络文件系统)使用数据报式套接字(SOCK_DGRAM)。
    推荐阅读5分钟读懂tcp协议
    ②Zero-Copy:指计算机执行操作时,CPU不需要先将数据从某处内存复制到另一个特定区域。这种技术通常用于通过网络传输文件时节省CPU周期和内存带宽。零复制操作减少了在用户空间与内核空间之间切换模式的次数。(详情)
    参考:
    https://netty.io/
    https://github.com/mdwelsh/mdwelsh.github.io/blob/master/papers/seda-sosp01.pdf
    ②:https://blog.csdn.net/qq_19408603/article/details/74612484
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值