什么是 NIO

NIO 模型中的 N 一般指 Non-blocking ,即非阻塞的意思,NIO 即非阻塞 IO 的意思。

广义上来说, NIO 包括 Non-blocking IO (非阻塞 IO )、 IO Multiplexing ( IO 多路复用)、 Signal-DrivenIO (信号驱动 IO )。狭义上来说, NIO 仅指 Non-blocking IO

Java NIO 中的 N 是指 New ,即新的意思, Java NIO 即新的 IO ,
是相对于 OIO (Old IO) 或者 BIO(Blocking IO) 来说的。
是在 Java 的实现中是基于 IO Multiplexing 模型实现的。

java NIO – ( IO 多路复用)

Java NIO 编程的 坑
1.API 复杂难用,尤其是 Buffer 的指针切来切去的,反人类设计
2 需要掌握丰富的知识,比如多线程和网络编程
3 可靠性无法保证,断线重连、半包粘包、网络拥塞统统需要自己考虑
4.空轮询 bug , CPU 又 100% 了,一直未根除此问题

Tomcat
2005 年前后, BIO 时代的霸者 ——Tomcat ,意识到了 Grizzly 带来的危机,逆势发布了 6.0 版本,它也开始支持NIO 了,同样使得它的性能有了质的飞跃。但是, Tomcat 的 NIO 通信层并没有从它本身的代码中解耦出来,形成了一种 “ 老奶奶裹脚,又臭又长 ” 的代码,这也使得它在 NIO 的浪潮中只能保住自己的一亩三分地,并不具有进攻他人的属性。

Netty 时代
现在这个时代是属于 Netty 的,大家越来越喜欢 Netty ,以前使用 MINA 等其它通信框架的也在逐步转换为 Netty ,说 Netty 统一了 Java 领域中的网络通信一点也不为过,在很多领域都能见到它的身影:

1 框架, gRPC 、 Dubbo 、 Spring WebFlux 、 Spring Cloud Gateway
3 大数据, Spark 、 Hadoop 、 Flink
2 消息队列, RocketMQ 、 ActiveMQ
4 搜索引擎, Elasticsearch
5 分布式协调器, Zookeeper
6 数据库, Cassandra 、 Neo4j
7 工具类, async-http-client
8 日志, Graylog
9 负载均衡, Ribbon

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值