SpringCloud——GateWay网关(详解+案例)

2023-11-19

目录

 

一、相关概念

1、网关概念

2、网关作用

3、网关架构图

4、网关三大核心

二、案例

1、案例说明

 2、搭建GateWay网关9527服务

(1)创建maven工程

 (2)导入依赖

 (3)配置application.yml文件

(4)创建主启动类

3、搭建服务提供者Provider9001

 (1)创建maven工程

 (2)导入依赖

(3)配置application.yml文件

(4)创建主启动类

(5)创建controller

4、搭建Eureka7001

(1)创建maven工程

 (2)导入依赖

(3)配置application.yml

(4)创建主启动类

(5)启动Eureka注册中心

5、测试

三、欢迎回访我的springCloud专栏 


 

一、相关概念

1、网关概念

Gateway是在spring生态系统之上构建的API网关服务,网关是外网进入内网的入口,对内网服务起保护作用。

2、网关作用

(1)反向代理:为保护内网服务的安全,通常不会暴露内网服务ip,而是通过暴露网关ip,通过网关ip代理内网服务ip。

(2)流量控制:当系统处于高峰期时,为防止系统应访问量过大而崩溃,网关可以限制访问数量。

(3)熔断:当系统中的服务出现故障,网关可以将服务降级,有请求访问时,直接访问事先准备好的降级方法,等到服务修复后,用户即可继续访问;

(4)负载均衡:可以按照不同负载均衡策略,将请求分发到不同服务上。

3、网关架构图

7a7d8ebf7bec4e0ea80ac82f87a11737.png 

 

4、网关三大核心

(1)路由:路由是构建网关的基本模块,它由Id,目标url,一系列断言和过滤器组成,如果断言为true,则可以匹配该路由。

(2)断言:指定路径url,只有请求路径与这个指定的url匹配,才可以进行路由。

(3)过滤器:使用过滤器,可以在请求被路由前或者之后对请求进行修改。

二、案例

1、案例说明

(1)一个Gateway网关9527,一个服务提供者9001,一个注册中心Eureka7001;

