SpringBoot项目中使用Netty替换Tomcat,Undertow等Web容器

目前工作中负责一个独立微服务系统,使用了Spirngboot构建,有一个定时任务系统会通过http每隔10秒的频率请求这个系统,为了使微服务系统更加轻量级,提高性能,所以打算移除SpringMvc相关组件以及Tomcat,Jetty,Undertow等Web容器,使用Netty构建HttpServer来实现轻量级的RestfulAPIs。先看图:

1.首先Springboot关闭Web功能


SpringBoot项目中使用Netty替换Tomcat,Undertow等Web容器_第1张图片
image.png

2.NettyServer配置


SpringBoot项目中使用Netty替换Tomcat,Undertow等Web容器_第2张图片
image.png

3实现IFunctionHandler 也就是SpirngMvc的Controller


SpringBoot项目中使用Netty替换Tomcat,Undertow等Web容器_第3张图片
image.png

当然也支持 path和requestboyd传递参数的方式,分别如下


SpringBoot项目中使用Netty替换Tomcat,Undertow等Web容器_第4张图片
image.png
SpringBoot项目中使用Netty替换Tomcat,Undertow等Web容器_第5张图片
image.png

4 OK 我们来启动Spirngboot


SpringBoot项目中使用Netty替换Tomcat,Undertow等Web容器_第6张图片
image.png

5 国际惯例 Hello world


SpringBoot项目中使用Netty替换Tomcat,Undertow等Web容器_第7张图片
image.png
SpringBoot项目中使用Netty替换Tomcat,Undertow等Web容器_第8张图片
image.png

优点
1 netty使用多路复用技术大幅提升性能
2 减少web容器依赖,减少jar包体积
3 灵活配置简单,适合所有需要提供restful接口的微服务应用
4 完全按照springmvc的模式开发配置

缺点
1还没能做到和spirng DispatcherServlet那么强大到支持各种规则的path配置
2获取各种参数还需要在controller里面通过HttpRequest来获取,没有springmvc自动注入参数方便

有问题欢迎随时去Github反馈 Thanks

OK最后代码传送门
https://github.com/farsunset/netty-http-server

你可能感兴趣的:(SpringBoot项目中使用Netty替换Tomcat,Undertow等Web容器)