对比版本netty4.1 , jetty9.3
1.socket连接处理
jetty 使用AbstractConnector.Acceptor来处理连接, 线程数=Math.max(1, Math.min(4,cores/8)), 但是自己不new线程而是从共享的QueuedThreadPool中拿线程来执行
netty 使用一个单独的NioEventLoopGroup来处理。 NioEventLoopGroup是一个Selector线程池, 其中每个NioEventLoop都表示一个Selector线程。
默认会初始化(cores*2)个NioEventLoop, 但是绑定一个端口只会使用一个NioEventLoop来处理该端口的所有连接
2.IO读写
jetty 新来的SocketChannel会分配(SelectorManager.chooseSelector)一个ManagedSelector来监听IO数据(ManagedSelector.SelectorProducer.produce),
同时创建一个EndPoint对象来具体读写数据.
具体是通过SelectChannelEndPoint.fill读取IO数据,通过SelectChannelEndPoint.flush写入IO数据. 一个ManagedSelector内部有一个Selector实例可以注册多个SocketChannel,
netty 使用一个单独的NioEventLoopGroup来处理, 新来的socketchannel根据一定的策略(GenericEventExecutorChooser or
PowerOfTowEventExecutorChooser)会分配一个NioEventLoop来处理IO读写并一直使用该NioEventLoop进行IO读写。 默认会初始化(cores*2)个NioEventLoop, 一个socketchannel的读写会在同一个NioEventLoop线程下处理
3.业务逻辑处理
jetty 使用QueuedThreadPool 处理
netty 需要用户自己实现线程池处理, 不推荐使用netty的IO读写线程池来处理业务逻辑
总结
netty有一个处理客户端连接的线程池(parentGroup)(一般只会使用一个线程),一个处理IO读写的线程池(childGroup),同时需要用户自己实现一个处理业务逻辑的线程池
Selector实例和线程是绑定在一起的表现为NioEventLoop, 也就是说一个NioEventLoop表示一个线程和一个Selector实例
jetty有一个共享的线程池QueuedThreadPool,有一个共享的ManagedSelector(内部有一个Selector实例)池SelectorManager.
socket连接处理(长期占用死循环不退AbstractConnector.Acceptor.run),IO读写和业务逻辑处理共享同一个线程池QueuedThreadPool,
socket连接处理和IO读写共享同一个ManagedSelector池SelectorManager。默认 (cores+1/2)个ManagedSelector实例
相关推荐
websocket+tomcat+jetty+netty
“#Netty_Jetty”
作为一个学Java的,如果没有研究过...如果你想知道Nginx是怎么写出来的,如果你想知道Tomcat和Jetty是如何实现的,如果你也想实现一个简单的Redis服务器,那都应该好好理解一下Netty,它们高性能的原理都是类似的。
可以替代tomcat或jetty. 导包后一个@EnableNettyEmbedded注解即用.2.支持http请求聚合, 然后用 select * from id in (httpRequestList). 示例:com.github.netty.http.example.HttpGroupByApiController.java3.支持...
基于netty设计与实现的http服务器,王睿奇,詹舒波,HTTP协议是当下非常流行的应用层协议,不仅仅是用于HTML的传输,很多应用使用HTTP协议来进行服务通信,不同于tomcat,jetty这类功能完整�
入门篇:Jetty简单应用入门;TCP粘包拆包;定位符和定长解码器; 中级篇:编解码技术和常用的序列化框架(protobuf /java/Marshalling) 高级篇:Http协议开发; Netty 协议栈开发(数据结构定义,消息编解码,握手...
netty 新NIO框架 文档,在jetty项目中用到了该框架。 netty更注重IO读写,效率很高。更支持servlet1.0异步的websocket。值得一看
Jetty 一样,Netty 被设计为在进程内运行,当您想快速开始提供静态或动态内容,但不想或不需要使用 IIS 的开销时,这非常有用。 任何您可以托管的内容,您都应该可以托管在 Netty 中。 这包括: ASP.NET 网页 使用 ...
java实现校园一卡通源码 《Netty4核心原理与手写RPC框架实战》 ...★如果你想知道Tomcat和Jetty是如何实现的, ★如果你也想实现一个简单的Redis服务器, ...... 那都应该好好研究一下Netty,它们高性能的原理都是类似
netty-livereload 协议实现基于 Netty websocket 实现。 这个项目的目标是提供一个尽可能轻量级的 livereload Java 实现。 它受到基于 Jetty websockets 的强烈启发。Livereload 简而言之Livereload 是 Web 开发人员...
可以运行,适合学习。
它支持Netty + Thrift,还支持Jetty或Tomcat + Restful。 它将与其他项目集成以提供: 动态配置 服务注册,负载均衡和路由规则 重试和短路 指标监控器 分布式跟踪日志 除了提供Java智能客户端之外,它还将提供...
服务器:Plain Java ServerSocket 和 Jetty(可以选择) 对于每个请求创建一个新连接,服务器响应并关闭连接。 预期:客户端使用响应并关闭连接。 实际:所有其他连接在使用响应之前都会关闭。 Wireshark 在线路...
在类路径上没有tomcat(jetty,wildfly,weblogic或任何其他servlet或应用程序容器)依赖项。* 用于请求处理的默认线程数由使用Reactor Netty的spring boot确定,该启动使用Netty的默认值。 用于将传入的json编码...
注意:Jetty和Netty应该在同一服务器上运行,因为websocket URL是使用Jetty的主机名构建的。 这在客户端javascript(webRtcDemo.js)中进行了硬编码。 同样,Netty服务器的端口也应为9090,因为它也
掌握两种方式的TLS :locked_with_key: 本教程将引导您完成通过TLS身份验证保护应用程序的过程,仅允许某些用户基于其证书进行访问。 这意味着您可以选择允许哪些用户调用您的应用程序。 此示例项目演示了服务器和...
净值将核心库绑定到Netty通道处理程序,并提供嵌入式服务器。净负荷为使用netty的多部分帖子提供提取器。规格2 提供使用测试Intent的。上载使用Servlet API为多部分帖子提供提取器。json4s 提供提取器以使用jsonp和...
其他安全性插件正在用Tomcat,Jetty或其他繁琐的基于XML的JEE疯狂替代Elasticsearch的高性能,基于Netty的嵌入式REST API。 该插件只是一个轻量级的纯Java过滤层。 甚至SSL层也作为额外的Netty传输处理程序提
关键词:J2EE、Java、nodejs、OSGi、JSP、struts、spring、spring、MVC、mongodb、radis、zookeeper、netty、Mina、jetty、Tomcat、Weblogic、WebSphere、ORM、云、nashron、JDK (website: http://cjlns.com) 《面向...
netty-3.10.6.Final.jar nimbus-jose-jwt-4.41.1.jar paranamer-2.3.jar protobuf-java-2.5.0.jar servlet-api-2.5.jar slf4j-api-1.7.25.jar slf4j-log4j12-1.7.25.jar snappy-java-1.0.5.jar stax-api-1.0-2.jar ...