网关是干什么用的?网关有哪些设计模式?网关的设计重点有哪些?分布式服务的部署模式有哪些?

打卡Day26:今天学习了《56|管理设计篇之“网关模式”》和《57|管理设计篇之“部署升级策略”》,我的收获如下:

网关 Gateway

封装内部系统的架构,并且提供API给客户端。

网关的功能

  • 请求路由
  • 服务注册
  • 负载均衡
  • 弹力设计
  • 安全方面
  • 灰度发布
  • API聚合
  • API编排

Gateway、Sidecar和Service Mesh

  • Sidecar用来改造已有服务。
  • Sidecar越来越多时,需要Service Mesh这样的中心控制器统一管理。
  • Gateway只负责进入的请求,可以看成粒度较粗的Sidecar,简化Service Mesh架构的复杂度。

网关设计重点

  • 高性能(异步非阻塞IO);
  • 高可用(集群化、服务化、持续化);
  • 高扩展(可二次开发如AWS Lambda)。

运维方面

  • 业务松耦合、协议紧耦合;
  • 应用监视、提供分析数据;
  • 用弹力设计保护后端服务;DevOps;

架构方面

  • 不要内置聚合后端服务功能
  • 靠近后端服务
  • 不同网关服务不同后端

安全方面

  • 加密数据
  • 校验用户请求
  • 检测异常访问

服务部署模式

  • 停机部署(Big Bang/Recreate)
  • 蓝绿部署(Blue/Green/Stage)
  • 滚动部署(Rolling Update/Ramped)
  • 灰度部署(Canary)
  • AB测试(A/B Testing)。

蓝绿部署是为了不停机,灰度部署是对新版本的质量没信心,而AB测试是对新版本的功能没信心。

左耳朵耗子带你重学《左耳听风》

https://time.geekbang.org/column/article/6086

https://time.geekbang.org/column/article/6283