卡卷网
当前位置:卡卷网 / 每日看点 / 正文

为什么微服务一定要有网关?

作者:卡卷网发布时间:2024-11-17 22:00浏览数量:163次评论数量:0次

网关

一句话总结,网关的作用是上浮公共逻辑,下沉差异逻辑。公共逻辑就是所有接口都需要做的事,比如权限校验,限流算法等,这样业务就只需要关心业务逻辑即可。下面是一个对比图:

为什么微服务一定要有网关?  第1张

当然除了一些公共逻辑外,路由也是网关的核心功能,它可以进行流量转发。限流方面可以结合限流组件或者自己实现限流算法来实现。

设计一个网关的思

我们首先想到的是网关本身不提供订单,商品,营销等能力,所以需要转发出去。那么网关跟各个服务之间就需要记录一种关系。所以可以有一张路由表,记录每个服务对应的域名/服务名,比如这样

服务前缀服务域名服务名称
orderorder.com/订单服务
productproduct.com/商品服务

由于所有的请求都要经过网关,假设现在有两个请求,分别请求订单详情跟商品详情,那么请求的url可能是这样:

  • jayden.gateway.com/order/detail
  • jayden.gateway.com/product/detail

此时在网关的逻辑里可以获取到紧跟域名后到第一个path,也就是order跟product。然后通过查表可以获取到对应的服务域名,这样就可以将请求转发到以下路径:

  • order.com/order/detail
  • product.com/product/detail

这就是网关最核心的逻辑,其实就是一张路由表。当然各种网关实现的逻辑都不相同,但是核心逻辑都是一样的。


Gateway

简介

Spring Cloud Gateway在Spring Cloud的大家庭里扮演着重要角色,它像一位得力助手,专门用来搭建基于HTTP的微服务世界的API大门(所有请求都要过网关)。有了它,管理微服务应用的API流量变得既灵活又强大。 在这个过程中,路由和过滤器是Spring Cloud Gateway的两大法宝。想象一下,它们能聪明地指引每个请求找到正确的目的地(微服务),这一切都根据请求的路径、来源或者请求方式等条件自动完成。而且,它还支持负载均衡、熔断机制和自动重试等功能,让微服务架构更加健壮。 更酷的是,可以定制自己的过滤器,这就像给网关装上了魔法,无论是请求前的小小调整,还是响应后的特别加工,比如安全检查、记录日志或是改变请求的样子,都能轻松搞定,适应多种多样的需求。 性能方面,Spring Cloud Gateway采用非阻塞的Reactor框架,速度快、消耗少,绝对是性能小能手。再加上Spring Boot的好搭档属性,通过几行简洁的配置和注解,就能快速打包、部署你的网关服务,省时又省力。


Gateway配置

下面是一个示例配置,配置了user,order,product3个服务

server: port: 8080 ​ spring: application: name: gateway-service ​ cloud: gateway: routes: - id: user-service-route # 路由的唯一标识符 uri: lb://user-service # uri指定了目标微服务的名称(lb://前缀表示使用负载均衡) predicates: # 定义了匹配请求的条件 - Path=/api/users/** - id: order-service-route uri: lb://order-service predicates: - Path=/api/orders/** - id: product-service-route uri: lb://product-service predicates: - Path=/api/products/**


当客户端发送一个请求到Spring Cloud Gateway时,以下是请求的大致过程:

  • 客户端发送请求:客户端发送HTTP请求到Spring Cloud Gateway。
  • 路由匹配:Spring Cloud Gateway根据预先定义的路由规则(predicates)对请求进行匹配。路由规则定义了请求应该被转发到哪个目标微服务(uri)
  • 过滤器链:在请求被路由之前和之后,Spring Cloud Gateway会应用一系列的过滤器来对请求进行处理。过滤器可以修改请求、添加头信息、进行身份验证等操作。
  • 负载均衡:Spring Cloud Gateway使用负载均衡算法选择一个服务实例作为请求的目标。uri后面的lb就是负载均衡的作用
  • 转发请求:Spring Cloud Gateway将请求转发到目标微服务实例。
  • 目标微服务处理请求:目标微服务接收到请求后,处理请求并生成响应。
  • 响应返回:目标微服务生成响应后,将响应发送回Spring Cloud Gateway。
  • 过滤器链反向执行:Spring Cloud Gateway将响应经过过滤器链反向执行,可以对响应进行修改、添加头信息等操作。
  • 响应返回客户端:Spring Cloud Gateway将最终的响应返回给客户端。


扩展:网关可以不注册到注册中心吗?

答案是不行。我们知道Gateway也是一个微服务组件,微服务组件都要注册到注册中心,那么注册中心上有什么呢?对!所有服务的注册信息,那么这些信息不就是路由表的一部分吗?配置中的服务名可以通过注册信息获取具体的服务地址。

END

免责声明:本文由卡卷网编辑并发布,但不代表本站的观点和立场,只提供分享给大家。

卡卷网

卡卷网 主页 联系他吧

请记住:卡卷网 Www.Kajuan.Net

欢迎 发表评论:

请填写验证码