网关

网关的职责:网关 = 路由器(基础职能) + 过滤器(可选职能)

对于路由:如果需要对流量的特征进行分析,那必须是要在七层操作,否则直接在四层直接进行流量转发就可以了

不同的网关采用的网络IO模型不同 性能表现也不同

网关的可用性考虑:

  1. 网关应该轻量 达到功能性与可用性的平衡 职责过多是很危险的
  2. 选择成熟的网关产品
  3. 在网关之间加上负载均衡器或者路由器 以便让网关也能进行扩展

主要功能点

流量网关

业务网关

监控探头网关

sequenceDiagram  监控探头 ->> 网关: 推送数据  网关 ->> 监控探头: 拉取数据  网关 ->> 网关: 过滤/业务操作  网关 ->> OSS: 存储图像、视频数据  网关 ->> 消息队列: 推送结构化的视频图像信息

网关部署架构

202002221510

BFF( Backend for frontend)网关

graph TD;    A[用户界面] -->|请求| B[BFF 网关]    B -->|调用| C[服务 A]    B -->|调用| D[服务 B]    B -->|调用| E[服务 C]    C -->|返回数据| B    D -->|返回数据| B    E -->|返回数据| B    B -->|返回合并数据| A

Spring Cloud Zuul

202037144831

Spring Cloud Gateway

批注 2020-04-07 130836

比较

网关限流鉴权监控易用性可维护性成熟度
Spring Cloud Gateway可以通过IP,用户,集群限流,提供了相应的接口进行扩展 ,gateway不依赖servlet api,所以性能更强,gateway的转发是在tcp层普通鉴权、auth2.0Gateway Metrics Filter简单易用spring系列可扩展强,易配置 可维护性好spring社区成熟,但gateway资源较少
Zuul2可以通过配置文件配置集群限流和单服务器限流亦可通过filter实现限流扩展filter中实现filter中实现参考资料较少可维护性较差开源不久,资料少
OpenResty需要lua开发需要lua开发需要开发简单易用,但是需要进行的lua开发很多可维护性较差,将来需要维护大量lua脚本很成熟资料很多
Kong根据秒,分,时,天,月,年,根据用户进行限流。可在原码的基础上进行开发普通鉴权,Key Auth鉴权,HMAC,auth2.0可上报datadog,记录请求数量,请求数据量,应答数据量,接收于发送的时间间隔,状态码数量,kong内运行时间简单易用,api转发通过管理员接口配置,开发需要lua脚本"可维护性较差,将来需要维护大量lua库相对成熟,用户问题汇总,社区,插件开源

不同技术栈网关选型