(2)网关设置断言url为:hello/**,即请求url只有为hello开头才可以进行访问;

(3)客户端请求访问网关IP,访问到服务提供者9001。

c4000042dee741638b51b195cfb7efc3.png

 2、搭建GateWay网关9527服务

(1)创建maven工程

7a9f81824eb94750a9c148b89d11b9f6.png

 (2)导入依赖

导入网关、熔断器,Eureka依赖

    <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>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
    </dependencies>

 (3)配置application.yml文件

①配置网关端口号为9527;

②配置网关断言,只有请求url为/hello开头的请求才可以访问,断言id必须唯一,url为提供服务的路由地址

③配置Eureka注册中心

server:
  port: 9527
spring:
  application:
    name: gate9527
  cloud:
    gateway:
      routes:
        - id: provider9001 #路由的ID,没有固定规则但要求唯一,建议配合服务名
          uri: http://localhost:9001   #匹配后提供服务的路由地址
          predicates:
            - Path=/hello/**   #断言,路径相匹配的进行路由

eureka:
  instance:
    hostname: cloud-gate9527
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:7001/eureka

(4)创建主启动类

开启注册中心客户端

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

3、搭建服务提供者Provider9001

 (1)创建maven工程

7b472e75354341c1aed830a545fa6bed.png

 (2)导入依赖

导入eureka、web、服务监控依赖

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>

(3)配置application.yml文件

①配置端口号为9001;

②配置服务注册中心地址。

server:
  port: 9001

spring:
  application:
    name: Provider9001

eureka:
  client:
    register-with-eureka: true
    fetchRegistry: true
    service-url:
      defaultZone: http://localhost:7001/eureka

(4)创建主启动类

开启Eureka注册中心

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

(5)创建controller

创建测试请求,/hello/hi和/find

@RestController
public class HelloController {
    
    @RequestMapping("/hello/hi")
    public String hello(){
        return "路由/hello/hi";
    }    
    
    @RequestMapping("/find")
    public String find(){
        return "路由/find";
    }
}

4、搭建Eureka7001

(1)创建maven工程

ef9d8d6fd35e463fa53276c1eaff3587.png

 (2)导入依赖

导入Eureka服务端、web模块依赖

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>

(3)配置application.yml

①服务端口为7001;

②Eureka服务端主机名;

③Eureka客户端:

register-with-eureka:是否在服务中心注册

fetchRegistry:是否可以在注册中心被发现

service-url:服务中心url地址

server:
  port: 7001

eureka:
  instance:
    hostname: localhost

  client:
    register-with-eureka: false
    fetchRegistry: false
    service-url:
      defaultZone: http://localhost:7001/eureka

(4)创建主启动类

@EnableEurekaServer:Eureka服务端注解

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

(5)启动Eureka注册中心

访问http://localhost:7001

78ca559626be4fbfbcb6b62d630f5d70.png

5、测试

(1)依次启动Eureka7001,Provider9001,GateWay9527

(2)访问:http://localhost:9527/hello/hi

(3)访问:http://localhost:9527/find

5339671c2bda45ad8694b53ae755550d.png 

503a910b584a4392bde6a88a09d87d95.png 

 路由/hello/hi可以正常访问,而路由/find无法访问,测试成功。

三、欢迎回访我的springCloud专栏 

https://blog.csdn.net/weixin_50616848/category_11793085.html

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringCloud——GateWay网关(详解+案例) 的相关文章

随机推荐

  • centos7安装kubeadm

    安装配置docker v1 9 0版本推荐使用docker v1 12 v1 11 v1 13 17 03也可以使用 再高 版本的docker可能无法正常使用 测试发现17 09无法正常使用 不能使用资源限制 内存CPU 安装docker
  • 制作词云(纯代码)

    词云技术是一种将单词数据可视化的技术 通常将单词按照出现频率在一个图形中显示 单词在图形中的大小表示其出现的频率 词云技术最初是为了数据挖掘和文本分析而开发的 但现在它已经成为了一种常见的数据可视化方式 常用于展示文章 调查问卷 舆情分析等
  • 建站系列(四)--- Web服务器之Apache、Nginx

    目录 相关系列文章 前言 一 简介 二 Apache与Nginx 1 Apache与Nginx的区别 2 Nginx相对于Apache的优点 3 Apache相对于Nginx 的优点 4 选择 三 反向代理与正向代理 相关系列文章 建站系列
  • Flutter可滚动Widgets-ListView

    ListView 先看下如下截图 以上效果图的代码 是从 flutter官方demo flutter gallery内copy的部分代码 首先 首先定义一个列表 代码如下 List
  • 攻防世界web---新手练习区

    查看网页源代码 根据提示 查看网页源代码 发生了什么 鼠标右键不管用了 F12看到了什么 哈哈哈哈哈 robots协议 也太简单了吧哈哈哈 备份文件 打开御剑扫描后台 cookie 没什么发现 抓包看看 看看cookie php 看http
  • Phase Sensitive Filter

    复数转换 如下图复数 由于 所以 这个就是复数的三角形式 这里 是模 是辅角 在讨论音频频域 即stft变换后的复数时 分别称为幅值和相位 根据欧拉公式 其中i是虚数符号 可得 这个公式可以方便地把幅值和相位还原回复数 进而做istft 将
  • java需会(转载)

    一 基础篇 1 1 Java基础 面向对象的特征 继承 封装和多态 final finally finalize 的区别 Exception Error 运行时异常与一般异常有何异同 请写出5种常见到的runtime exception i
  • Nginx日志常见时间变量解析

    request time 官方解释 request processing time in seconds with a milliseconds resolution time elapsed between the first bytes
  • js做四则运算时,精度丢失问题及解决方法

    一 前言 这个问题可以说是程序员必踩的坑 因此网上针对该问题的分析有很多也很详细 解决方法也比较统一 写法也是大同小异 本以为预期效果真能如他们所说是完美的 然而效果却是差强人意 二 问题 首先 先来看看两数相加的一个经典问题 网上找过不少
  • android系统下使用openGL开发demo

    对openGL早有耳闻 但是刚接触android下的opengl 做个demo学习下 先把opengl的框架搭建起来 只要有如下几个文件 openActivity java 作为启动入口 android通过GLSurfaceView显示op
  • Unity笔记:修改代码执行的默认打开方式

    使用 External Tools 偏好设置可设置用于编写脚本 处理图像和进行源代码控制的外部应用程序 External Script Editor 选择 Unity 应使用哪个应用程序来打开脚本文件 Unity 会自动将正确的参数传递给内
  • js判断输入框不能全是空格

    var sno sno val var sname sname val while sno lastIndexOf gt 0 sname lastIndexOf gt 0 sno sno replace sname sname replac
  • Python图像处理实战:处理和分析图像数据

    引言 在现代数字化时代 人们生产和获取数以亿计的数字图像 具体而言 这些图像数据常用于计算机视觉 模式识别 医学影像 地球观测和卫星遥感等领域 通过高级图像处理技术 可以从这些数据中提取出有用的信息 从而支持实现各种应用 本文主要介绍Pyt
  • JS学习笔记十二——DOM 操作

    DOM 操作 一 DOM 操作 二 结语 一 DOM 操作 DOM 全名为 Document Object Model 是一整套操作文档流相关内容的属性和方法 这些方法可以用于操作元素修改样式 修改属性 改变位置 添加事件等 DOM 操作内
  • Selenium成长之路-26分页处理

    很长时间没有补充selenium 的脚本了 今天有小朋友问我 如何定位分页 告诉完 索性把代码贴出来 gt gt gt url 填写自己项目中的url地址即可 上代码 coding utf 8 auth carl DJ time 2020
  • 新手教程02:使用makefile脚本进行VCS逻辑仿真

    目录 前言 使用makefile脚本的方式使用VCS 1 新建文件夹 存放需要仿真的rtl代码 2 生成 filelist f 文件 罗列所有rtl文件的路径 3 书写makefile脚本 4 terimal中运行命令 进行仿真 总结 前言
  • jmeter使用教程之验证码登录接口(工作日记)

    首先我们打开jmeter 快捷按钮 win r 会弹出快捷运行弹框 我们输入cmd 后点击回车 会弹出一个控制窗口 我们输入jmeter 然后回车 首次进入jmeter 页面显示空白页且默认英文 我们可以切换语言 Options Choos
  • Flutter 仿朋友圈查看大图,Swiper支持滑动

    Swiper支持多图片预览 左右切换 flutter swiper插件传送地址 先上效果图 1 导入引用到pubspec yaml文件里面 引入后记得pub get flutter swiper 1 1 6 2 写一个图片的集合 可以使用本
  • Nginx配置安全策略总结

    Nginx配置安全策略总结 Content Security Policy 头缺失或不安全 X Content Type Options 头缺失或不安全 X XSS Protection 头缺失或不安全 HTTP Strict Transp
  • SpringCloud——GateWay网关(详解+案例)

    目录 一 相关概念 1 网关概念 2 网关作用 3 网关架构图 4 网关三大核心 二 案例 1 案例说明 2 搭建GateWay网关9527服务 1 创建maven工程 2 导入依赖 3 配置application yml文件 4 创建主启