SpringCloud Hoxton——Gateway服务网关

1.开篇

Gateway是在Spring生态系统之上构建的API网关服务,基于Spring 5,Spring Boot 2和 Project Reactor等技术。
Gateway旨在提供一种简单而有效的方式来对API进行路由,以及提供一些强大的过滤器功能, 例如:熔断、限流、重试等

SpringCloud Gateway 是 Spring Cloud 的一个全新项目,基于 Spring 5.0+Spring Boot 2.0 和 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。

SpringCloud Gateway 作为 Spring Cloud 生态系统中的网关,目标是替代 Zuul,在Spring Cloud 2.0以上版本中,没有对新版本的Zuul 2.0以上最新高性能版本进行集成,仍然还是使用的Zuul 1.x非Reactor模式的老版本。而为了提升网关的性能,SpringCloud Gateway是基于WebFlux框架实现的,而WebFlux框架底层则使用了高性能的Reactor模式通信框架Netty。

Spring Cloud Gateway的目标提供统一的路由方式且基于 Filter 链的方式提供了网关基本的功能,例如:安全,监控/指标,和限流。

Gateway能干嘛?(反向代理、鉴权、流量控制、熔断、日志监控等)

Gateway三大核心概念:(路由转发 + 执行过滤链)

  • Route(路由):路由是构建网关的基本模块,它由ID、目标URI、一系列的断言和过滤器组成,如果断言为true则匹配该路由。
  • Predicate(断言):参考Java8的java.util.function.Predicate,开发人员可以匹配HTTP请求中的所有内容,如果请求与断言相匹配则进行路由。
  • Filter(过滤):指的是Spring中GatewayFilter的实例,使用过滤器,可以在请求被路由前或者之后,对请求进行修改。


2.项目源码

github源码地址:https://github.com/2656307671/SpringCloud-Hoxton-Gateway

gitee源码地址:https://gitee.com/szh-forever-young/SpringCloud-Hoxton-Gateway

启动7001、8001、8002、9527。

在没有添加网关的时候,我们访问url是:http://localhost:8001/payment/get/1;添加网关之后,url是:http://localhost:9527/payment/get/1uname=szh

因为我们后来添加了相关断言和过滤器,所以测试在浏览器中输入 http://localhost:9527/payment/lbuname=szh

eureka7001这个注册中心中,可以看到我们的两个微服务已经注册进来了。

添加网关之后,再输入http://localhost:9527/payment/get/1则无法访问,此时会被过滤器给过滤拦截,需要根据我们自定义的业务逻辑,在后面加上uname参数。即url为 http://localhost:9527/payment/get/1uname=szh 才可以正常访问。

刷新页面,可以在serverPort中看到8001、8002交替访问,这是因为配置文件中的 uri协议lb表示启用Gateway的负载均衡功能,同时实现动态路由功能。

下面的 http://localhost:9527/payment/lbuname=szh 也是同样的道理。(9527就是套在8001、8002外的一层保护罩,如果断言、过滤器等相关配置信息不符合要求,则访问出错;想要成功访问,则必须请求url必须与断言、过滤器相匹配,才可进行路由)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值