网关是干什么用的?网关有哪些设计模式?网关的设计重点有哪些?分布式服务的部署模式有哪些?
打卡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测试是对新版本的功能没信心。