spring cloud gateway 服务网关
api 主流网关有nginx、zuul、spring cloud gateway、linkerd等;spring cloud gateway构建于 spring 5+,基于 spring boot 2.x 响应式的、非阻塞式的 api。同时,它支持 websockets,和 spring 框架紧密集成,用来代替服务网关zuul,开发体验相对来说十分不错。
spring cloud gateway 是 spring cloud 微服务平台的一个子项目,属于 spring 开源社区,依赖名叫:spring-cloud-starter-gateway。
zuul 是 netflix 公司的开源项目,spring cloud 在 netflix 项目中也已经集成了 zuul,依赖名叫:spring-cloud-starter-netflix-zuul。
api 网关
api 网关出现的原因是微服务架构的出现,不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求,如果让客户端直接与各个微服务通信,会有以下的问题:
以上这些问题可以借助 api 网关解决。api 网关是介于客户端和服务器端之间的中间层,所有的外部请求都会先经过 api 网关这一层。也就是说,api 的实现方面更多的考虑业务逻辑,而安全、性能、监控可以交由 api 网关来做,这样既提高业务灵活性又不缺安全性。
使用 api 网关后的优点如下:
spring cloud gateway的特征
快速上手
spring cloud gateway 网关路由有两种配置方式:
在配置文件 yml 中配置
通过@bean自定义 routelocator,在启动主类 application 中配置
这两种方式是等价的,建议使用 yml 方式进配置。
1.pom.xml maven依赖
<parent> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-parent</artifactid> <version>2.1.7.release</version> <relativepath/> <!-- lookup parent from repository --> </parent> <dependencymanagement> <dependencies> <dependency> <groupid>org.springframework.cloud</groupid> <artifactid>spring-cloud-dependencies</artifactid> <version>greenwich.release</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencymanagement> <dependencies> <!--spring cloud gateway 是使用 netty+webflux 实现因此不需要再引入 web 模块--> <dependency> <groupid>org.springframework.cloud</groupid> <artifactid>spring-cloud-starter-gateway</artifactid> </dependency> </dependencies> <build> <plugins> <plugin> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-maven-plugin</artifactid> </plugin> </plugins> </build>
2.application.yml配置
server: port: 8080 spring: cloud: gateway: routes: - id: easy_route # 我们自定义的路由 id,保持唯一 uri: https://github.com # 目标服务地址 predicates: # 路由条件,predicate 接受一个输入参数,返回一个布尔值结果。该接口包含多种默认方法来将 - path=/smltq/spring-boot-demo
上面这段配置的意思是,配置了一个 id 为 easy_route 的路由规则,当访问地址 http://localhost:8080/smltq/spring-boot-demo时会自动转发到地址: 。
3.配置完成启动项目
在浏览器访问进行测试,当我们访问 http://www.lhsxpumps.com/_localhost:8080/smltq/spring-boot-demo 时会展示如下页面:
资料
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。
如对本文有疑问, 点击进行留言回复!!
详解SpringBoot修改启动端口server.port的四种方式
网友评论