APP下载
报价宝  ›  科技  › 

Spring Cloud Alibaba 路由闸道器(Gateway)

报价宝 来源:baojiabao.com 发布时间:2019-11-26 00:53:00 09月30日更新
报价宝综合消息Spring Cloud Alibaba 路由闸道器(Gateway)

路由闸道器统一访问界面

什么是 Spring Cloud Gateway

Spring Cloud Gateway 是 Spring 官方基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的闸道器,Spring Cloud Gateway 旨在为微服务架构提供一种简单而有效的统一的 API 路由管理方式。Spring Cloud Gateway 作为 Spring Cloud 生态系中的闸道器,目标是替代 Netflix ZUUL,其不仅提供统一的路由方式,并且基于 Filter 链的方式提供了闸道器基本的功能,例如:安全,监控/埋点,和限流等。

Spring Cloud Gateway 功能特征

基于 Spring Framework 5,Project Reactor 和 Spring Boot 2.0动态路由Predicates 和 Filters 作用于特定路由整合 Hystrix 断路器整合 Spring Cloud DiscoveryClient易于编写的 Predicates 和 Filters限流路径重写Spring Cloud Gateway 工程流程

客户端向 Spring Cloud Gateway 发出请求。然后在 Gateway Handler Mapping 中找到与请求相匹配的路由,将其传送到 Gateway Web Handler。Handler 再通过指定的过滤器链来将请求传送到我们实际的服务执行业务逻辑,然后返回。

过滤器之间用虚线分开是因为过滤器可能会在传送代理请求之前(pre)或之后(post)执行业务逻辑。

POM

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

com.wsl

hello-spring-cloud-alibaba-dependencies

1.0.0-SNAPSHOT

../hello-spring-cloud-alibaba-dependencies/pom.xml

hello-spring-cloud-gateway

jar

hello-spring-cloud-gateway

org.springframework.boot

spring-boot-starter-actuator

org.springframework.boot

spring-boot-starter-test

test

org.springframework.cloud

spring-cloud-starter-alibaba-nacos-discovery

org.springframework.cloud

spring-cloud-starter-alibaba-sentinel

org.springframework.cloud

spring-cloud-starter-openfeign

org.springframework.cloud

spring-cloud-starter-gateway

javax.servlet

javax.servlet-api

org.springframework.boot

spring-boot-maven-plugin

com.wsl.hello.gateway.GatewayApplication

主要增加了 org.springframework.cloud:spring-cloud-starter-gateway 依赖

Application

package com.wsl.hello.gateway;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

import org.springframework.cloud.openfeign.EnableFeignClients;

@SpringBootApplication

@EnableDiscoveryClient

@EnableFeignClients

public class GatewayApplication {

public static void main(String[] args) {

SpringApplication.run(GatewayApplication.class, args);

}

}

application.yml

spring:

application:

# 应用名称

name: spring-gateway

cloud:

# 使用 Naoos 作为服务注册发现

nacos:

discovery:

server-addr: 127.0.0.1:8848

# 使用 Sentinel 作为熔断器

sentinel:

transport:

port: 8721

dashboard: localhost:8080

# 路由闸道器配置

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: NACOS-CONSUMER

# 采用 LoadBalanceClient 方式请求,以 lb:// 开头,后面的是注册在 Nacos 上的服务名

uri: lb://nacos-consumer

# Predicate 翻译过来是“谓词”的意思,必须,主要作用是匹配使用者的请求,有很多种用法

predicates:

# Method 方法谓词,这里是匹配 GET 和 POST 请求

- Method=GET,POST

- id: NACOS-CONSUMER-FEIGN

uri: lb://nacos-consumer-feign

predicates:

- Method=GET,POST

server:

port: 9000

# 目前无效

feign:

sentinel:

enabled: true

# 目前无效

management:

endpoints:

web:

exposure:

include: "*"

# 配置日志级别,方别调试

logging:

level:

org.springframework.cloud.gateway: debug

注意:请仔细阅读注释

测试访问

依次执行 Nacos 服务:NacosProviderApplication、NacosConsumerApplication、NacosConsumerFeignApplication、GatewayApplication

开启浏览器访问:http://localhost:9000/nacos-consumer/test/app/name 浏览器显示

Hello Nacos Discovery nacos-consumer i am from port 8082

开启浏览器访问:http://localhost:9000/nacos-consumer-feign/test/hi 浏览器显示

Hello Nacos Discovery Hi Feign i am from port 8082

注意:请求方式是 http://路由闸道器IP:路由闸道器Port/服务名/

至此说明 Spring Cloud Gateway 的路由功能配置成功

文章标签: 报价宝 降噪耳机价格 耳机价格 红米手机价格 华为手机价格 小米手机价格 电视机价格 笔记本电脑价格 笔记本价格 汽车价格 数码相机价格 手机价格 电视机价格 小米手机价格 耳机价格