微服务_服务网关(Gateway)

本文介绍了为什么需要微服务网关,如权限控制、路由和负载均衡等,并详细阐述了SpringCloudGateway的实现,包括创建服务、配置路由规则以及路由过滤器的使用。此外,还讨论了全局过滤器的定义、案例和执行顺序,以及如何在Gateway中解决跨域问题。
摘要由CSDN通过智能技术生成

目录

一、为什么需要网关

二、SpringCloud网关的实现方式

三、Gateway实践

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

2)编写启动类

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

4)重启测试

5)网关路由的流程图

四、断言工厂

五、过滤工厂

1)路由过滤器的种类

2)请求头过滤器

3)默认过滤器

4)总结

六、全局过滤

1)定义

2)案例

3)过滤器执行顺序

七、跨域问题

1)什么是跨域问题

2)解决跨域问题


一、为什么需要网关

     Gateway网关是我们服务的守门神,所有微服务的统一入口。不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求,如果让客户端直接与各个微服务通信,会有以下的问题:

  1. 客户端会多次请求不同的微服务,增加了客户端的复杂性
  2. 存在跨域请求,在一定场景下处理相对复杂
  3. 认证复杂,每个服务都需要独立认证
  4. 难以重构,随着项目的迭代,可能需要重新划分微服务。例如,可能将多个服务合并成一个或者将一个服务拆分成多个。如果客户端直接与微服务通信,那么重构将会很难实施
  5. 某些微服务可能使用了防火墙 / 浏览器不友好的协议,直接访问会有一定的困难

以上这些问题可以借助网关解决,因此网关主要有如下的特性:

  1. 权限控制:网关作为微服务入口,需要校验用户是是否有请求资格,如果没有则进行拦截。
  2. 路由和负载均衡:一切请求都必须先经过gateway,但网关不处理业务,而是根据某种规则,把请求转发到某个微服务,这个过程叫做路由。当然路由的目标服务有多个时,还需要做负载均衡。
  3. 限流:当请求流量过高时,在网关中按照下流的微服务能够接受的速度来放行请求,避免服务压力过大。

二、SpringCloud网关的实现方式

  • gateway
  • zuul

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

三、Gateway实践

搭建Gateway网关的基本步骤如下:

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

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

创建服务:

引入依赖:

JavaScript
<!--网关-->
<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)编写启动类

TypeScript
package cn.itcast.gateway;
 
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);
    }
}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Happy编程

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

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

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

打赏作者

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

抵扣说明:

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

余额充值
>