当前位置:首页 > 每日看点 > 正文内容

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

卡卷网1年前 (2024-11-17)每日看点545

网关

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

为什么微服务一定要有网关?  第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

分享给朋友:

相关文章

想要在双 11 换一台全面无短板的新手机,有没有「闭眼买」的机型推荐?

想要在双 11 换一台全面无短板的新手机,有没有「闭眼买」的机型推荐?

最近一个月各大手机厂商的旗舰机扎堆发布,不知道大家看爽了没?这一代的性能续航大提升,最低 3599 元就能买到,同时老款也有不小的降幅,今年双 11 算是相当适合换手机的节点了!这次,小黑就给大家推荐双 11 期间值得购买的手机...150...

数字人民币为什么又不火了?

我完全不懂行。我一开始以为,数字人民币,是对我银行里的每一分钱,都赋予一个独一无二的数字编码。我要用一块钱买矿泉水,它就从我的存款中随机选取一百个一分钱,组合成一块钱,支付给商家。我花一百块钱吃饭,它就随机选取一万个一分钱,组合成一百块钱,...

抖音上有一些账号搬运别人的视频,几乎一模一样,也没判搬运,他们是怎么做到的??

对于任何短视频平台来说,如何用最低的成本快速实现伪原创搬运都是需要解决的问题。所有的短视频平台,包括抖音、快手、tiktok、视频号、小红书、B站,甚至是FB、推特、INS、YouTube,它们的查重技术都是类似的,只要你在网络环境设置得当...

华为纯血鸿蒙,从此天下三分了吗?

华为纯血鸿蒙,从此天下三分了吗?

万众期待的纯血版 HarmonyOS NEXT 终于是端上来了,主打一个自研,从里到外,从内核到架构,都是自研。用户的激情已经被点燃,可见大家对于纯血鸿蒙的期待,但是鸿蒙系统能不能真正与安卓、iOS三分天下呢?目前来说,还为时过早。iOS和...

鸿蒙系统到底是不是安卓系统?

你好,是的。接下来我给不懂技术的人简单的说一下哄蒙系统的来龙去脉。首先你要知道什么是开源。‌‌开源(Open Source)全称为开放源代码‌,意味着任何人都可以获取和使用软件的源代码,并在遵守版权协议的前提下进行修改和再发布。‌12开源软...

年收入40万的网文作者,是不是可以吊打任何职业了?

哈,我二十岁的时候也这么狂。想当年,我一个大二学生,在宿舍里写出一本大精品,月入两万五,在学校里走路都是横着的,游戏卡池一开,看都不看,氪到出货为止。iPhone12pro一发布直接买,还买了个iPad Pro,都是官网直接买的,Apple...

发表评论

访客

看不清,换一张

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