java 和netty epoll实现
Java NIO根据操作系统不同, 针对nio中的Selector有不同的实现:
- macosx: KQueueSelectorProvider
- solaris: DevPollSelectorProvider
- Linux: EPollSelectorProvider (Linux kernels >= 2.6)或 PollSelectorProvider
- windows: WindowsSelectorProvider
所以毋须特别指定, Oracle jdk会自动选择合适的Selector。 如果想设置特定的Selector,可以属性:
1
|
-Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.EPollSelectorProvider
|
Netty
自4.0.16起, Netty为Linux通过JNI的方式提供了native socket transport.
使用native socket transport很简单,只需将相应的类替换即可。
- NioEventLoopGroup → EpollEventLoopGroup
- NioEventLoop → EpollEventLoop
- NioServerSocketChannel → EpollServerSocketChannel
- NioSocketChannel → EpollSocketChannel
既然如上面所说, Oracle JDK在Linux已经默认使用epoll方式, 为什么netty还要提供一个基于epoll的实现呢?
这是stackoverflow上的一个问题。 Netty的核心开发者 Norman Maurer这么说的:
- Netty的 epoll transport使用 epoll edge-triggered 而 java的 nio 使用 level-triggered.
- 另外netty epoll transport 暴露了更多的nio没有的配置参数, 如 TCP_CORK, SO_REUSEADDR等等
相关推荐
Netty学习笔记_Springboot实现自定义协议.docx Netty学习笔记_Springboot实现自定义协议.docx Netty学习笔记_Springboot实现自定义协议.docx
netty实现自定义rpcnetty实现自定义rpcnetty实现自定义rpcnetty实现自定义rpcnetty实现自定义rpc
netty搭建tcp自定义协议websocket服务器, 支持ssl demo. 适用于netty初学者, netty搭建自定义协议, websocket服务器, 聊天室, 一个端口集成多协议,包括ssl协议
自定义Protobuf的编解码器,和官方的只能发送一个消息格式比较,能发送多个protobuf对象,protobuf文件夹下有生成protobuf的工具和使用说明
Netty之自定义编解码器
自定义rpc
赠送jar包:netty-transport-classes-epoll-4.1.74.Final.jar; 赠送原API文档:netty-transport-classes-epoll-4.1.74.Final-javadoc.jar; 赠送源代码:netty-transport-classes-epoll-4.1.74.Final-sources.jar;...
赠送jar包:netty-transport-classes-epoll-4.1.73.Final.jar; 赠送原API文档:netty-transport-classes-epoll-4.1.73.Final-javadoc.jar; 赠送源代码:netty-transport-classes-epoll-4.1.73.Final-sources.jar;...
netty自定义数据包协议示例 ,自定义解码器译码器 解决拆包粘包问题
根据给定的消息协议,自己定义一个消息类,编写好服务端与客户端,自定义好编解码器,在客户端发送此消息,服务端获取消息并向客户端发送同样格式的消息;导入Eclipse maven项目运行即可跑通。
netty实现自定义协议通信,形如: /** * socketHeader定义 40 + 4+ 100 +4 * 序列号 40bytes 不足前面补0 * 来源 4bytes * 指令 8bytes 不足前面补0 形如0001, 0000:心跳 * 长度 4bytes */ 心跳连接 运行 ...
java运行依赖jar包
netty实例与自定义实现RPC代码
赠送jar包:netty-transport-classes-epoll-4.1.73.Final.jar; 赠送原API文档:netty-transport-classes-epoll-4.1.73.Final-javadoc.jar; 赠送源代码:netty-transport-classes-epoll-4.1.73.Final-sources.jar;...
NULL 博文链接:https://shihuan830619.iteye.com/blog/2265568
java运行依赖jar包
利用netty4.0定义的rpc通信框架
#### 自定义协议 | 魔数 2byte | 指令类型 1byte | 数据长度 4byte | 数据内容 (长度不定) | 协议的编码、解码工作由`MyMessageEncoder`,`MyMessageDecoder`两个类完成,在tcp传输过程中的拆、粘包问题使用`...
java运行依赖jar包
赠送jar包:netty-transport-classes-epoll-4.1.74.Final.jar; 赠送原API文档:netty-transport-classes-epoll-4.1.74.Final-javadoc.jar; 赠送源代码:netty-transport-classes-epoll-4.1.74.Final-sources.jar;...