首页 分布式系统服务路由
文章
取消

分布式系统服务路由

Spring Cloud Gateway

Spring Cloud Gateway功能:

  • 基于Spring Framework 5,Project Reactor和Spring Boot 2.0构建

  • 能够匹配任何请求属性上的路由。

  • 谓词和过滤器特定于路由。

  • Hystrix断路器集成。

  • Spring Cloud DiscoveryClient集成

  • 易于编写的谓词和过滤器

  • 请求速率限制

  • 路径改写

maven 依赖

  • pom新增依赖 ``` xml
org.springframework.cloud spring-cloud-starter-gateway
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
- yaml相关配置
``` yaml
spring:
  application:
    # 应用名称
    name: gateway
  main:
      allow-bean-definition-overriding: true
  cloud:
 # 路由网关配置
    gateway:
      # 设置与服务注册发现组件结合,这样可以采用服务名的路由策略
      discovery:
        locator:
          enabled: true
      # 配置路由规则
      routes:
        # 采用自定义路由 ID(有固定用法,不同的 id 有不同的功能,详见:https://cloud.spring.io/spring-cloud-gateway/2.0.x/single/spring-cloud-gateway.html#gateway-route-filters)
        - id: CONSUMER-OAUTH2
          # 采用 LoadBalanceClient 方式请求,以 lb:// 开头,后面的是注册在 Nacos 上的服务名
          uri: lb://consumer-oauth2
          # Predicate 翻译过来是“谓词”的意思,必须,主要作用是匹配用户的请求,有很多种用法
          predicates:
            # Method 方法谓词,这里是匹配 GET 和 POST 请求
            #- Method=GET,POST
            # 路径匹配,以 api 开头,直接配置是不生效的,看 filters 配置
            - Path=/api/user/**
          filters:
            # 前缀过滤,默认配置下,我们的请求路径是 http://localhost:9000/consumer-oauth2/** 这时会路由到指定的服务
            # 此处配置去掉 1 个路径前缀,再配置上面的 Path=/api/**,就能按照 http://localhost:9000/api/** 的方式访问了
            - StripPrefix=1

Zuul

maven 依赖

1
2
3
4
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>

启动类标注注解

1
@EnableZuulProxy

yaml相关配置

1
2
3
4
5
6
7
8
9
# 构建路由地址
zuul:
  routes:
    # 这里可以自定义
    demo2:
      # 匹配的路由规则
      path: /demo/**
      # 路由的目标服务名
      serviceId: demo
本文由作者按照 CC BY 4.0 进行授权

分布式数据库

分布式系统协调zookeeper

载入天数...载入时分秒...