SpringCloud 组件Gateway服务网关【gateway快速入门】

news/2024/5/1 8:21:44/文章来源:https://blog.csdn.net/m0_64550837/article/details/127955057

目录

1:Gateway服务网关

1.1:为什么需要网关

1.2:gateway快速入门

1):创建gateway服务,引入依赖

2):编写启动类

3):编写基础配置和路由规则

4):重启测试

5):网关路由的流程图


1:Gateway服务网关

Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。

1.1:为什么需要网关

Gateway网关是我们服务的守门神,所有微服务的统一入口。

什么是网关的呢?

像上图的工作流程,用户将请求发送到微服务中,项目中的所有服务用户都可访问,一个项目中可是有些服务不能暴露出去访问的或者说有一定权限才能访问的,如果都可以访问,那势必会存在一定的安全性问题!那么怎么解决这个问题呢!则就引入了springCloud的组件,gateway(网关)进行解决!

网关的核心功能特性

  • 身份认证,权限控制(请求来了网关进行判断你是谁进行权限的判断,判断通过,网关放行到微服务中 !网关作为微服务入口,需要校验用户是是否有请求资格,如果没有则进行拦截。)

  • 服务路由,负载均衡(比如有个请求功能到网关了,网关能处理业务吗?肯定不能,网关需要把请求转发到微服务当中,比如user-service服务中去,这时网关就需要进行判断了,根据你的请求网关处理给你转接到具体的哪个服务这个过程被称为路由。
    同样一个服务可能有多个实例,网关同样会做负载均衡)

  • 请求限流(比如说一个游乐场,场区规定容纳两万人,结果到双休日了一下子来了四万人,这时守门员出手了,你们两万人先等等,里面已经达到容纳量了!类比于,微服务中每个服务可能每小时只能接收一万次请求,双十二突然增多,这些服务因为承载不了垮掉了,网关出手了,把多出请求的拦截下来,避免服务压力过大,保证程序的正常运转,这就是限制流量)

架构图:

在SpringCloud中网关的实现包括两种:

  • gateway

  • zuul

Zuul是基于Servlet的实现,属于阻塞式编程。而SpringCloudGateway则是基于Spring5中提供的WebFlux,属于响应式编程的实现,具备更好的性能。

1.2:gateway快速入门

下面,我们就演示下网关的基本路由功能。基本步骤如下:

  1. 创建SpringBoot工程gateway,引入网关依赖

  2. 编写启动类

  3. 编写基础配置和路由规则

  4. 启动网关服务进行测试

1):创建gateway服务,引入依赖

创建服务:

 引入依赖

<!--网关-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!--nacos服务发现依赖-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2):编写启动类

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

3):编写基础配置和路由规则

创建application.yml文件,内容如下:

#端口号
server:port: 10010
spring:application:name: test-gatewaycloud:nacos:discovery:server-addr: localhost:8848   #nacos服务地址gateway:discovery:locator:enabled: true   #开启服务注册和发现的功能,自动创建router以服务名开头的请求路径转发到对应的服务routes:   # 网关路由配置- id: consumer                  #自定义,路由id,只要唯一即可uri: lb://service-consumer    #访问路径,路由的目标地址 lb是负载均衡,后面跟着服务名称predicates:                      #断言,也就是判断请求是否复合路由规则的条件- Path=/consumer/**            #这个是按照路径匹配,只要以/consumer/开头就符合要求

我们将符合Path 规则的一切请求,都代理到 uri参数指定的地址。

