我的编程空间,编程开发者的网络收藏夹
学习永远不晚

SpringCloudGateway网关功能介绍与使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

SpringCloudGateway网关功能介绍与使用

一、什么是API网关

API网关作用就是把各个服务对外提供的API汇聚起来,让外界看起来是一个统一的接口。同时也可在网关中提供额外的功能。

总结:网关就是所有项目的一个统一入口。

二、基本使用

1.准备Eureka注册中心

2.准备一个微服务工程

3.搭建Gateway网关微服务

(1)导入依赖

<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-eureka-client</artifactId>
    </dependency>
</dependencies>

(2)编写配置文件

server:
  port: 9999
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
# 自动发现工具的本地路由规则是:
# 请求路径 - http://网关IP:网关端口/微服务的服务名/要访问的具体地址
# gateway自动解析,把请求地址中的'微服务的服务名'截取,从Eureka Client发现的服务列表中查看,如果有同名服务,则开始转发。
spring:
  application:
    name: cloud-gateway
  cloud: # spring cloud相关配置的常用前缀
    gateway: # 网关技术配置前缀
      discovery: # 自动发现工具
        locator: # 本地逻辑
          enabled: true # 开启自动发现工具的本地路由逻辑
          lower-case-service-id: true # 把从EurekaServer上发现的服务名称,转换成全小写

(3)编写启动类

@SpringBootApplication
public class GatewayApplication {
    public static void main(String[] args) {
        SpringApplication.run(GatewayApplication.class,args);
    }
}

三、谓词

谓词:当满足条件在进行路由转发。

在Spring Cloud Gateway中谓词实现GatewayPredicate接口。其中类名符合:XXXRoutePredicateFactory,其中XXX就是在配置文件中谓词名称。

所有的谓词都设置在predicates属性中,当设置多个谓词时取逻辑与条件,且一个谓词只能设置一组条件,如果需要有个多条件,添加多个相同谓词。

(1)Path

用于匹配路由地址规则的谓词。

