网关Gateway的介绍与使用

前言:
最近在学习微服务相关的知识,看了黑马的相关课程,将关于Gateway的知识又总结了一些,希望能帮到各位小伙儿们以及加深下自己的印象🎊
如果文章有什么需要改进的地方还请大佬多多指教🥂
小威先感谢大家的支持了😁
在这里插入图片描述

🏠个人主页:小威要向诸佬学习呀
🧑个人简介:大家好,我是小威,一个想要与大家共同进步的男人😉😉
目前状况🎉:目前大二,在一家满意的公司实习👏👏

🎁如果大佬在准备面试,可以使用我找实习前用的刷题神器哦刷题神器点这里哟
💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,我亲爱的大佬😘

🍑网关介绍

网关(Gateway)又称网间连接器、协议转换器。默认网关在网络层以上实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关的结构也和路由器类似,不同的是互连层。网关既可以用于广域网互连,也可以用于局域网互连。

网关是一种充当转换重任的计算机系统或设备。使用在不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器。与网桥只是简单地传达信息不同,网关对收到的信息要重新打包,以适应目的系统的需求。同层–应用层。
在这里插入图片描述

因此综上所述:

网关(Gateway)是将两个使用不同协议的网络段连接在一起的设备。
网关的作用就是对两个网络段中的使用不同传输协议的数据进行互相的翻译转换。

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

🍉网关实现

在SpringCloud中网关的实现主要包括两种:gateway和zuul

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

🍭Gateway的使用

Gateway网关的使用步骤如下:

  1. 创建SpringBoot工程gateway,引入网关依赖
  2. 编写启动类
  3. 编写基础配置和路由规则
  4. 启动网关服务进行测试

第一步,引入依赖

<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参数指定的地址。

在这里插入图片描述

🍄网关入门小结

总结:

网关搭建步骤:

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

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

路由配置包括:

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

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

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

  4. 路由过滤器(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这种路由工程就可以了。
也有一些其他的工厂,我们下篇文章讨论。

在这里插入图片描述

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

在这里插入图片描述

网关Gateway)是一个在网络中充当中转站的服务器,它可以连接不同的网络、协议或者服务,并提供一些功能和服务来增强网络的安全性、性能和可靠性。网关的作用有以下几个方面: 1. 路由转发:网关可以根据不同的目标地址,将请求转发到不同的网络或者子网中,实现网络之间的连接。 2. 协议转换:网关可以将一个协议的请求转换成另一个协议的请求,使得不同的系统或者服务能够互相通信。例如,将HTTP请求转换成HTTPS请求。 3. 安全认证与授权:网关可以对请求进行身份认证和授权,确保只有合法的用户能够访问受保护的资源。它可以实现用户身份验证、访问控制、API密钥管理等功能。 4. 流量控制与限流:网关可以对请求进行流量控制和限流,防止恶意攻击或者过多的请求导致系统负载过高。它可以实现访问频率限制、并发连接数控制等功能。 5. 缓存与加速:网关可以缓存一些常用的数据或者响应结果,提高系统的性能和响应速度。它可以减少对后端服务的请求压力,加速数据的传输和处理。 6. 监控与日志:网关可以对请求和流量进行监控和记录,收集系统的运行数据和日志信息,用于故障排查、性能优化和安全审计。 总而言之,网关在网络中起到了连接、转发、安全、控制和加速等多个方面的作用,为系统提供了更好的可用性、性能和安全性。
评论 147
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小威要向诸佬学习呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值