【alibaba-cloud】Gateway网关

什么是微服务网关?

微服务网关是整个微服务API请求的入口,可以实现日志拦截,权限控制,解决跨域问题,限流,熔断,负载均衡,黑名单与白名单拦截,授权等。

过滤器和网关的区别

过滤器用于拦截单个服务,网关拦截整个的微服务

Zuul和Gateway有哪些区别

Zuul网关属于Netfix公司开源的产品属于第一代微服务网关。

gateway属于SpringCLoud自研发的第二代微服务网关。

相比来说SpringCloudGateway性能比zuu性能好。

注意

zuul是基于Spring5构建的,能够实现响应式非阻塞式的api,支持长连接,能够更好的整合Spring体系的产品。

微服务网关的应用是在这个博客搭建的服务端和客户端的基础上搭建的https://blog.csdn.net/wangyunzhao007/article/details/106895672

微服务网关的使用

在ipenFeign下简历gateway子工程

pom文件

    
        
            org.springframework.cloud
            spring-cloud-starter-gateway
            2.0.0.RELEASE
        
    

启动项

@SpringBootApplication
@EnableDiscoveryClient
public class AppGateWay {
    public static void main(String[] args) {
        SpringApplication.run(AppGateWay.class);
    }
}

配置文件

 

spring:
  application:
    name: gateway
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

    gateway:
      routes:
        - id: my-customer
          uri: lb://customer-service  #转发的服务,lb代表负载均衡,使用以后必须加filters。
          filters:
            - StripPrefix=1
          predicates:
            - Path=/customer-service/**  #拦截的路径
        - id: my-order
          uri: lb://order-sevice
          filters:
            - StripPrefix=1
          predicates:
            - Path=/order-sevice/**
        - id: test
          uri: http://www.baidu.com/  #转发到百度
          predicates:
            - Path=/test/**   #拦截到路径有test
      discovery:
        locator:
          enabled: true
server:
  port: 8090

 启动项目后,可能会出现下面的问题,原因是gateway不能有spring-boot-starter-web的依赖,因为服务端和客户端都需要这个依赖,我就在父工程加了,但是网关不需要这个,加了会有问题。我再上篇博客中已经修改,将依赖spring-boot-starter-web移动到各个子项目中。

然后启动我们的网关和服务端、客户端。在nacos中可以看到

【alibaba-cloud】Gateway网关_第1张图片

 然后我们在浏览器输入http://localhost:8090/test/,会自动跳转到百度。

然后我们在浏览器中输入http://localhost:8090/customer-service/getUser,会调用我们服务端的接口,结果如下

在浏览器我们输入http://localhost:8090/order-sevice/orderFeignToCustomer,会调用我们的客户端接口,结果如下:

 

除此之外还有其他的匹配规则,这种是将时间在2017年1月20后17点42分47秒之后的请求全部转发到百度。

        - id: AfterTime
          uri: http://www.baidu.com/
            ###匹配规则
          predicates:
            - After=2017-01-20T17:42:47.789-07:00[America/Denver]

 注意

在做路由转发的时候,他的匹配规则是从上到下的,因为现在是2020年,我把按照时间转发的放到配置文件的最下方,只要符合上边的要求,就会走上边的转发,最后再走时间的转发。

当我把按照时间去匹配的规则放到第一个,我通过网关去访问客户端可服务端都是不行,都被转发到的百度。

由此可见,默认的匹配规则是由上到下的,上边匹配规则满足了,就不会走下边匹配规则。

本章代码资源:

https://download.csdn.net/download/wangyunzhao007/12550683

 

 

你可能感兴趣的:(Spring,Cloud学习)