当前位置:首页 > 每日看点

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

卡卷网2年前 (2024-11-17)每日看点645

网关

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

为什么微服务一定要有网关?  第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也是一个微服务组件,微服务组件都要注册到注册中心,那么注册中心上有什么呢?对!所有服务的注册信息,那么这些信息不就是路由表的一部分吗?配置中的服务名可以通过注册信息获取具体的服务地址。

扫描二维码推送至手机访问。

版权声明:本文由卡卷网发布,如需转载请注明出处。

本文链接:https://www.kajuan.net/ttnews/2024/11/438.html

分享给朋友:

相关文章

学了两个月网络安全,一直未入门怎么办,知乎大佬们给些建议吧?

学了两个月网络安全,一直未入门怎么办,知乎大佬们给些建议吧?

你才学两个月,就想入门,笑不活了,我学了8年了,还被人说是个菜鸟。 我学了这么多的渗透,依然挖不到自己的漏洞。 ailx10:学习CSRF漏洞 ailx10:学习PHP XXE漏洞 ailx10:学习CORS漏洞 ailx10:学习Cl…

有了Istio,开发还需要微服务架构吗?

有了Istio,开发还需要微服务架构吗?

Istio 是一个开源的服务网格(Service Mesh),通过它可以实现对服务间通信的管理和监控。对于那些本身没有设计为具备安全功能的传统应用程序,Istio 可以提供一个“透明”的安全保护层,而不需要对应用本身进行任何代码修改。…

小米14 Pro和Redmi K70Pro怎么选?

小米14 Pro和Redmi K70Pro怎么选?

两款手机都使用了最新的骁龙8Gen3旗舰芯片,性能都是顶级,但是两款手机定位不同,卖点不同,红米K70 Pro定位主打性能的旗舰入门手机,小米14Pro定位旗舰中高端手机。具体根据个人需求与预算来选择: 两款手机的相同、相似点:都使用了骁龙…

知乎创作收益高吗?

知乎创作收益高吗?

高啊,主要是大多数人不知道怎么做。(这是以前写的,请看到最后) 我之前就是傻傻写问答,文章,结果一毛钱收益没有。 知乎上收益高的主要有盐选,好物推荐,致知计划,付费咨询。1、盐选吧,是写故事,小说类的天堂,还有就是大咖们的地盘了,难度高。…

小米14和华为mate60怎么选?

手持荣耀20,用了五年多了,使用仍然较为流畅,但是电池不太行了,于是2024年8月在家乡的小米之家购买了小米14(12+256),用了快两个月吧,说说使用体验。 外观层面,由于我使用的荣耀20放在现在妥妥地属于小屏,习惯了小屏,遂购买小米1…

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。