`

netty 加入自定义jni epoll实现

    博客分类:
  • java
阅读更多

java 和netty epoll实现

Java NIO根据操作系统不同, 针对nio中的Selector有不同的实现:

所以毋须特别指定, 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实现自定义协议 本文主要介绍了使用Netty框架在Springboot项目中实现自定义协议的方法。自定义协议是指在网络通信中,使用特定的数据格式来传输数据,以满足特定的业务需求。在本文中,...

    Netty+自定义Protobuf编解码器

    将Netty与自定义的Protobuf编解码器结合使用,可以实现更高效、更灵活的网络通信。 首先,让我们详细了解一下Netty中的编解码器。在Netty中,编解码器是处理网络数据流的关键组件,它们负责将原始字节流转换为易于...

    netty自定义rpc实现

    综上所述,实现一个基于Netty的自定义RPC框架,需要理解Netty的异步I/O模型,设计合理的RPC通信协议,利用Zookeeper进行服务注册与发现,同时考虑服务的高可用性和性能优化。通过分析提供的压缩包文件,我们可以深入...

    netty搭建tcp自定义协议websocket服务器, 支持ssl demo

    netty搭建tcp自定义协议websocket服务器, 支持ssl demo. 适用于netty初学者, netty搭建自定义协议, websocket服务器, 聊天室, 一个端口集成多协议,包括ssl协议

    Netty之自定义编解码器.zip

    在Java网络编程中,Netty是一个高性能、异步事件驱动的网络应用框架,它极大地简化..."Netty之自定义编解码器.zip"中的内容很可能会涵盖这些知识点的详细实现和示例,对于深入学习和应用Netty来说是非常有价值的资源。

    netty-transport-classes-epoll-4.1.74.Final-API文档-中文版.zip

    赠送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;...

    netty实现自定义rpc.zip

    本项目"Netty实现自定义RPC"旨在教你如何利用Netty构建自己的RPC框架。 首先,我们需要理解RPC的基本原理。RPC的核心是将远程服务调用的过程透明化,使它看起来就像是本地方法调用一样。这涉及到序列化、网络通信和...

    Netty4编写服务器客户端,自定义编解码,发送自定义消息

    在这个项目中,我们将深入理解如何利用 Netty 4 来编写服务器和客户端,实现自定义的消息编解码,并进行通信。 首先,我们要创建一个自定义的消息类。这个消息类通常会包含必要的字段,比如消息头、消息体等,以...

    netty自定义数据包协议

    本文将深入探讨如何在Netty中通过自定义数据包协议和解码器来解决这些问题。 首先,我们要理解什么是拆包和粘包。在网络通信中,由于数据是以字节流的形式传输,如果发送方连续发送多个小的数据包,接收方可能会一...

    netty-transport-classes-epoll-4.1.73.Final-API文档-中英对照版.zip

    赠送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-transport-classes-epoll-4.1.73.Final-API文档-中文版.zip

    赠送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中Marshalling编解码自定义栈应用

    本文将深入探讨 Marshalling 编解码器在 Netty 中的应用及其自定义实现。 Marshalling 是一种序列化技术,它能够将 Java 对象转换为字节流,便于在网络中传输,同时也可以将字节流恢复为原来的对象。在 Netty 中,...

    netty自定义协议

    netty实现自定义协议通信,形如: /** * socketHeader定义 40 + 4+ 100 +4 * 序列号 40bytes 不足前面补0 * 来源 4bytes * 指令 8bytes 不足前面补0 形如0001, 0000:心跳 * 长度 4bytes */ 心跳连接 运行 ...

    netty-transport-native-epoll-4.1.36.Final-linux-x86_64.jar

    java运行依赖jar包

    使用netty自定义rpc通信框架

    本项目是基于Netty 4.0实现的自定义RPC通信框架,旨在为Java开发者提供一种高效、灵活的远程服务调用解决方案。 首先,我们来深入理解Netty的基本概念。Netty的核心是其NIO(非阻塞I/O)模型,它使用了Reactor模式...

    netty-transport-native-epoll-4.0.27.Final.jar

    netty-transport-native-epoll-4.0.27.Final.jar

    netty学习demo(初学代码结构+固定消息+自定义分隔符+自定义协议+心跳+http+序列化压缩+自动断线)

    自定义协议实现可能涉及更复杂的编码和解码过程。这通常需要你编写自己的`ChannelInboundHandler`和`ChannelOutboundHandler`,以便在`ChannelPipeline`中处理特定协议的逻辑。 心跳机制是保持连接活跃的重要部分,...

    netty实例与自定义实现RPC代码

    本实例将探讨如何使用Netty来实现自定义的RPC框架。 在RPC框架中,主要包括三个组件:服务提供者(RPC-Provider)、服务消费者(RPC-Consumer)和公共服务接口(RPC-Common)。让我们逐一解析这些组件: 1. **服务...

    netty-transport-native-epoll-4.1.5.Final.jar

    java运行依赖jar包

    netty-transport-native-epoll-4.1.15.Final-linux-x86_64.jar

    java运行依赖jar包

Global site tag (gtag.js) - Google Analytics