💌 这是我参与「第五届青训营」伴学笔记创作活动的第 10 天。
🧡 本堂课重点内容
- 服务发布
- 流量治理
- 负载均衡
- 稳定性治理
🧡 知识点介绍
服务发布
💌 服务发布(deployment),即指让一个服务升级运行新的代码的过程。
服务发布的难点
- 服务不可用:服务B升级需要让服务A先停止一下。
- 服务抖动:服务B中的实例短暂停止升级。
- 服务回滚:升级之后有bug需要暂停修改。
解决
- 蓝绿发布:将服务分成两个部分,先后发布,简单、稳定,但需要两倍资源。适合在流量低的时候。
- 灰度发布:先发布少部分实例,接着逐步增加发布比例,不需要增加资源,回滚难度大,基础设施要求高。
流量治理
💌 在微服务架构中,可以基于地区、集群、实例、请求等各个维度对端到端的流量在链路上进行精确控制。
- 地区:请求进来通过 API gateway 将流量分到不同地区。
- 集群:将流量分到不同集群,少量流量走测试集群,90%走正常运行集群。
- 实例:新的机器处理更多的流量。
- 请求:内部用户可以走测试集群。
负载均衡
💌 负载均衡(Load Balanc)负责分配请求在每个下游实例上的分布。
- Round Robin:轮询
- Random:随机
- Ring Hash:一致性哈希
- Least Request:最少请求
稳定性治理
💌 微服务架构中典型的稳定性治理功能:
- 限流:限制服务处理的最大 QPS,拒绝过多请求。
- 熔断:中断请求路径,增加冷却时间从而让故障实例尝试恢复。
- 过载保护:在负载高的实例中,主动拒绝一部分请求,防止实例被打挂。
- 降级:服务处理能力不足时,拒绝低级别的请求,只响应线上高优请求。
🧡 课程总结
💌 今天学习了服务发布、流量治理、负载均衡、稳定性治理的相关知识,受益匪浅!