一、背景
楼主所在的团队全面拥抱了Spring Cloud体系,但由于历史原因,以及使用了腾讯云TSF的老版本,加上开发自维护的基础工具包一掺和,所有项目使用的Spring Cloud都停留在 2.1.2.RELEASE 版本,所以Spring Cloud Gateway(后面简称SCG)使用的是 2.1.2.RELEASE 版本。我们知道 SCG 是基于 Spring WebFlux 而构建的专属网关系统,而 Spring WebFlux 则是和 Spring MVC 一样,基于 Spring Web 而构建,而 Spring WebFlux 则是因为将 Spring MVC “Reactor化”成本很高而且不好维护而生成的新产品。17年的 Spring Web 就已经支持了响应流,我们可以看下其Gradle文件:
dependencyManagement {
imports {
mavenBom "io.projectreactor:reactor-bom:${reactorVersion}"
mavenBom "io.netty:netty-bom:${nettyVersion}"
mavenBom "org.eclipse.jetty:jetty-bom:${jettyVersion}"
}
}
其中就有reactor-bom。说实话,当时在针对网关选型时,抛弃了Zuul而选择SCG,但没想到只能用SCG的 2.1.2.RELEASE 版本,该版本于19年6月发布,加上本来就是Spring Cloud家族中的新星,一切都在快速迭代和升级中,所以虽然距现在不到两年,但实际上SCG的模块已经进行大幅调整(新版本连spring-cloud-