当前位置:网站首页>网关Gateway的介绍与使用
网关Gateway的介绍与使用
2022-07-07 14:18:00 【小威要向诸佬学习呀】
前言:
最近在学习微服务相关的知识,看了黑马的相关课程,将关于Gateway的知识又总结了一些,希望能帮到各位小伙儿们以及加深下自己的印象
如果文章有什么需要改进的地方还请大佬多多指教
小威先感谢大家的支持了
个人主页:小威要向诸佬学习呀
🧑个人简介:大家好,我是小威,一个想要与大家共同进步的男人
目前状况:目前大二,在一家满意的公司实习如果大佬在准备面试,可以使用我找实习前用的刷题神器哦刷题神器点这里哟
欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,我亲爱的大佬
牛客部分使用反馈,个人感觉还不错,帮我找到了心仪的公司,希望各位伙伴儿们通过它也能提高不少
网关介绍
网关(Gateway)又称网间连接器、协议转换器。默认网关在网络层以上实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关的结构也和路由器类似,不同的是互连层。网关既可以用于广域网互连,也可以用于局域网互连。
网关是一种充当转换重任的计算机系统或设备。使用在不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器。与网桥只是简单地传达信息不同,网关对收到的信息要重新打包,以适应目的系统的需求。同层–应用层。
因此综上所述:
网关(Gateway)是将两个使用不同协议的网络段连接在一起的设备。
网关的作用就是对两个网络段中的使用不同传输协议的数据进行互相的翻译转换。
Gateway网关是我们服务的守门神,所有微服务的统一入口。
网关实现
在SpringCloud中网关的实现主要包括两种:gateway和zuul
Zuul是基于Servlet的实现,属于阻塞式编程。而SpringCloudGateway则是基于Spring5中提供的WebFlux,属于响应式编程的实现,具备更好的性能。
Gateway的使用
Gateway网关的使用步骤如下:
- 创建SpringBoot工程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>
第二步,编写启动类
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class GatewayApplication {
public static void main(String[] args) {
SpringApplication.run(GatewayApplication.class, args);
}
}
第三步,在ymal中编写配置和规则
server:
port: 10010 # 网关端口
spring:
application:
name: gateway # 服务的名称
cloud:
nacos:
server-addr: localhost:8848 # nacos的地址
gateway:
routes: # 网关路由配置
- id: user-service # 路由id,自定义,只要唯一即可
# uri: http://127.0.0.1:8081 # 路由的目标地址 http就是固定地址
uri: lb://userservice # 路由的目标地址 lb就是负载均衡,后面跟服务名称
predicates: # 路由断言,也就是判断请求是否符合路由规则的条件
- Path=/user/** # 这个是按照路径匹配,只要以/user/开头就符合要求
我们将符合Path 规则的一切请求,都代理到 uri参数指定的地址。

网关入门小结
总结:
网关搭建步骤:
创建项目,引入nacos服务发现和gateway依赖
配置application.yml,包括服务基本信息、nacos地址、路由
路由配置包括:
路由id:路由的唯一标示
路由目标(uri):路由的目标地址,http代表固定地址,lb代表根据服务名负载均衡
路由断言(predicates):判断路由的规则,
路由过滤器(filters):对请求或响应做处理
断言工厂
Spring Cloud Gateway 内置了许多路由断言工厂,可以通过配置的方式直接使用,也可以组合使用多个路由断言工厂。
例如:
Path 路由断言工厂
Path 路由断言工厂接收一个参数,根据 Path 定义好的规则来判断访问的 URI 是否匹配。
```yaml
spring:
cloud:
gateway:
routes:
- id: host_route
uri: http://example.test
predicates:
- Path=/blog/detail/{
segment}
Method 路由断言工厂
Method 路由断言工厂接收一个参数,即要匹配的 HTTP 方法。
spring:
cloud:
gateway:
routes:
- id: method_route
uri: http://baidu.com
predicates:
- Method=GET
Cookie路由断言工厂
通过cookie和一个正则表达式作为断言条件的路由工厂,只要满足该条件就可以访问到该地址。
spring:
cloud:
gateway:
routes:
- id: between_route # 路由 Id,唯一
uri: https://example.org # 目标 URI, 路由到微服务的地址
predicates:
- Cookie=chocolate, ch.p # 使用Cookie路由断言工厂,配置cookie,正则表达式(可以没有)
配置解读:此路由将匹配具有一个名为chocolate的cookie的请求,该cookie的值匹配ch.p正则表达式
当然断言工厂有十几个,我们只需要掌握Path这种路由工程就可以了。
也有一些其他的工厂,我们下篇文章讨论。

文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起讨论
最后再次给大家安利一波牛客,点击刷题神器
注册牛客,快来和博主一起刷题吧嘿嘿嘿 再次感谢各位小伙伴儿们的支持

边栏推荐
- 95.(cesium篇)cesium动态单体化-3D建筑物(楼栋)
- PHP实现执行定时任务的几种思路详解
- How to implement backspace in shell
- Laravel5.1 Routing - routing packets
- IP地址和物理地址有什么区别
- hellogolang
- iptables只允许指定ip地址访问指定端口
- Three. JS series (3): porting shaders in shadertoy
- Three. JS series (2): API structure diagram-2
- The differences between exit, exit (0), exit (1), exit ('0 '), exit ('1'), die and return in PHP
猜你喜欢

Three. JS series (2): API structure diagram-2

记一次项目的迁移过程

AutoLISP series (1): function function 1

全网“追杀”钟薛高

【Vulnhub靶场】THALES:1

Mysql database basic operation DQL basic query

Rongyun won the 2022 China Xinchuang digital office portal excellence product award!
Notification uses full resolution

统计学习方法——感知机

华东师大团队提出,具有DNA调控电路的卷积神经网络的系统分子实现
随机推荐
Power of leetcode-231-2
iptables只允许指定ip地址访问指定端口
asyncio 概念和用法
3000 words speak through HTTP cache
Detailed explanation of several ideas for implementing timed tasks in PHP
URL和URI的关系
You Yuxi, coming!
Cesium(3):ThirdParty/zip. js
2022 the 4th China (Jinan) International Smart elderly care industry exhibition, Shandong old age Expo
How can laravel get the public path
Leetcode-136-只出现一次的数(用异或来解答)
What are compiled languages and interpreted languages?
记录Servlet学习时的一次乱码
PHP实现执行定时任务的几种思路详解
thinkphp3.2.3中设置路由,优化url
Leetcode-136- number that appears only once (solve with XOR)
01tire+链式前向星+dfs+贪心练习题.1
【C 语言】 题集 of Ⅹ
What about the pointer in neural network C language
Opportunity interview experience summary


