网关的产生背景
微服务架构演变
单体架构
所有服务集中在单个项目中,每次部署需要部署整个项目
好处:
弊端:新人上手难;扩缩容困难;业务规模扩大后,
分布式架构
将系统进行垂直和横向拆分后分别部署在服务器上
- 纵向拆分:根据业务分类进行拆分
- 横向拆分:将拆分后的业务横向部署多个节点,保证服务高可用性
SOA架构
面向服务即将共用的服务抽取出来做为一个服务供所有系统使用,每个系统不再各自实现
ESB:是一个集中式的服务总线。通过ESB,可以实现集成业务处理,监控系统间消息流动,管理系统间交互的业务服务。ESB的关注点是集成,核心概念是服务和消息,主要方式是协议适配和中介处理。
微服务
微服务架构产生的原因
微服务架构基于SOA架构演变过来的,在传统的WebService架构中有如下问题:
- 依赖中心化服务发现机制
- 使用Soap通讯协议,通常使用XML格式来序列化通讯数据,xml格式非常喜欢重,比较占宽带传输。
- 服务化管理和治理设施不完善
API网关
capi:对接三方合作平台
iapi:对接内部流量
bapi:对接商家
oapi:对接外部流量
云原生架构
企业级微服务网关
什么是网关
1、流量入口
能聚合所有请求到微服务的流量
2、请求路由
接收进来的请求经过网关策略拦截后,通过负载均衡转发后端服务
3、请求拦截过滤器
在网关进行横切功能:权限校验,限流,监控
为什么需要API网关
1、采用微服务架构后,一个项目中微服务节点很多
2、在网关层处理所有非业务功能:如负载均衡,鉴权认证,Session处理,安全检查,日志处理,熔断限流等。如果每个服务自己实现,逻辑冗余,难以维护
网管技术选型
Kong | Zuul2 | SpringCloud GateWay | Apisix | |
---|---|---|---|---|
调度 | ||||
可维护性 | ||||
限流 | ||||
性能 | ||||
成熟度 |
网关解决哪些问题
- 路由转发:客户端和服务消费方,无需我知道请求到下游那台机器
- 请求安全:请求签名,Oauth2,鉴权,令牌鉴权
- 高可用请求:下游服务的高可用依托网关进行负载
- 资源隔离:
- 流量灰度:
网关管理平台
功能:
灰度管理:网关灰度 服务灰度
路由管理 令牌分发 服务编排 认证授权 黑白名单 健康检测 指纹证书
为什么需要网关管理平台
痛点
- 随着业务规模扩大,API接口数据不断增加
- Apollo配置中心容易出错,可视化效果差
- 多站点,多环境,多业务场景,网关数量成倍增加
优势
- 整个生命周期,全部通过配置化,流程化的方式全自助管理,易上手极大的提升研发效率
- 所有API都可以集中一起管理,通过切换站点,集群就可以相应操作,方便问题定位查询
- 路由发布支持网关节点选择性发布,Apollo支持较弱
- 对网关做Mock测试,方便功能点扩展