前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Cloud 学习笔记(5) 网关 spring-cloud-gateway

Spring Cloud 学习笔记(5) 网关 spring-cloud-gateway

作者头像
张云飞Vir
发布2021-05-18 12:16:57
5400
发布2021-05-18 12:16:57
举报
文章被收录于专栏:写代码和思考

1. 背景

spring-cloud-gateway 是替代 zuul 的一个网关实现,本节我们学习它。

2.知识

spring-cloud-gateway 提供了一个建立在Spring生态系统之上的API网关,旨在提供一种简单而有效的方法路由到api,并为它们提供横切关注点,如:安全性、监控/指标和弹性等。

特性:

  • 动态路由
  • 路由匹配方式 支持 在Spring内置的处理程序映射
  • HTTP请求的路由匹配(路径、方法、报头、主机等)
  • 支持匹配路由的过滤器

过滤器是个很重要的组件,它可以修改下游HTTP请求和HTTP响应(添加/删除报头,添加/删除参数,重写路径,设置路径,Hystrix等…)

3. 示例

1、添加依赖

代码语言:javascript
复制
dependencies {
    implementation 'org.springframework.cloud:spring-cloud-starter-gateway'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
    implementation 'org.springframework.boot:spring-boot-starter-actuator'
    compileOnly group: 'org.projectlombok', name: 'lombok', version: '1.18.20'
    implementation group: 'com.google.code.gson', name: 'gson', version: '2.8.6'


}

配置文件

代码语言:javascript
复制
server:
  port: 9000

spring:
  application:
    name: api-gateway

  cloud:
    gateway:
      discovery:
        locator:
          enabled: true
          lower-case-service-id: true
      globalcors:
        corsConfigurations:
          '[/auth/**]':
            allowedOrigins: '*'
            allowedHeaders:
              - x-auth-token
              - x-request-id
              - Content-Type
              - x-requested-with
              - x-request-id
            allowedMethods:
              - GET
              - POST
              - OPTIONS
      routes:
        - id: auth-service
          uri: lb://auth-service
          predicates:
            - Path=/auth/**
          filters:
            - StripPrefix=1
        - id: hello-service-1
          uri: lb://hello-service-1
          predicates:
            - Path=/hello/**
          filters:
            - StripPrefix=1

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:1111/eureka/
  instance:
    prefer-ip-address: true

# 配置Gateway日志等级,输出转发细节信息
logging:
  level:
    org.springframework.cloud.gateway: debug

说明 这里配置了Eureka的客户端,将自己注册到Eureka,并从Eureka获得服务列表。

路由的配置 在 router 部分 有这个配置

代码语言:javascript
复制
          id: auth-service
          uri: lb://auth-service
          predicates:
            - Path=/auth/**
          filters:
            - StripPrefix=1

它描述了,来自 /auth/** 的地址,路由到 lb://auth-service 服务。我这里结合了 Eureka 使用,将会将请发发送到 在Eureka 里注册过的的名字叫做“auth-service”的服务实例。

StripPrefix=1 说明了要在 路由过程中处理掉第一个路径节点后再讲网址转发到具体的某个实例服务中。

代码语言:javascript
复制
           filters:
            - StripPrefix=1

4. 扩展

我的Demo示例:https://github.com/vir56k/demo/tree/master/springboot/gateway_demo

5.参考:

《Spring Cloud微服务实战》 https://spring.io/projects/spring-cloud-gateway https://github.com/spring-cloud/spring-cloud-gateway https://spring.io/guides/gs/gateway/

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 背景
  • 2.知识
  • 3. 示例
    • 1、添加依赖
    • 4. 扩展
    • 5.参考:
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档