微服务(分布式)组件--Gateway网关

 

1.官网:https://spring.io/projects/spring-cloud-gateway#learn 

2.API网关在项目中的作用:

(1)可以动态路由前端的请求到各个服务,网关可以实时感知注册中心某个服务是上线还是下线,总是能将请求路由到正确的位置。

(2)每个请求过来后期可能需要加上权限,鉴权,监控,如果将这些功能写在各个服务上,这样出现很多重复开发,我们可以让客户端不直接请求各个服务,而是先去请求API网关,由网关代转给各个服务,可以在网关层对这些统一的功能进行处理。

3. 

3.gateway几个基本概念:

(1)Route:路由

(2)predicate:断言

(3)Filter: 过滤

请求到达网关,网关先利用断言来判断请求是否符合某个路由规格,如果符合,则将请求按路由规则路由到指定地方,去这些指定地方需要经过一系列Filter进行过滤。

4.在项目中创建一个网关模块,同时需要将网关注册到注册中心,这样网关才能发现其他服务是否在线。 (配置这些参照前面博客)

配置完后启动gateway网关模块:

这里报错数据库url地址没有配置,原因书引入了common中由mybatis中相关依赖,但网关模块不需要数据库连接,所以在启动类中可以排除数据库有关的自动配置:

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})

5.测试gateway的路由和断言:

在项目中bootsrap.application:

#当前服务的名字
spring.application.name=gulimail-gateway
spring.cloud.nacos.config.server-addr=127.0.0.1
spring.cloud.nacos.config.namespace=bc5f11a6-111d-4634-a599-5bfeab1c4942

在配置中心中:gulimail-gateway.yml:

spring:
  cloud:
    gateway:
      routes:
        - id: test_route
          uri: https://www.baidu.com
          predicates:
            - Query=url,baidu
        -id: qq_route
         uri: https://www.qq.com
         predicates:
           -Query=url,qq
    nacos:
      discovery:
        server-addr: 127.0.0.1
  application:
    name: gulimail-gateway
server:
  port: 88

然后启动项目:访问路径:localhost:88?url=baidu

会自动跳转到百度

Guess you like

Origin blog.csdn.net/kkkkkfffd/article/details/121083339