为什么不建议使用 Java 原生 IO?
发布日期:2021-06-30 13:02:10 浏览次数:2 分类:技术文章

本文共 1018 字,大约阅读时间需要 3 分钟。

点击关注公众号,Java干货及时送达

开发出高质量的 NIO 程序并不是一件简单的事情。

除去 NIO 固有的复杂性和 Bug 不谈,作为一个 NIO 服务端,需要能够处理网络的闪断、客户端的重复接入、客户端的安全认证、消息的编解码、半包读写等情况, 如果你没有足够的 NIO 编程经验积累, 一个 NIO 框架的稳定往往需要半年甚至更长的时间。

更为糟糕的是,一旦在生产环境中发生问题,往往会导致跨节点的服务调用中断,严重的可能会导致整个集群环境都不可用, 需要重启服务器,这种非正常停机会带来巨大的损失。

从可维护性角度看,由于 NIO 采用了异步非阻塞编程模型,而且是一个 I/O 线程处理多条链路,它的调试和跟踪非常麻烦,特别是生产环境中的问题,我们无法进行有效的调试和跟踪,往往只能靠一些来帮助分析,定位难度很大。

对于 Java 原生的 IO 我们之所以不选择使用是因为:

基于上述原因大多数场景下都不建议直接使原生 NIO,除非你精通 NIO 编程或者是有特殊的需要,否则作为服务器编程的NIO可能会带来巨大的生产隐患。

关于Netty:

Netty是一个高性能、异步事件驱动的NIO框架,它提供了对TCP、UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果。

作为当前最流行的NIO框架,Netty在互联网领域、大数据分布式计算领域、游戏行业、通信行业等获得了广泛的应用,一些业界著名的开源组件也基于Netty的NIO框架构建。

与Netty同样功能的NIO框架还有Mina,Netty的主导作者与Mina的主导作者是同一人,在设计理念上与Mina基本上是一致的。Mina出身于开源界的大牛Apache组织,Netty出身于商业开源大亨Jboss。

这几年Netty社区相对比较活跃,所以我们就先选择Netty作为入手网络编程的首选,有时间再学习一下Mina。另外,关注公众号Java技术栈,在后台回复:面试,可以获取我整理的 Java 系列面试题和答案,非常齐全。

参考:《Netty权威指南 》

作者:rickiyang

出处:www.cnblogs.com/rickiyang/p/11074238.html

关注Java技术栈看更多干货

获取 Spring Boot 实战笔记!

转载地址:https://javastack.blog.csdn.net/article/details/117677422 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:图解 Kafka,画得太好了!
下一篇:Redis 是并发安全的吗?你确定?

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月24日 22时48分49秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章