Netty学习之数据传输

Netty学习之数据传输

前言

在前面的小节中,我们简略地学习了Netty及Netty的核心组件,在本小节中,我们来学习一个重要但是不太好归类的内容,Netty的数据传输方式。

数据传输

在Netty中,Channel可以说是非常重要的一个组件了,数据之间的传递正是通过Channel来完成的。

在Netty中,Channel是线程安全的,所以一个Channel可以被其他线程引用,也可以在多线程环境下使用。

在Netty中,支持不同类型的传输方式,它们支持的协议不同,所以使用的时候需要选择合适的类型

  • NIO,使用Java中的NIO包,非阻塞,基于选择器,Linux版本的JDK默认就是使用Epoll
  • Epoll,使用JNI调用Epoll(),非阻塞,只有在支持Epoll的Linux内核中才能使用
  • OIO,使用传统的OIO,基于阻塞形式的流
  • Local,在同一个VM中使用管线进行通信
  • Embedded,嵌入式,不需要真实的网络环境,一般用于测试用途

零拷贝,零拷贝是一种只能在NIO和Epoll传输方式中使用的特性,允许开发者快速地,高效地将数据从文件系统移动到网络接口,而不需要将其从内核空间拷贝至用户空间,能够极大地提高如FTP、HTTP等的效率,但是并不是所有的OS都支持,而且不能在加密的文件系统中使用,当然,传输加密了的数据块还是可以的。

总结

本小节的内容比较简单,主要是Netty的不同类型的数据传输方式,由于不同的OS对不同的传输方式支持程度不同,所以在使用的时候,需要根据情况选择,如果是Linux环境,并且内核支持Epoll,最佳的选择就是Epoll啦。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值