微服务核心服务治理功能 | 青训营笔记

41 阅读2分钟

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

服务发布

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

服务发布的难点

服务不可用:

服务抖动:流量消失,短暂不可用

服务回滚:之前的代码没问题,但是新升级的代码有bug,先倒退到之前的版本,把系统的损失降到最小。

蓝绿部署

先将服务分为两个cluster,在进行部署的时候,先断掉流量,然后就行服务升级,这样做的好处就是简单,稳定,但需要两倍资源。在升级的过程中有一半的实例不可用,一半的实例资源需要处理所有的流量。蓝绿部署更适合在流量低的场景。

灰度发布(金丝雀发布)

金丝雀(canary)对瓦斯及其敏感,17世纪时,英国旷工字啊下井前会先放入一只金丝雀,以确保矿井中没有瓦斯。

一步步地增加实例,查看有没有问题,没有问题就不停地切换,直到完成发布的流程。

难点在于精细化的流量控制,需要不停的切换进行控制,对于回滚也比较困难!

流量治理

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

2.jpg

新的机器走高流量,老的机器可以走负载较低的流量。可以根据标识执行不同的请求。

负载均衡

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

常见的LB策略

  • Round Robin
  • Random
  • Ring Hash
  • Least Request

稳定性治理

线上服务总是会出问题,这与程序的正确性无关

  • 网络攻击
  • 流量突增
  • 机房断电
  • 光纤被挖
  • 机器故障
  • 网络故障
  • 机房空调故障

微服务架构中典型的稳定性治理功能

  • 限流
  • 熔断
  • 过载保护
  • 降级:接收重要的服务,拒绝不重要的服务