六问六答带你了解微服务中的网关

379 阅读3分钟

「这是我参与11月更文挑战的第20天,活动详情查看:2021最后一次更文挑战

本文我们将借助六问六大,带大家一起来了解一下微服务中的网关组件,包括什么是微服务网关?网关的作用是什么?使用网关的好处是什么?为什么要使用网关?网关解决了什么问题?主流的解决方案有哪些?

1. 什么是微服务网关?

微服务网关也就是我们的API Gateway(APIGW / API网关),顾名思义,微服务网关其实是面向于API的,也就是我们的接口。

网关可以将我们的微服务项目的接口聚合起来,对外暴露统一的域名,端口。

2. 网关的作用是什么?

  • 身份认证与安全
  • 审查与监控
  • 动态路由
  • 压力测试
  • 负载均衡
  • 静态响应处理
  • 多区域弹性

3. 使用网关的好处是什么?

  • 聚合接口使得服务对调用者透明,客户端与服务端耦合降低
  • 聚合后台服务
  • 提供安全、流控、过滤、缓存、计费、监控等API管理功能

4. 为什么要使用网关?

必要条件: 架构的发展,单体架构是不需要网关的,微服务才需要网关

如果不使用网关:

  • 客户端会措辞请求不同的微服务,增加了客户端的复杂性
  • 存在跨域请求,在一定场景下处理相对复杂
  • 身份认证问题,每个微服务需要独立身份认证
  • 难以重构,随着项目迭代,可能需要重新划分微服务
  • 某些微服务可能使用了防火墙、浏览器不友好的协议,直接访问会有一定困难。

使用API网关:

  • 易于监控,可在微服务网关收集监控数据并将其推送到外部系统进行分析
  • 易于认证,可以在微服务网关上进行认证,然后在转发到对应服务上,从而无需在每个服务中进行认证
  • 降低了服务端与客户端的耦合,减少客户端直接访问服务

5. 微服务网关解决了哪些问题?

  • 性能:API高可用,负载均衡,容错
  • 安全:权限认证、脱敏、数据清洗、后端签名、黑白名单
  • 日志:日志记录,全链路追踪
  • 缓存:数据缓存
  • 监控:记录请求响应数据,API耗时分析、性能监控
  • 限流:流量控制,错峰流控,可以支持多种限流规则
  • 灰度:线上灰度部署,减小风险
  • 路由:动态路由规则

6. 主流的网关解决方案都有哪些?

  • Nginx + Lua 门户网关,全局网关,提供反向代理,负载均衡
  • Kong 将Nginx + Lua进行了封装,让其更加易用
  • Traefik 基于Go语言开发
  • Netflix Zuul 单线程的接收请求和转发处理
  • Spring Cloud Gateway 目前主推的API网关