SpringCloud GateWay 学习

news2024/11/25 7:06:30

SpringCloud GateWay

文章目录

    • SpringCloud GateWay
      • 1 Gateway 介绍
      • 2 代码实现

1 Gateway 介绍

  • 有一个前后端分离项目,分析如图

image-20230601224415193

  • 使用网关服务Gateway,重构项目架构

image-20230601224459015

  1. Gateway 是在 Spring 生态系统之上构建的 API 网关服务,基于 Spring ,Spring Boot 和 Project Reactor 等技术。
  2. Gateway 旨在提供一种简单而有效的方式来对 API 进行路由,以及提供一些强大的过滤器功能,例如∶熔断、限流、重试等

Spring Cloud Gateway 基于 Spring Framework(支持 Spring WebFlux),Project Reactor 和 Spring Boot 进行构建,具有如下特性:

  • 动态路由
  • 可以对路由指定 Predicate(断言)和Filter(过滤器)
  • 集成Hystrix的断路器功能
  • 集成 Spring Cloud 服务发现功能
  • 请求限流功能
  • 支持路径重写

2 代码实现

第一步、导入依赖

<!--引入 cloud gataway 场景启动器starter-->
<dependencies>

   <!--引入 cloud gataway 场景启动器starter-->
   <dependency>
       <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-gateway</artifactId>
    </dependency>
    <!--GateWay
        1. 不能引入spring-boot-starter-web 和 spring-boot-starter-actuator
                否则出现冲突
        2. 因为gateway 是一个服务网关,不需要web...
     -->
<dependencies>

第二步、配置application.yml(重点核心):

server:
  port: 20000

