【第四阶段 day31】网关 负载均衡设计 断言(Predicate)分析 过滤器(Filter)分析 限流设计及实现

本文深入探讨Spring Cloud Gateway,包括其作为微服务网关的角色,负载均衡实现,断言(Predicate)和过滤器(Filter)的分析,以及限流设计和Sentinel的集成。介绍了如何创建和配置Gateway项目,实现服务发现,使用不同的断言工厂,并展示了局部和全局过滤器的用例。此外,还讨论了Sentinel在网关限流中的应用。
摘要由CSDN通过智能技术生成

1.网关

1.1 概述

网关本质上要提供一个各种服务访问接口,并提供服务接收并转发所有内外部的客户端调用,还有就是权限认证,限流控制等等。Spring Cloud Gateway是Spring公司开发的一个网关组件,它旨在为微服务架构提供一种简单有效的统一的API接口,负责请求路由,组合及协议转换,并且基于Filter链的方式提供了权限认证,监控,限流等功能。

1.2 Spring Cloud Gateway优缺点

优点:

  • 性能强劲:是第一代网关Zuul的1.6倍
  • 功能强大:内置了很多的功能,例如转发,监控,限流等等
  • 设计优雅,容易扩展

缺点:

  • 依赖Netty与WebFlux,不是传统的Servlet模型
  • 需要Spring Boot2.0及以上的版本才支持

1.3 入门案例

通过网关作为服务的访问接口,对系统中的服务进行访问,例如通过网关服务去访问sca-provider服务

1.3.1 创建sca-gateway模块,其pom.xml文件如下:
<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
 </dependency>
1.3.2 创建application.yml,添加相关的配置
server:
  port: 9000
spring:
  application:
    name: sca-gateway
  cloud:
    gateway:
        routes: #配置网关路由规则,是gateway中最基本的组件之一,表示一个具体的路由信息载体
          - id: route01  #路由id,自己指定一个唯一值即可。路由标识符,区别于其他的Route
            uri: http://localhost:8081/ #网关帮我们转发的url,路由指向的目的地,即客户端请求最终被转发到的微服务
            predicates: ###断言(谓此):匹配请求规则。进行条件判断,只有断言都返回真,才会执行路由
              - Path=/nacos/provider/echo/**  #请求路径定义,此路径对应uri中的资源
            filters: ##网关过滤器,用于对谓词中的内容进行判断分析以及处理。用于修改请求与响应信息
              - StripPrefix=1 #转发之前去掉path中第一层路径,例如nacos
1.3.3 创建项目启动类
package com.cy;

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

1.4 小结面试

  • 什么是网关(服务访问、流量的一个接口,类似于“海关”)
  • 为什么使用网关(服务安全,统一服务入口管理,负载均衡,限流,鉴权)
  • Spring Cloud Gateway应用去实现的的初始构建过程(添加依赖,配置)
  • Gateway服务的启动底层是通过谁实现的(Netty网络编程框架-ServerSocket)
  • Gateway服务做请求转发时一定要在注册中心进行注册吗(不一定,可以直接通过远程url进行访问)

2.负载均衡设计

网关才是服务访问的入口,所有服务都会在网关层面进行底层的映射,所以在访问服务时,要基于服务service id (服务名)去找相应的服务,让请求从网关层进行均衡转发,以平衡服务实例处理的能力

2.1 Gateway中负载均衡的实现

2.1.1 项目中添加服务发现依赖
<dependency>
  <groupId>com.alibaba.cloud</groupId>
  <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值