spring:
  application:
    name: cloud-gateway
  cloud: 
    gateway:
      discovery:
        locator:
          enabled: false # 关闭自动发现工具的本地路由逻辑
          lower-case-service-id: true 
      routes:  # 配置多路由策略的属性,类型是List。配置方案是:回车 + 缩进 + - + 空格。集合中的每个对象的属性,对齐多行配置
        - id: application-service # 路由的唯一名称
          uri: lb://application-service # 规则满足后,转发到的地址。lb是spring cloud gateway支持的一种协议名
          predicates: # 谓词
            - Path=/service @Component public class MyKeyResolver implements KeyResolver { @Override public Mono<String> resolve(ServerWebExchange exchange) { String ip = exchange.getRequest() // 获取请求对象 .getRemoteAddress() // 获取客户端地址对象 InetSocketAddress .getAddress() // 获取客户端地址对象 InetAddress .getHostAddress(); // 获取客户端的主机地址(IP或唯一的主机名) return Mono.just(ip); // 创建返回结果对象 } }

(3)编写配置文件

server:
  port: 9999
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
spring:
  application:
    name: cloud-gateway
  cloud: 
    gateway: 
      discovery: 
        locator: 
          enabled: false 
          lower-case-service-id: true
      routes:
        - id: rateLimiter
          uri: lb://application-service
          predicates:
            - Path=/limiter @Controller public class FallbackController { @RequestMapping(value = "/fallback", produces = {"text/html; charset=UTF-8"}) @ResponseBody public String fallback(){ return "<div style='color:red; text-align: center'>服务器忙,请稍后重试!</div>"; } }

(3)配置文件

- id: hystrix
  uri: lb://application-service
  predicates:
    - Path=/hystrix @Component public class MyGlobalFilter implements GlobalFilter { @Override public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { System.out.println("前置全局过滤"); Mono<Void> result = chain.filter(exchange); System.out.println("后置全局过滤"); return result; } }

八、自定义路由过滤器

定义针对于Router的Filter。必须经由配置才能生效。 注意:

(1)编辑路由过滤器


@Component
public class LoggerFilterGatewayFilterFactory
            extends AbstractGatewayFilterFactory<LoggerFilterGatewayFilterFactory.Config> {
    
    public LoggerFilterGatewayFilterFactory(){
        this(Config.class);
    }
    public LoggerFilterGatewayFilterFactory(Class<Config> configClass){
        super(configClass);
    }
    
    @Override
    public List<String> shortcutFieldOrder() {
        return Arrays.asList("remark");
    }
    
    @Override
    public GatewayFilter apply(Config config) {
        return new GatewayFilter() {
            
            @Override
            public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
                System.out.println("前置 - 日志过滤器 - config.remark = " + config.getRemark());
                Mono<Void> result = chain.filter(exchange);
                System.out.println("后置 - 日志过滤器 - config.remark = " + config.getRemark());
                return result;
            }
        };
    }
    
    public static class Config{
        private String remark;
        public String getRemark() {
            return remark;
        }
        public void setRemark(String remark) {
            this.remark = remark;
        }
    }
}

(2)编辑配置文件

- id: logger
  uri: lb://application-service
  predicates:
    - Path=/logger/**
  filters:
    - StripPrefix=1
    - LoggerFilter=simpleTestGatewayFilter
    - name: LoggerFilter
        args:
          remark: fullyTestGatewayFilter

到此这篇关于SpringCloud Gateway网关功能介绍与使用的文章就介绍到这了,更多相关SpringCloud Gateway内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

SpringCloudGatewaySpringCloudGateway服务网关
阅读原文内容投诉

SpringCloudGateway网关功能介绍与使用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

相关文章

猜你喜欢

SpringCloudGateway网关功能介绍与使用

SpringCloudGateway是SpringCloud的一个全新项目,它旨在为微服务架构提供一种简单有效的统一的API路由管理方式。这篇文章主要介绍了SpringCloudGateway网关作用,需要的朋友可以参考下
2022-12-09

Callvis 解读:功能介绍与使用指南

callvis 是一款强大的通话记录和分析工具,其主要功能包括通话记录、通话分析和通话跟踪。它可帮助企业优化客户服务、检测欺诈行为和提高运营效率。其具体使用方法为:下载软件、配置设置、启动记录、分析数据并采取行动。Callvis 解读:功能
Callvis 解读:功能介绍与使用指南
2024-04-08

windows网络唤醒功能详细介绍与应用

在有些情况下,我们需要通过网络远程唤醒PC机以方便我们的操作,特别是那些网管们,谁也不想在两个相聚有一段举例的主机之间来来回回。下面就详细讲解一下网络唤醒功能。当然值得注意的是,这些操作只能是针对局域网,因为广播的唤醒数据包不可能跨越路由器
2023-06-05

阿里云服务器关闭休眠功能的详细介绍与使用建议

随着互联网技术的发展,服务器作为网络基础设施的作用日益凸显。在使用服务器的过程中,如何有效地管理和优化服务器资源,减少服务器的闲置和浪费,是广大用户关注的问题。本文将详细解析阿里云服务器关闭休眠功能,并提出使用建议。一、什么是阿里云服务器关闭休眠功能?阿里云服务器关闭休眠功能是阿里云服务器提供的一项服务,主要目的
阿里云服务器关闭休眠功能的详细介绍与使用建议
2023-12-09

阿里云服务器作用与功能介绍

阿里云服务器是阿里云提供的云服务器服务,具有以下作用和功能:提供快速稳定的计算服务:阿里云服务器支持多台计算服务器并行服务,可根据需要设置最高并发数,以确保系统稳定、高效运行。安全可靠的数据备份服务:阿里云服务器具备数据备份和容灾功能,可将数据备份到多个服务器或云主机,保证数据的安全和可靠性。弹性扩展:阿里云服务器提供高可用架构,可根据业务需求动态扩展系统负载,实现快速响应。高速可靠的
2023-10-26

wordpress自带的缓存功能使用介绍

用静态化当然可以解决这些问题,不过对于流量不大的博客就没必要了。 wordpress自带有缓存体系,关键的函数你可以在wp-includes/cache.php或 Codex里查找到所有的函数。 你可以使用下列函数来实现添加缓存。复制代码代
2022-06-12

数据仪表盘:dashboard的作用与功能介绍

随着信息技术和网络技术的不断发展,数据的数量和复杂程度也在不断增长,而高质量的数据管理和分析已经成为各行业发展的重要基础。在这种背景下,数据仪表盘(Dashboard)应运而生,可以帮助人们更轻松地管理和分析数据,并实现数据驱动的决策。什
数据仪表盘:dashboard的作用与功能介绍
2024-01-19

帝国cms签发信息功能使用介绍

签发信息 一、签发信息功能说明 签发信息是对工作流流转编程客栈的信息jujFXlHOus进行审核的操作。有关工作流设置可以看“管理员手册”。 二、签发信息管理 1、登录后台,单击“栏目”菜单,
2022-06-12

WordPress自带thumbnail缩略图功能使用介绍

1.添加功能 在function.php中插入代码 add_theme_support('post-thumbnails'); 插入之后会在后台编辑文章的页面的右下角出现特色图片,(有的版本可能是或者是文章缩略图) 点击设定特色图像后出来的
2022-06-12

Linux系统Shell命令常用功能使用介绍

本篇内容主要讲解“Linux系统Shell命令常用功能使用介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux系统Shell命令常用功能使用介绍”吧!  Linux系统中Shell不仅仅
2023-06-13

Linux关于透明大页的使用与禁用介绍

引言 随着计算需求规模的不断增大,应用程序对内存的需求也越来越大。为了实现虚拟内存管理机制,操作系统对内存实行分页管理。自内存“分页机制”提出之始,内存页面的默认大小便被设置为 4096 字节(4KB),虽然原则上内存页面大小是可配置的,但
2022-06-04

Windows8功能介绍 灵活使用Windows 8小技巧

Window 8系统确实是需要一些时间来适应,尽管桌面app运行模式和Window 7很相似,但是还是存在很多新的快捷方式、选项和技巧嵌入在操作系统里。你认为你完全会使用Windows 8吗?这里小编将介绍一些Windows8的功能,你很有
2022-06-04

java guava主要功能介绍及使用心得总结

这篇文章主要为大家介绍了java guava主要功能介绍及使用心得总结,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-05-16

热门标签

Linux(148)PHP(127)Java(102)正则表达式(101)JavaScript(69)最佳实践(67)jQuery(44)MySQL(39)Docker(37)C语言(36)性能优化(34)Python(34)XML(28)string(27)第三方库(23)回调函数(23)ZIP(22)数组(22)可扩展性(22)字符串比较(21)find(20)RPM(20)Go(20)grep(19)ASP.NETCore(19)XML解析器(19)事件(19)事件处理程序(19)StringBuilder(18)Nginx(18)

编程热搜

编程资源站

目录