gateway

紧接上回 创建一个gateway的项目在这里插入图片描述
不用添加任何类
yml文件书写:

#bootstrap.yml文件
spring:
  cloud:
    ## Nacos认证信息
    nacos:
      config:
        username: nacos
        password: nacos
        context-path: /nacos
        server-addr: localhost:8848 # 设置配置中心服务端地址
        namespace:   # Nacos 配置中心的namespace。需要注意,如果使用 public 的 namcespace ,请不要填写这个值,直接留空即可
      server-addr: localhost:8848
====================================================================================
#application.yml文件
server:
  port: 9527
spring:
  application:
    name: springcloudAlibaba-gateway-9527
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest
    listener:
      simple:
        default-requeue-rejected: false #被拒绝后是否重新入队
        acknowledge-mode: manual #手动应答
  cloud:
    sentinel:
      transport:
        dashboard: localhost:8858 #sentinel服务器的位置
        port: 8719 #port是在应用对应的机器上启动一个 Http Server,该 Server 会与 Sentinel 控制台做交互。
        #比如 Sentinel 控制台添加了1个限流规则,会把规则数据 push 给这个 Http Server 接收,Http Server 再将规则注册到 Sentinel 中。
    alibaba:
      seata:
        tx-service-group: service-gateway-group
    gateway:
      discovery:
        locator:
          enabled: true
          lower-case-service-id: true # 请求服务是小写的时候改成true(默认为false时微服务必须是大写)
      routes:
        - id: provider
          uri: lb://nacos-provider  # 服务端 service_id
          predicates:
            - Path=/user/**
          filters:
            - StripPrefix=1  # 转发过滤前缀个数 就是上面的path中 为1 就过滤掉user这一个 再把后面的转发给其他服务器

seata:
  application-id: ${spring.application.name}
  tx-service-group: service-gateway-group
  service:
    grouplist:
      seata-server: localhost:。。。。
  registry:
    type: nacos
    nacos:
      server-addr: localhost:8848
  config:
    type: nacos
    nacos:
      server-addr: localhost:8848
feign:
  sentinel:
    enabled: true
management:
  endpoint:
    web:
      exposure:
        include: '*'

pom文件:

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--Snetinel 依赖-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>
        <!--SpringCloud ailibaba sentinel-datasource-nacos 后续做持久化用到-->
        <dependency>
            <groupId>com.alibaba.csp</groupId>
            <artifactId>sentinel-datasource-nacos</artifactId>
        </dependency>
        <!--引入 seata 依赖-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <!--引入 OpenFeign 的依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
            <version>2.2.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-loadbalancer</artifactId>
            <version>2.2.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
            <version>2.2.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
            <version>2.2.5.RELEASE</version>
        </dependency>
    </dependencies>

在这里插入图片描述
访问:http://localhost:9527/user/serverport
配置了filters:
- StripPrefix=1
他向我们的nacos-provider发送的请求为 http://locccalhost:9527/serverport

gateway的简单流程:

1.调用ConfigurationProperties注解生成我们的配置对象:
在这里插入图片描述
2.调用对应的AbstractRoutePredicateFactory生成的子类来测试我们的输入是否合理,就是下图predicates中的内容是否合理
在这里插入图片描述
在这里插入图片描述
3.网关过滤器(GatewayFilter),路径过滤器可以实现URL重写,通过重写URL可以实现隐藏实际路径提高安全性,易于用户记忆和输入,易于被搜索引擎收录等优点。
就是我们的配置文件中filter中的内容在这里插入图片描述
4.全局过滤器(GlobalFilter),主要做了请求的转发和负载均衡等功能的实现 它不用配置,会直接作用与所有的配置中。

详情介绍的博客地址

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值