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啦。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 成长是对于我们一个新的开始和总结的一个不是词语的词语。对于成长我们有不同的见解,有人说成长是在现在的基础上...
    卜怡博阅读 316评论 1 2
  • 从流水到鸟鸣 顺着高山的台阶而下 从爱情到人生 顺着高山的台阶而上 变幻的音律 温情环绕 枯了的心竟然又萌发新绿 ...
    泰安左眼皮跳跳阅读 365评论 1 6