网关使用总结

网关

作用:统一去操作、处理一些问题。类似于前台。
具体作用如下:

  1. 路由:起到转发的作用,比如有接口A和接口B,网关会记录这些信息,根据用户的请求地址和参数,转发到对应的接口(服务器/集群)
  • /a => A服务器
  • /b => B服务器
  1. 负载均衡:在路由的基础上
    /c => 集群A(随机转发到一台机器上)
  2. 统一鉴权:无论访问哪一个接口,都统一鉴定权限,不用重复写
  3. 跨域:网关统一处理跨域,不用在每个项目中单独处理
  4. 统一业务处理:把一些每个项目中都要做的通用逻辑放到上层(网关),统一处理,比如api项目的接口调用次数统计
  5. 访问控制:黑白名单,比如限制 DDOS IP。
  6. 发布控制:灰度发布,比如上线接口新版本,先给新接口分配 20% 的流量,老接口 80%,没问题的话,再慢慢调整比重,比重不断向新接口倾斜,直至最后完全替代老版本。
  7. 流量染色:给请求添加一些标识,一般添加在请求头中。
    • 场景1:防止某个用户绕过网关直接访问接口服务器(项目地址暴露的话),可以在请求通过网关后添加一个类似于“source = gateway”,没有该请求头的请求一律拒绝访问
    • 场景2:排查用户调用接口出不出问题,可以在请求中打一个唯一的 “traceId = xxx”,出问题后方便排查
  8. 接口保护:
    • 请求保护:
    • 接口脱敏:有返回服务器地址的话,抹掉请求头
    • 降级(熔断):调用失败的话,访问其他接口(或提示信息等降级逻辑)
    • 限流:
    • 超时时间:类似10s没返回强制中断,保护服务器
  9. 统一日志、统一文档

网关的分类

全局网关(接入层网关):作用是负载均衡、请求日志等,不和业务逻辑绑定。
业务网关(微服务网关):会有一些业务逻辑,作用是将请求转发到不同的业务 / 项目 / 接口 / 服务。

当涉及网关分类时,一般情况下有**两种主要类型:**业务网关和全局网关,其中接入层网关也是全局网关的一种。它们有着一些区别。全局网关通常位于多个项目或微服务之上,负责根据用户请求将其转发到不同的业务、项目、接口或服务。另一方面,全局网关更多地关注请求本身,主要用于负载均衡。全局网关在大多数情况下并不涉及复杂的业务逻辑。相比之下,业务网关可能会包含一定的业务逻辑,比如之前提到的统计次数功能,这会影响你在技术选型上的决策。
全局网关的主要功能是负载均衡,将大量的请求平均分摊到系统中的多台机器上,它通常不涉及过多的业务逻辑,而更注重处理请求日志等任务。业务网关则更多地关注业务逻辑,例如统计次数、请求鉴权等,同时也会负责转发请求到具体的业务处理单元。

然而在实际开发中,上并不一定要明确区分业务网关和全局网关,因为它们的分类对于技术选型并不是绝对的要求。重要的是根据系统需求来选择适合的网关类型。

  1. Nginx(全局网关)、Kong 网关(API 网关,Kong),编程成本相对高一点。
  2. Spring Cloud Gateway(取代了 Zuul)性能高、可以用 Java 代码来写逻辑,适于学习。

Nginx 是比较推荐的全局网关,也称为接入层网关。Nginx 可以部署前端和后端,还能提供文件访问服务等多种功能,非常灵活。我们甚至可以在 Nginx 中编写业务逻辑,但是并不推荐这样做,因为它并不像 Spring Cloud Gateway 那样方便。

网关的技术选型可以参考文章:网关的技术选型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值