共计 1267 个字符,预计需要花费 4 分钟才能阅读完成。
简述
Spring Cloud Gateway 是 Spring Cloud 的一个子项目,该我的项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简略无效的对立的 API 路由治理形式。
Spring Cloud Gateway 作为 Spring Cloud 生态系统中的网关,指标是代替 Netflix Zuul,其不仅提供对立的路由形式,并且基于 Filter 的形式提供了网关根本的性能,例如:平安,监控 / 指标,和限流。
相干概念
Route(路由):网关的根本构件块,相似于 nginx 的 location 配置。由一个 ID、一个指标 URI、一组 Predicate 和一组 Filter 定义
Predicate(断言):路由组成的一部分,次要负责路由的匹配,来决定此次申请是否匹配路由,咱们能够应用它匹配来自 HTTP 申请的任何内容,比方门路、参数或者 header 信息等等
Filter(过滤器):这个是 GatewayFilter 的实例,申请通过 Predicate 匹配路由之后执行 Filter,咱们能够应用它批改申请和响应。
Spring Cloud Gateway 网关路由有两种游戏配置形式:
通过配置文件配置
通过 @bean 自定义 RouteLocator 去配置
这两种形式是等价的,倡议应用配置文件配置。因为 Spring Cloud Gateway 应用响应式编程框架,学习曲线绝对平缓。
server:
port: 8088eureka:
client:
serviceUrl:
# 注册核心地址
defaultZone:localhost:8761/eurekaspring:
application:
name: test-gateway
cloud:
gateway:
routes:
- id: test1
uri: www fhadmin org
predicates:
- Path=/fhadmin/**
filters:
- StripPrefix=1
各字段含意如下:
id:咱们自定义的路由 ID,放弃惟一
uri:指标服务地址,大部分场景咱们是转发到某个服务上,配置 uri: lb://user-service 意思是申请要转发 www.cungun.com 而后到注册核心的 user-service 服务上。
predicates:路由条件,承受一个参数,返回一个布尔后果决定是否匹配。Gateway 为咱们内置了多种路由条件,包含 Path、Cookie、Param、Header、Before、After 等等,开箱即用,当然咱们也能够本人实现 predicates
filters:过滤规定,当申请通过 predicate 匹配胜利后,执行 filter,咱们能够应用它批改申请和响应,示例示意指标服务收到的 path 将无第一级。
启动程序,当咱们拜访 localhost:8088/baidu 时,gateway 会依据咱们配置的路由规定转发到 www fhadmin org
工作原理
解决单点故障的问题
在 gateway 后面应用 nginx, 用 nginx 负载平衡到不同的 gateway 服务上。