springboot 嵌入式的web容器的的选择
springboot 默认内置tomcat
- 可以替换 undertow、jetty、netty
tomcat
- tomcat 默认200最大线程
- 完整实现了JEE容器和serlet规范
- tomcat6以后支持Jdk1.4的NIO
- 用于完整支持了javaee 因此比较笨重和重量级
- 很多高并发会替换成undertow
undertow
- 这个是红帽2012 开源出来的一个异步嵌入式容器
- 因为Red Hat 公司收购了 JBoss,undertow是属于JBoss社区
- 同样实现了Servlet 3.0 规范和云原生的支持更加完善
- 通常和webflux一起配合使用
- 支持异步IO
Jetty
- 这个是最早的web容器 1996发布第一个 http容器版本
- 2000 Jetty 3.0 支持Servlet 可以运行jsp和 Servlet
- 2004 Jetty 5.0 重大的架构改进和性能优化 成为社区明星之一
- 2010 Jetty 7.0 对 Servlet 3.0 规范的支持,并增强了对异步请求处理的能力
- 目前属于Eclipse 基金会 也是一个开源的java组织
netty
- netty 是 JBoss Remoting开发之一开发出来的
- 2009 开源第一个版本
- 2011 Netty 3.0发布引入了一些重大的改进和新特性,如ChannelPipeline、ChannelHandler等概念
- Netty 3.0是重要版本,奠定了其在网络编程领域的地位
- 2013 Netty 4.0发布,这是一个里程碑式的版本 ,完全重写的API和内部架构、成为Netty发展历程中的一个重要转折点
- Netty 4.0 采用异步非阻塞IO模型、零拷贝技术、内存池技术、事件驱动和多路复用技术、性能调优和优化等手段,以及与硬件的紧密结合
以上四个方案不难看出
- Jboss 作为EJB企业的应用的实力 netty、undertow
- apache 和 eclipse 基金会的上面明显缺少对于高并发和大规模连接的网络应用场景的能力
以上方案中 undertow 、Jetty 、tomcat 开箱即用
- 但是 Netty 由于没有实现servlet 规范 因此和springmvc 不兼容
- 需要 配合 Spring Webflux 替换掉springmvc
- 如果仍然需使用 springmvc 则需要手动实现 HTTP 请求和响应,并将它们转发给 Spring MVC 控制器和服务。通过额外的代码来处理请求映射、参数解析、异常处理等。
本文来自博客园,作者:vx_guanchaoguo0,转载请注明原文链接:https://www.cnblogs.com/guanchaoguo/p/18150333