做者:rickiyang
出处:www.cnblogs.com/rickiyang/p/11074238.htmlhtml
开发出高质量的 NIO 程序并非一件简单的事情。java
除去 NIO 固有的复杂性和 Bug 不谈,做为一个 NIO 服务端,须要可以处理网络的闪断、客户端的重复接入、客户端的安全认证、消息的编解码、半包读写等状况, 若是你没有足够的 NIO 编程经验积累, 一个 NIO 框架的稳定每每须要半年甚至更长的时间。linux
更为糟糕的是,一旦在生产环境中发生问题,每每会致使跨节点的服务调用中断,严重的可能会致使整个集群环境都不可用, 须要重启服务器,这种非正常停机会带来巨大的损失。面试
从可维护性角度看,因为 NIO 采用了异步非阻塞编程模型,并且是一个 I/O 线程处理多条链路,它的调试和跟踪很是麻烦,特别是生产环境中的问题,咱们没法进行有效的调试和跟踪,每每只能靠一些日志来帮助分析,定位难度很大。spring
对于 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。
近期热文推荐:
1.1,000+ 道 Java面试题及答案整理(2021最新版)
2.终于靠开源项目弄到 IntelliJ IDEA 激活码了,真香!
3.阿里 Mock 工具正式开源,干掉市面上全部 Mock 工具!
4.Spring Cloud 2020.0.0 正式发布,全新颠覆性版本!
以为不错,别忘了随手点赞+转发哦!