2月4日Day12 微服务架构核心服务治理功能|青训营笔记

67 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 12 天

核心服务治理功能

服务发布

服务发布 (deployment),即指让一个服务升级运行新的代码的过程。

难点

截屏2023-02-04 10.46.13.png

  • 服务不可用
  • 服务抖动
  • 服务回滚

蓝绿部署

蓝绿发布需要对服务的新版本进行冗余部署,一般新版本的机器规格和数量与旧版本保持一致,相当于该服务有两套完全相同的部署环境,只不过此时只有旧版本在对外提供服务,新版本作为热备。
当服务进行版本升级时,我们只需将流量全部切换到新版本即可,旧版本作为热备。由于冗余部署的缘故,所以不必担心新版本的资源不够。

截屏2023-02-04 10.46.34.png

如果新版本上线后出现严重的程序 BUG,那么我们只需将流量全部切回至旧版本,大大缩短故障恢复的时间。
待新版本完成 BUG 修复并重新部署之后,再将旧版本的流量切换到新版本。

  • 将服务分成两个部分,分别先后发布
  • 简单、稳定
  • 但需要两倍资源

灰度发布 (金丝雀发布)

灰度发布 (金丝雀发布)的思想是将少量的请求引流到新版本上,因此部署新版本服务只需极小数的机器。验证新版本符合预期后,逐步调整流量权重比例,使得流量慢慢从老版本迁移至新版本。
期间可以根据设置的流量比例,对新版本服务进行扩容,同时对老版本服务进行缩容,使得底层资源得到最大化利用。

截屏2023-02-04 10.46.49.png

  • 先发布少部分实例,接着逐步增加发布比例
  • 不需要增加资源
  • 回滚难度大,基础设施要求高

流量治理

在微服务架构下,我们可以基于地区、集群、实例、请求等维度对端到端流量的路由路径进行精确控制

截屏2023-02-04 10.46.57.png

负载均衡 (Load Balance)

负载均衡负责分配请求在每个下游实例上的分布

截屏2023-02-04 10.47.04.png

常见的 LB 策略

  • Round Robin
  • Random
  • Ring Hash
  • Least Request

稳定性治理

线上服务总会出现问题的,这与程序的正确性无关 微服务架构中典型的稳定性治理功能

截屏2023-02-04 10.47.21.png

限流:限制服务处理的最大 QPS,拒绝过多请求
熔断:中断请求路径,增加冷却时间从而让故障实例尝试恢复
过载保护:在负载高的实例中,主动拒绝一部分请求,防止实例被打挂
降级:服务处理能力不足时,拒绝低级别的请求,只响应线上高优请求