Netty 核心组件
Channel - Socket
OS原语:bind() connect() read() write()
Java原语:class Socket
- Netty的Channel是线程安全的,多线程使用它写数据时,将顺序发送消息
Future - 异步通知
- JDK的Future需要手动检查或者阻塞到完成,Netty提供了异步回调功能的ChannelFuture
- 每个Netty的出站IO操作都将返回一个ChannelFuture;也就是说,它们都不会阻塞,完全异步事件驱动
EventLoop - 控制流,多线程处理,并发
多reactor模型:EventLoopGroup -> 提供EventLoop -> 绑定Channel:
EventLoop本身只由一个线程驱动,其处理了一个Channel的所有IO事件,并且在其整个生命周期内都不会改变
一个给定Channel的IO操作都是由相同的Thread执行,消除了同步的需求Netty的传输
NIO
使用JDK的NIO,基于选择器的方式
选择器背后的基本概念是充当一个注册表,在那里可以请求在channel的状态发生变化时得到通知。
选择器运行在一个检查状态变化并对其做出响应的线程上,在应用程序对状态的改变做出响应后,选择器将会被重置,并重复。
Epoll
由JNI驱动的epoll和非阻塞IO,比NIO更快,完全非阻塞
OIO
使用阻塞流,可以兼容JDBC等阻塞调用
Local
在VM内部使用管道进行本地通信
Embedded
测试,不需要真正的网络传输
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 wshten@gmail.com
文章标题:Netty 核心组件
本文作者:KevinTen
发布时间:2019-11-11, 00:00:00
最后更新:2019-11-11, 20:48:42
原始链接:http://github.com/kevinten10/2019/11/11/Netty/Netty-核心组件/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。