微服务 – Spring Cloud – Gateway
  Eo7GKm3ms3Sh 2023年11月02日 60 0


微服务 – Spring Cloud – Gateway


文章目录

  • 微服务 – Spring Cloud – Gateway
  • Api 网关 (Api Gateway )
  • 主要功能
  • 重要概念
  • Gateway 搭建
  • 1、引入pomx依赖
  • 2、配置文件
  • 3、主启动类


Api 网关 (Api Gateway )

微服务可能分布在不同的主机上,这样有许多缺点:前端需要硬编码调用不同地址的微服务很麻烦;存在跨域访问的问题;微服务地址直接暴露是不安全的。还有所以需要为前端提供一个统一的访问入口。Gateway 就是用于解决以上问题的框架。

主要功能

  • 路由转发
  • 负载均衡
  • 安全认证
  • 日志记录
  • 数据转换

重要概念

  • Filter(过滤器)

和Zuul的过滤器在概念上类似,可以使用它拦截和修改请求,并且对上游的响应,进行二次处理。过滤器为org.springframework.cloud.gateway.filter.GatewayFilter类的实例

  • Route(路由)

网关配置的基本组成模块,和Zuul的路由配置模块类似。一个Route模块由一个 ID,一个目标 URI,一组断言和一组过滤器定义。如果断言为真,则路由匹配,目标URI会被访问

  • Predicate(断言)

这是一个 Java 8 的 Predicate,可以使用它来匹配来自 HTTP 请求的任何内容,例如 headers 或参数。断言的输入类型是一个 ServerWebExchange

Gateway 搭建

1、引入pomx依赖

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>

2、配置文件

http://localhost:8001 位另一个微服务payment的uri地址。

server:
  port: 9527

Spring:
  application:
    name: cloud-gateway
  cloud:
    gateway:
      routes:
        - id: payment_routh
          uri: http://localhost:8001
          predicates:
            - Path = /payment/get/**

        - id: payment_routh2
          uri: http://localhost:8001
          predicates:
            - Path = /payment/lib/**


eureka:
  instance:
    hostname: cloud-gateway-service
  client:
    service-url:
      register-with-eureka: true
      fetch-registry: true
      defaultZone: http://eureka7001.com:7001/eureka/

3、主启动类

@SpringBootApplication
@EnableEurekaClient
public class GatewayMain9527 {

    public static void main(String[] args) {
        SpringApplication.run(GatewayMain9527.class, args);
    }

}

4、测试

通过访问网关来访问payment服务的接口

访问 http://localhost:9527/payment/get/1 代替原来的 http://localhost:8001/payment/get/1

{"code":200,"message":"查询成功, serverPort: 8001","data":{"id":1,"serial":"jeffcail00001"}}


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
Eo7GKm3ms3Sh