spring:
  application:
    name: e-commerce-gateway

  cloud:
    gateway:
      routes: #配置路由,可以有多个路由配置
        - id: member_routh01 #路由的ID,程序员自己写,要求唯一
          #gateway 最终访问的 url = uri+Path
          #匹配后提供服务的路由地址,也可以是外网 uri,比如 http://www.baidu.com 等
          #比如: 客户端/浏览器请求 url http://localhost:10000/member/get/1
          #如果根据Path匹配成功 最终访问的url/转发url 就是 url=http://localhost:10000/member/get/1
          #如果匹配失败,则有gateway返回404信息
          uri: http://localhost:10000
          predicates: #断言,可以有多种形式
            - Path=/member/get/**  #断言,路径相匹配的进行路由

        - id: member_routh02 #路由的ID,程序员自己写,要求唯一
          uri: http://localhost:10000
          predicates: #断言,可以有多种形式
            #这是如果客户端/浏览器 访问 gateway 的 url http://localhost:20000/member/save
            #匹配Path成功 最终访问的 url 就是 http://localhost:10000/member/save
            - Path=/member/save  #断言,路径相匹配的进行路由

        - id: member_routh03 #路由的ID,程序员自己写,要求唯一
          uri: http://www.baidu.com  # url访问外网
          predicates: #断言,可以有多种形式
            #这是如果客户端/浏览器 访问 gateway 的 url http://www.baidu.com/
            #匹配Path成功 最终访问的 url 就是 http://www.baidu.com/
            - Path=/

# eureka 客户端配置
eureka:
  instance:
    hostname: e-commerce-service
  client:
    register-with-eureka: true #将自己注册到 eureka-Server
    fetch-registry: true
    service-url:
      # 这里使用 eureka server 单机环境测试
      defaultZone: http://eureka9001.com:9001/eureka

第三步、创建主启动类 GateWayApplication20000.java

package com.xjz.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

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

第四步、测试

路由id:member_routh01

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pL3TPK11-1685631739888)(C:/Users/15100034221/AppData/Roaming/Typora/typora-user-images/image-20230601225620466.png)]

路由id:member_routh02

@RequestBody 的作用是: 将前端发送的 json 数据封装成对象, 如果发送的不是 json 数 据,会报错误

image-20230601225829318

我们来看一下数据库,已经成功加入数据~

image-20230601225856643

路由id:member_routh03 --》路由跳百度(外部网址)

image-20230601230113944

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/599226.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DES,RAS,HASH

是猫咪&#xff0c;我加入了一些猫咪 1.DES Data Encryption Standard&#xff0c;即数据加密标准&#xff0c;是一种使用密钥加密的块算法。设计中使用了分组密码设计的两个原则&#xff1a;混淆&#xff08;confusion&#xff09;和扩散(diffusion)。DES加密算法原理简析_51…

秋招笔试零基础怎么办?自顶向下真题学习法,这样准备就稳啦!

秋招笔试零基础怎么办&#xff1f;自顶向下真题学习法&#xff0c;这样准备就稳啦 秋招临近&#xff0c;是时候提前准备笔试了。想必各位都忙着刷穿leetcode的剑指Offer&#xff0c;或者牛客的往年真题等等 但你真的了解自己的算法知识板块哪里有纰漏吗&#xff1f; 你知道今…

【C++】初识STL

目录 &#x1f31e;专栏导读 &#x1f31b;什么是STL &#x1f31b;STL的版本 &#x1f31b;STL的六大组件 &#x1f31b;STL的重要性 &#x1f31b;STL的缺陷 &#x1f31e;专栏导读 &#x1f31f;作者简介&#xff1a;日出等日落&#xff0c;在读本科生一枚&#xff0…

nginx网站安装服务

nginx概述 一款高性能、轻量级web服务软件稳定性高系统资源消耗低对HTTP并发连接的处理能力高单台物理服务器可支持30000~50000个并发请求 正向代理&#xff1a;通过代理服务器来访问资源&#xff0c;这种代理服务成为正向代理 反向代理&#xff1a;客户端与代理是无感知的&…

【Go LeetDay】总目录(1~83)

Leetcode Golang Day1~10 Golang每日一练(leetDay0001) 1. 两数之和 Two Sum 2. 两数相加 Add Two Numbers 3. 无重复字符的最长子串 Longest-substring-without-repeating-characters Golang每日一练(leetDay0002) 4. 寻找两个正序数组的中位数 Median of two sorted arra…

如何通过帮助文档来减少你的客服咨询量,提高工作效率

相信你的公司网站或者产品中总会设置一个“联系我们”按钮&#xff0c;让客户能够遇到问题随时能够找到客服人员并且快速解决&#xff0c;在创业初期&#xff0c;可能这样的模式没有问题&#xff0c;但是随着客户越来越多&#xff0c;客服的需求也随之增加&#xff0c;客服人员…

【iOS】--对象的底层结构

源码 先转一下源码 //#import <Foundation/Foundation.h> #import <objc/runtime.h>interface LGPerson : NSObject property (nonatomic, strong) NSString *KCName; endimplementation LGPersonendint main(int argc, const char * argv[]) {autoreleasepool {…

DVWA-XSS (Stored) Low/Medium/High低中高级别

「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 XSS Stroed 一、Low级别二、Medium级别三、Hign级别 这关是一个论坛功能&#xff0c;把用…

设计模式(六):结构型之代理模式

设计模式系列文章 设计模式(一)&#xff1a;创建型之单例模式 设计模式(二、三)&#xff1a;创建型之工厂方法和抽象工厂模式 设计模式(四)&#xff1a;创建型之原型模式 设计模式(五)&#xff1a;创建型之建造者模式 设计模式(六)&#xff1a;结构型之代理模式 目录 一、…

深入分析——Linux DMA Fence

目录 一 简介 二 基本原理 三 代码实现 3.1 Init 3.2 wait 3.3 signaling 3.4 callback 3.5 signaled 3.6 signal 3.7 refcount & release 四 Fence Status 一 简介 dma-fence是linux 内核中同步原语&#xff0c;它只有两种状态signaled和unsigned。因为其本身的…

华为OD机试之找出经过特定点的路径长度(Java源码)

找出经过特定点的路径长度 题目描述 无 输入描述 输入一个字符串&#xff0c;都是以大写字母组成&#xff0c;每个相邻的距离是 1&#xff0c; 第二行输入一个字符串&#xff0c;表示必过的点。 说明每个点可过多次。 输出描述 经过这些必过点的最小距离是多少 用例 输入 ANT…

OpenGL之坐标系统

文章目录 概述局部空间世界空间观察空间裁剪空间正射投影透视投影 进入3D代码 OpenGL希望在每次顶点着色器运行后&#xff0c;我们可见的所有顶点都为标准化设备坐标(Normalized Device Coordinate, NDC)。也就是说&#xff0c;每个顶点的x&#xff0c;y&#xff0c;z坐标都应该…

基于diffusers训练lora,AI换装

阿里云登录 - 欢迎登录阿里云&#xff0c;安全稳定的云计算服务平台欢迎登录阿里云&#xff0c;全球领先的云计算及人工智能科技公司&#xff0c;阿里云为200多个国家和地区的企业、开发者和政府机构提供云计算基础服务及解决方案。阿里云云计算、安全、大数据、人工智能、企业…

设计模式(四):创建型之建造者模式

设计模式系列文章 设计模式(一)&#xff1a;创建型之单例模式 设计模式(二)&#xff1a;创建型之工厂方法和抽象工厂模式 设计模式(三)&#xff1a;创建型之原型模式 设计模式(四)&#xff1a;创建型之建造者模式 目录 一、设计模式分类二、建造者模式1、概述2、结构3、实例…

Win10设置 Java 环境变量

文章目录 概要下载jdk安装jdk配置环境变量测试环境变量是否配置成功总结 概要 学习java开发首先需要安装jdk,并设置环境变量。 接下来就来介绍一下如何在 windows 10 系统中配置java环境变量 下载jdk https://download.oracle.com/java/17/latest/jdk-17_windows-x64_bin.exe…

C#,生信软件实践(06)——DNA数据库GenBank文件的详解介绍及解释器之完整C#源代码

1 GenBank 1.1 NCBI——美国国家生物技术信息中心&#xff08;美国国立生物技术信息中心&#xff09; NCBI&#xff08;美国国立生物技术信息中心&#xff09;是在NIH的国立医学图书馆&#xff08;NLM&#xff09;的一个分支。它的使命包括四项任务&#xff1a;1. 建立关于分…

LIBEVENT 框架

LIBEVENT 框架 LAMPlibevent特点:libevent的功能libevent官网安装步骤Linux下libevent主要API介绍libevent使用步骤libevent 编程案例LAMP 从LAMP说起: 是一个缩写,它指一组通常一起使用来运行动态网站或者服务器的自由软件 Linux - 操作系统Apache - 网页服务器MySQL - 数据…

Automatic Prompt Optimization with “Gradient Descent” and Beam Search

在“自然语言域”使用类似梯度下降的方法优化prompt 整篇文章比较精髓的思想在于 利用LLM本身去寻找prompt的瑕疵。将语言模型的输出 y ^ \hat{y} y^​与正确答案&#xff08;label&#xff09; y y y还有prompt p p p 一起送入LLM&#xff0c;并通过类似“What is wrong wi…

如果提取音乐的伴奏和人声,分享两个方法给大家!

音乐中的伴奏提取一直是许多音频爱好者关注的话题。在本文中&#xff0c;我们将介绍两种简单易用的方法&#xff0c;并且特别推荐一款记灵在线工具&#xff0c;它能够帮助你轻松提取音乐伴奏&#xff0c;并且支持批量处理&#xff01; 方法一&#xff1a;Audacity 首先&#…

centos7 编译bluez ARM版本及undefined reference to `g_thread_new‘

在我辛辛苦苦编译成功 glib 库后&#xff08;看我上一篇文章 centos7 glib2.0 arm版本的编译&#xff09;&#xff0c;以为可以顺利编译我的 bluez ARM 版本&#xff0c;结果出现了最后一个错误&#xff08;其中一个是私有库里的&#xff09;&#xff0c;如&#xff1a; 就是这…