API网关以及为什么要绕过网关

392 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第1天,点击查看活动详情

API网关

API网关是一个将业务系统内部的多个微服务进行封装,对外提供唯一访问入口,实现系统内高内聚,系统间松耦合的服务器。还可以实现动态路由、压力测试、负载均衡、流量控制、审查与监控等功能,是现在常用的微服务架构解决方案

微服务不能没有网关,就如同 Java 程序员不能没有IDEA、Eclipse。为什么呢?感兴趣了下篇介绍😊

为什么要绕过网关

API网关功能很强大,但有些功能需要绕过网关,如大文件上传,如果也是网关代理,文件就会经过多次网络传输,造成不必要的网络负担,在高并发的时候还可能导致网络阻塞,甚至系统瘫痪。

这么一看,恐怖如斯,下面让我们看一下怎么配置文件上传接口绕过网关👇

方式:Nginx配置直连

目前的前端项目大都采用nginx部署,下面展示nginx怎么配置绕过网关👇

/api/pgk/ 路径是API网关的路径

  1. 先对api网关路径进行重写

  2. 将重写后的路径代理到 upstream 模块(nginx软负载均衡)

  3. upstream 模块可以将服务器进行分组,接收并分配 proxy_pass 转发过来的请求,将请求按照最少连接的算法策略转发给各个服务器,这也使得nginx跨越单机的限制,完成网络数据的接收、处理和转发。

下面看一下具体的配置示例:

http {
  upstream fileUpload {
    server 10.10.10.10:18600;
    least_conn;
  }
  
  server {
    # 文件上传接口路径
    rewrite /api/pgk/upload /upload;
    
    listen 8000;
    server_name localhost;
    
    location = /upload {
      proxy_set_header Host $host:8080;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_pass http://fileUpload;
      expires -1;
    }
    
    location / {
      root /home/share/html;
      index index.html;
    }
  }
}

🎈🎈🎈

🌹 关注我,你会发现一个踏实努力的宝藏前端😊,让我们一起学习,共同成长吧。

🎉 喜欢的小伙伴记得点赞关注收藏哟,回看不迷路 😉

✨ 欢迎大家转发、评论交流

🎊 蟹蟹😊