Netty教程-Netty介绍

来源:互联网 发布:域名跟空间怎么绑定 编辑:程序博客网 时间:2024/06/07 16:24

Netty是什么?

Netty是一个高性能、异步事件驱动的NIO框架,他提供了对TCP、UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是一步非阻塞的,用户可以方便的主动获取或者通过通知机制获得IO操作结果。支持 HTTP、 WebSocket 、 Protobuf、 Binary TCP | 和 UDP, 通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果。支持 HTTP、 WebSocket 、 Protobuf、 Binary TCP | 和 UDP, Netty 已经被很多高性能项目作为其 Socket 底层基础。也就是说, Netty是一个基于 NIO 的客户端/服务器端编程框架,使用 Netty可以确保你快速和简单

的开发出一个网络应用。

为什么选择Netty,不使用原生NIO

1)跨平台与兼容性: NIO 算是底层的 API需依赖系统的 IO API。但 Java NIO 发现在不同系统平台会出现问题。大量测试也耗不少时间; NIO2 只支持 JDK1.7+,而且没提供 DatagramSocket,故 NIO2不支持 UDP协议。而 Netty 提供统一接口,同一语句无论在 JDK6.X还是 JDK7.X 都可运行,无需关心底层架构功能!  
 2) JAVA NIO的 ByteBuffer 构造函数私有,无法扩展。 Netty提供了自己的 ByteBuffer实现,通过简单 API 对其进行构造、使用和操作,一此解决 NIO的一些限制。  
 3) NIO对缓冲区的聚合与分散操作可能会导致内存泄漏。直到 JDK1.7 才解决此问题。  
 4) NIO 的类库和 API繁杂,使用麻烦,你需要熟练掌握 Selector、 ServerSocketChannel、 SocketChannel、 ByteBuffer等。
 5)使用 JAVA NIO 需要具备其他的额外技能做铺垫,例如熟悉 Java多线程编程。这是因为 NIO编程涉及到 Reactor模式,你必须对多线程和网路编程非常熟悉,才能编写出高质量的 NIO程序。  
 6)可靠性能力不齐,工作量和难度都非常大。例如客户端面临断连重连、网络闪断、半包读写、失败缓存、网络拥塞和异常码流的处理等问题

Netty中使用的主要技术

1)回调
2)多线程设计模式
3)IO设计模式
4)设计模式

0 0
原创粉丝点击