初识 API 网关 及 Spring Cloud Gateway
API 网关是系统架构中的一个关键角色,它是连接客户端和后端服务的桥梁,起到了负载均衡、安全验证、流量控制等作用。Spring Cloud Gateway 是 Spring Cloud 的一个项目,它实现了 API 网关的功能。
以下是一个简单的 Spring Cloud Gateway 示例:
- 添加依赖到你的
pom.xml
:
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
- 配置
application.yml
:
spring:
cloud:
gateway:
routes:
- id: after_route
uri: http://localhost:8081
predicates:
- Path=/api/**
filters:
- StripPrefix=1
- id: hystrix_route
uri: http://localhost:8082
predicates:
- Path=/api/**
filters:
- StripPrefix=1
- name: Hystrix
args:
name: fallbackcmd
fallbackUri: forward:/incaseoffallback
hystrix:
command:
default:
execution:
isolation:
thread:
timeoutInMilliseconds: 1000
- 创建一个启动类:
@SpringBootApplication
public class GatewayApplication {
public static void main(String[] args) {
SpringApplication.run(GatewayApplication.class, args);
}
}
在这个例子中,我们配置了两个路由,一个指向 localhost:8081
,另一个指向 localhost:8082
。我们还配置了一个断路器,如果请求超时,将会调用 /incaseoffallback
路径作为回退。
这只是一个简单的示例,实际应用中你可能需要根据自己的需求进行更复杂的配置,例如添加过滤器、使用服务发现等。
评论已关闭