netty
简介
Netty是一个java网络编程框架。 是一个利用 Java 的高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的 API 的客户端/服务器框架。
- 设计
- 针对多种传输类型的统一接口 - 阻塞和非阻塞
- 简单但更强大的线程模型
- 真正的无连接的数据报套接字支持
- 链接逻辑支持复用
- 易用性
- 大量的 Javadoc 和 代码实例
- 除了在 JDK 1.6 + 额外的限制。(一些特征是只支持在Java1.7 +。可选的功能可能有额外的限制。)
- 性能
- 比核心 Java API 更好的吞吐量,较低的延时
- 资源消耗更少,这个得益于共享池和重用
- 减少内存拷贝
- 健壮性
- 消除由于慢,快,或重载连接产生的 OutOfMemoryError
- 消除经常发现在 NIO 在高速网络中的应用中的不公平的读/写比
- 安全
- 完整的 SSL / TLS 和 StartTLS 的支持
- 运行在受限的环境例如 Applet 或 OSGI
- 社区
- 发布的更早和更频繁
- 社区驱动
并发高/传输快/封装好
- 并发高 nio
- i/o多路服用,阻塞select而不是socket i/o
- 传输快
- 零拷贝/堆外内存
netty构成部分
- Channel nio的基本结构,能执行一个或多个不同的io操作的开放连接
- Callback 一种通知应用操作完成的方式,在某个io完成后执行的方法
- Future 另一种通知应用操作完成的方式,作为一个异步操作结果的占位符,它将在将来的某个时候完成并提供结果 ChannelFuture??
- Event和Handler 事件和事件处理器
- Selector, Event, Event Loop
netty基本构建模块
- BootStrap 引导类
- Channel socket交互操作集的封装
- Channel Handler 事件处理器
- Channel Pipeline 提供了一个容器给 ChannelHandler 链并提供了一个API 用于管理沿着链入站和出站事件的流动
- EbentLoop channel的调度器
- Channel Future 当channel异步事件完成后通知ChannelFuture
- netty不需要多线程同步