Spring Cloud 2023 新特性:同步网关
网关不支持传统 Servlet 容器
Spring Cloud Gateway 需要运行在提供的 Netty 运行时。它不能在传统的 Servlet 容器中工作,也不能在构建为 WAR 时工作。WebFlux 使用了异步非阻塞的编程模型,相较于传统的 MVC Servlet 需要理解和适应新的编程范式和响应式编程概念,因此学习曲线可能较陡峭。
如果在 spring-cloud-gateway 引入了 tomcat 等传统容器会抛出如下异常:
14 Caused by: org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat 15 at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:124) ~[spring-boot-2.1.6.RELEASE.jar:2.1.6.RELEASE] 16 at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.<init>(TomcatWebServer.java:86) ~[spring-boot-2.1.6.RELEASE.jar:2.1.6.RELEASE] 17 at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getTomcatWebServer(TomcatServletWebServerFactory.java:414) ~[spring-boot-2.1.6.RELEASE.jar:2.1.6.RELEASE] 18 at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getWebServer(TomcatServletWebServerFactory.java:178) ~[spring-boot-2.1.6.RELEASE.jar:2.1.6.RELEASE] 19 at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.createWebServer(ServletWebServerApplicationContext.java:179) ~[spring-boot-2.1.6.RELEASE.jar:2.1.6.RELEASE] 20 at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:152) ~[spring-boot-2.1.6.RELEASE.jar:2.1.6.RELEASE] 21 ... 8 common frames omitted
MVC Servlet 支持
在 SpringCloud 2023 版本(Spring Cloud Gateway 4.1)版本,官方提供了对 MVC Servlet 的支持,可以使用 tomcat 等容器替代 netty ,使用同步的 Servlet Filter 代替复杂的事件流的异步编程风格。
快速开始
-
springboot 3.2
-
spring clouod 2023
<dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> </dependency> <dependency> <groupid>org.springframework.cloud</groupid> <artifactid>spring-cloud-starter-gateway-mvc</artifactid> </dependency>
配置转发规则
所有客户端请求 127.0.0.1:8080 转发至 pig4cloud.com
spring: cloud: gateway: mvc: routes: - id: pig uri: https://pig4cloud.com predicates: - Path=/
注意:如果使用 gateway-mvc ,如有配置规则需要增加 mvc 这个层级的配置不然无效
如何自定义网关 filter
打开 Spring Cloud Gateway 的官网,发现针对 MVC 支持的部分没有提供过多的参考资料。不过按笔者看来完全不需要参考其他资料,只要按照 Spring MVC 项目中如何编写 Filter 的方法,就可以实现 Gateway 的开发。
注意指定自定义 Filter 的顺序,Spring Cloud Gateway Filter 执行顺序与 WebFlux Filter 保持一致。
总结
Spring Cloud Gateway 对于同步 MVC 的支持,早在社区中就已提出(毕竟最早使用的都是 Zuul 1.x 切换过去,原本就是 MVC 的实现)。随着 Java 21 正式发布,虚拟线程的出现无形中对同步 MVC 提供了性能加持。官方在适配 Java 21 后,会正式发布相关的版本,Spring Cloud Gateway 的 MVC 版本将简化原有的网关逻辑开发难度,极大地丰富了网关应用。
> > PIG 微服务已支持 SpringBoot3.2 、SpringCloud 2023
> 源码下载: https://gitee.com/log4j/pig.git -b 2023</init>

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
一图看懂CodeArts Inspector 三大特性,带你玩转漏洞管理服务
本文分享自华为云开发者联盟公众号《一图看懂华为云CodeArts Inspector三大特性,带你玩转漏洞管理服务》。 华为云漏洞管理服务CodeArts Inspector是面向软件研发和服务运维提供的一站式漏洞管理能力,通过持续评估系统和应用等资产,内置风险量化管理和在线风险分析处置能力,帮助组织快速感应和响应漏洞,并及时有效地完成漏洞修复工作,更好地应对潜在的安全威胁。 更多详情请戳此处了解 点击关注,第一时间了解华为云新鲜技术~
- 下一篇
【信创】 JED on 鲲鹏(ARM) 调优步骤与成果 | 京东云技术团队
项目背景 基于国家对信创项目的大力推进,为了自主可控的技术发展,基础组件将逐步由国产组件替代,因此从数据库入手,将弹性库JED部署在 国产华为鲲鹏机器上(基于ARM架构)进行调优,与Intel (X86)进行性能对比。 物理机配置 处理器厂商 架构设计 CPU型号 CPU 睿频 内存频率 操作系统 华为 ARM kunpeng920-7262C 128C 无 3200 MT/s 欧拉 Intel X86 platium-8338C-3rd 128C 开启 3200 MT/s centos 8 Intel X86 platium-8338C-3rd 128C 开启 3200 MT/s centos 8 数据库配置 部署机房 廊坊 部署方式 容器 网关配置 16C/12G 磁盘:/export:30G 数据库架构 1个集群,一主一从 数据库配置 8C/24G 磁盘:/export:512G 调优成果 调优前:背景压力50%时,JED on 鲲鹏 读性能是 Intel 的 58%,写性能为68% 调优后: JED on 鲲鹏读性能至 Intel的99%,写性能至 Intel 的 121%,读...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库