## 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网关