网关

网关(Gateway)是计算机网络中的一个重要概念,通常用于连接不同的网络或协议,并在它们之间进行数据转发、协议转换和安全控制。在微服务架构中,网关的作用尤为重要,它充当了客户端和后端服务之间的中间层,负责路由、负载均衡、安全认证、限流等功能。


1. 网关的基本概念

网关是一个网络节点,它充当不同网络或协议之间的桥梁。它的主要功能包括:

  • 协议转换:在不同协议之间进行转换(如 HTTP 到 gRPC)。
  • 路由转发:将客户端请求转发到正确的后端服务。
  • 安全控制:提供身份验证、授权、加密等安全功能。
  • 负载均衡:将请求分发到多个后端实例,以提高系统的可用性和性能。
  • 限流和熔断:防止系统过载,保护后端服务。

2. 网关的类型

根据使用场景的不同,网关可以分为以下几种类型:

(1)网络网关

  • 用于连接不同的网络(如局域网和广域网)。
  • 主要功能是协议转换和路由转发。
  • 例如:家庭路由器、企业防火墙。

(2)API 网关

  • 用于微服务架构中,作为客户端和后端服务之间的中间层。
  • 主要功能包括路由、负载均衡、安全认证、限流等。
  • 例如:Spring Cloud Gateway、Kong、Nginx。

(3)消息网关

  • 用于在不同消息系统之间进行协议转换和数据转发。
  • 例如:Kafka Connect、RabbitMQ。

3. API 网关的作用

在微服务架构中,API 网关是客户端和后端服务之间的唯一入口。它的主要作用包括:

(1)路由转发

  • 根据请求的路径、方法或其他条件,将请求转发到相应的后端服务。
  • 例如:将 /user/** 的请求转发到用户服务,将 /order/** 的请求转发到订单服务。

(2)负载均衡

  • 将请求分发到多个后端实例,以提高系统的可用性和性能。
  • 例如:使用轮询、随机或加权算法进行负载均衡。

(3)安全控制

  • 提供身份验证(如 JWT、OAuth2)和授权功能。
  • 防止未经授权的访问。
  • 例如:验证请求中的 Token,检查用户权限。

(4)限流和熔断

  • 限制每个客户端或服务的请求速率,防止系统过载。
  • 在服务不可用时,提供熔断机制,避免雪崩效应。
  • 例如:使用令牌桶算法进行限流。

(5)日志和监控

  • 记录请求和响应的日志,便于排查问题。
  • 提供实时监控和报警功能。
  • 例如:记录每个请求的响应时间、状态码。

(6)协议转换

  • 在不同协议之间进行转换(如 HTTP 到 gRPC)。
  • 例如:将 HTTP 请求转换为 gRPC 请求,调用后端服务。

4. 常见的 API 网关

以下是一些常见的 API 网关工具和框架:

(1)Spring Cloud Gateway

  • 基于 Spring 生态的 API 网关。
  • 支持路由、限流、熔断、安全认证等功能。
  • 适合 Spring Boot 和 Spring Cloud 项目。

(2)Kong

  • 基于 Nginx 的高性能 API 网关。
  • 支持插件扩展,功能丰富。
  • 适合大规模分布式系统。

(3)Nginx

  • 高性能的 Web 服务器和反向代理。
  • 可以通过配置实现简单的 API 网关功能。
  • 适合中小型项目。

(4)Envoy

  • 由 Lyft 开发的高性能代理。
  • 支持动态服务发现、负载均衡、限流等功能。
  • 适合云原生环境。

(5)Traefik

  • 基于 Go 语言的动态 API 网关。
  • 支持自动服务发现和配置更新。
  • 适合容器化环境(如 Kubernetes)。

5. API 网关的架构

在微服务架构中,API 网关通常位于客户端和后端服务之间,架构如下:

复制

客户端 -> API 网关 -> 后端服务
  • 客户端:发送 HTTP 请求。
  • API 网关:处理请求的路由、安全、限流等功能。
  • 后端服务:实际的业务逻辑处理。

6. API 网关的优缺点

优点:

  • 简化客户端:客户端只需要与网关交互,无需了解后端服务的细节。
  • 集中管理:可以在网关中统一实现安全、限流、日志等功能。
  • 提高性能:通过负载均衡和缓存提高系统的性能和可用性。

缺点:

  • 单点故障:如果网关出现故障,整个系统可能无法访问。
  • 性能瓶颈:网关可能成为系统的性能瓶颈,需要优化和扩展。
  • 复杂性:网关的配置和维护可能比较复杂。

7. 总结

  • 网关是连接不同网络或协议的桥梁,负责数据转发、协议转换和安全控制。
  • 在微服务架构中,API 网关是客户端和后端服务之间的中间层,提供路由、负载均衡、安全认证、限流等功能。
  • 常见的 API 网关工具包括 Spring Cloud Gateway、Kong、Nginx 等。

黑马商城中用到的网关的实现:

Spring提供的SpringCloud Gateway

网关组成:路由转发+过滤器(编写额外功能)

路由转发:接受外界请求,通过网关的路由转发,转发到后端服务上

在route中id是自定的,uri就是一个地址,剩下的predicate和Filter学明白了,route也就学明白了

中文:谓词

谓词学习gateway比较重要一点的理解就是一些附加条件和内容

所有生效的Filter都是GatewayFilter的实例,在Gateway运行过程中Filter负责在dialing服务之前或者之后去做一些事情

网关的概念:所谓的API网关,就是指系统的统一入口,提供内部服务的路由中转,为客户端提供统一服务,一些与业务本身功能无关的公共逻辑可以在这里实现,诸如认证、鉴权、监控、路由转发等。

执行流程:

博客内容均系原创,未经允许严禁转载!
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