本例中,我们将 /consumer/**开头的请求,代理到lb://service-consumer,lb是负载均衡,根据服务名拉取服务列表,实现负载均衡。

 

4):重启测试

重启网关,访问http://localhost:10010/consumer/user/login时,符合/consumer/**规则,请求转发到uri:http://service-consumer/user/login/爱吃豆的土豆,得到了结果:

 


@RestController
@RequestMapping("/user")
public class UserController {@GetMapping("/login/{loginname}")@SentinelResource(value = "login" , blockHandler = "loginBlockHandler")public String login(@PathVariable("loginname") String str){return "登录成功"+ str;}

5):网关路由的流程图

整个访问的流程如下:

总结:

网关搭建步骤:

  1. 创建项目,引入nacos服务发现和gateway依赖

  2. 配置application.yml,包括服务基本信息、nacos地址、路由

路由配置包括:

  1. 路由id:路由的唯一标示

  2. 路由目标(uri):路由的目标地址,http代表固定地址,lb代表根据服务名负载均衡

  3. 路由断言(predicates):判断路由的规则,

  4. 路由过滤器(filters):对请求或响应做处理

 

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

亮相2022南京软博会,创邻科技携Galaxybase图平台展现信创硬核实力

11月23日&#xff0c;2022中国&#xff08;南京&#xff09;国际软件产品和信息服务交易博览会&#xff08;以下简称”软博会“&#xff09;在南京博览中心隆重开幕。此次展会以“软件赋能 数智转型”为主题&#xff0c;由江苏省工业和信息化厅、南京市人民政府、中国工业技术软…

格式化DataFrame中的时间数据DataFrame.to_datetime()方法

小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 格式化DataFrame中的时间数据 DataFrame.to_datetime()方法 选择题 关于以下python代码说法错误的一项是? import pandas as pd data {"Date": [2022/12/01,2022/12/02]} df pd…

JavaScript高级复习下(60th)

1、函数内 this 的指向 2、严格模式 1、什么是严格模式 JavaScript 除了提供正常模式外&#xff0c;还提供了 严格模式&#xff08;strict mode&#xff09;。ES5 的严格模式是采用具有限制性 JavaScript 变体的一种方式&#xff0c;即在严格的条件下运行 JS 代码。 严格模式…

【面试宝典】Java八股文之Redis面试题

Redis面试题1、什么是 Redis?2、Redis 与其他 key-value 存储有什么不同?3、Redis 的数据类型?4、使用 Redis 有哪些好处?5、Redis 相比 Memcached 有哪些优势?6、Memcache 与 Redis 的区别都有哪些?7、Redis 是单进程单线程的?8、一个字符串类型的值能存储最大容量是多…

信创产业多点开花,AntDB数据库积极参与行业标准研制,协同价值链伙伴共促新发展

11月&#xff0c;AntDB数据库积极参与多项数据库行业标准研讨会&#xff0c;助推行业规范建立&#xff1b;凭借领先的技术研发能力与企业创新能力&#xff0c;在今年9月入选了《2022爱分析数据智能厂商全景报告》&#xff0c;此次又凭借在信创市场的深入推广&#xff0c;入选《…

【LeetCode每日一题:809.情感丰富的文字~~~双指针+计数器】

题目描述 有时候人们会用重复写一些字母来表示额外的感受&#xff0c;比如 “hello” -> “heeellooo”, “hi” -> “hiii”。我们将相邻字母都相同的一串字符定义为相同字母组&#xff0c;例如&#xff1a;“h”, “eee”, “ll”, “ooo”。 对于一个给定的字符串 S…

101个CV模型集体开源,魔搭社区视觉AI深度解析

作者&#xff1a;谢宣松 达摩院开放视觉智能团队 11月3日&#xff0c;在2022云栖大会上&#xff0c;阿里达摩院联手 CCF 开源发展委员会共同推出了 AI 模型社区“魔搭”ModelScope&#xff0c;旨在降低 AI 的应用门槛。 AI 模型较为复杂&#xff0c;尤其是要应用于行业场景&…

sklearn.metrics模块重要API总结(持续更新)

目录前言各类指标分类指标&#xff08;Classification metrics&#xff09;sklearn.metrics.accuracy_scoresklearn.metrics.aucaverage_precision_score (AP)回归指标&#xff08;Regression metrics&#xff09;多标签排序指标&#xff08;Multilabel ranking metrics&#x…

天宇优配|北上广深角逐“国字号”数据交易所 行业爆点

今日&#xff0c;上海数据生意地点揭牌一周年之际&#xff0c;将发动数据生意节&#xff0c;并将探究树立数交所国际板。10天前&#xff0c;深圳数据生意所正式揭牌。至此&#xff0c;北上广深四个一线城市均已树立数据生意所。 数据作为新型生产要素&#xff0c;正成为各地争相…

Linux登陆配置虚拟机

启用虚拟机一、启动虚拟机1、登录虚拟机2、查看IP地址3、能否PING通外网二、配置静态IP地址1、修改网卡配置文件2、重启网络服务3、重启虚拟机4、查看修改后的IP地址5、测试虚拟机能否Ping通外网三、测试宿主机与虚拟机能否相互Ping通1、测试宿主机能否Ping通虚拟机2、测试虚拟…

云原生系列 六【轻松入门容器基础操作】

✅作者简介&#xff1a; CSDN内容合伙人&#xff0c;全栈领域新星创作者&#xff0c;阿里云专家博主&#xff0c;华为云享专家博主&#xff0c;掘金后端评审团成员 &#x1f495;前言&#xff1a; 最近云原生领域热火朝天&#xff0c;那么云原生是什么&#xff1f;何为云原生&a…

户外运动耳机如何选择、最优秀的五款户外运动耳机推荐

有些人花时间在户外纯粹是为了听听大自然的声音。其他人可能不想在没有娱乐或鼓舞人心的音频选择的情况下跑步、徒步、散步或骑自行车。找到适合锻炼的耳机相当简单&#xff0c;就像健身耳机一样&#xff0c;您会希望这些耳机能够舒适、安全地贴合您的耳朵&#xff0c;这样它们…

m基于PTS+TR的OFDM系统PAPR联合抑制算法matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法描述 部分传输序列(Partial Transmit Sequence , PTS)由于其不受载波数量限制&#xff0c;并且能够有效的&#xff0c;无失真的降低OFDM信号峰均比&#xff0c;而受到广泛关注。部分传输序列算…

docker容器网络

第七章容器网络 Docker网络 veth pair&#xff1a;成对出现的一种虚拟网络设备&#xff0c;数据从一端进&#xff0c;从另一端出。用于解决网络命名空间之间隔离。 docker0&#xff1a;网桥是一个二层网络设备&#xff0c;通过网桥可以将Linux支持的不同端口连接起来&…

开源让这位 00 后逆袭成为各类大奖收割者

OpenI 启智社区在 2022 年推出的开源打榜活动&#xff0c;聚集了一帮非常活跃的开发者&#xff0c;上榜者覆盖了来自全国高校、科研机构、企业达 100 多家。其中&#xff0c;高校学生占 65%&#xff0c;近 60%的上榜者是 90 后&#xff0c;32%的上榜者是 00 后。真是 00 后浪推…

41、集合

一、基本介绍&#xff1a; 1、引入&#xff1a; &#xff08;1&#xff09;前面我们保存多个数据使用的是数组&#xff0c;但数组不足的地方有&#xff1a; 1&#xff09;长度开始时必须指定&#xff0c;而且一旦指定&#xff0c;不能更改 2&#xff09;保存的必须为同一类…

Socket网络编程

参考博客&#xff1a;https://blog.csdn.net/shuux666/article/details/124023652 1、环境查看 通过cmd窗口的命令:ipconfig查看本机IP地址 查看网络情况是否正常:ping百度官网 2、Socket概述 3、套接字建立连接过程 4、Socket网络编程 基本的Socket编程&#xff1a; 本实…

异常(Exception)

随着面向对象的结束&#xff0c;我们的JavaSE也就接近了尾声&#xff0c;还有两个章节没有去梳理&#xff0c;常用类和异常&#xff0c;本章先讲异常&#xff0c;剩下的常用类后面再来补。 废话不多说&#xff0c;直接开始本章的内容。 1. 认识异常 引出&#xff1a; 假设 n…

ArcGIS综合制图教程,简单上手!

目的 1、了解专题地图组成的各个要素&#xff1b; 2、掌握ArcGIS编辑专题图的方法和步骤&#xff1b; 实习内容 使用ArcGIS生成1&#xff1a;200万比例尺的浙江省县级行政区划图&#xff0c;并输出成像文件。 实习步骤 一、将ArcGIS切换到Layout视图&#xff0c;并调整页面…

[附源码]java毕业设计疫情期间物资分派管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…