美文网首页
高可用最佳实践

高可用最佳实践

作者: 谭英智 | 来源:发表于2022-03-05 17:38 被阅读0次

熔断

ha-rongduan
ha-rongduanstate
  • rpc调用开始时,熔断器关闭
  • rpc发生超时(拒绝服务),超时次数超过阈值,熔断器打开,不发送rpc请求,直接产生异常
  • 熔断器打开超过一定时间,尝试去发送rpc请求,进入半打开状态
  • 如果尝试成功,则熔断器关闭,正常发送请求
  • 否则熔断器继续打开,拒绝服务

节流

ha-jieliu

上面的公式代表客户端请求拒绝概率

requests是收到的请求

accepts是后端接收的请求

当requests>K*accepts时,开始节流

K越大,可以接受后端拒绝服务越多

K越小,对后端拒绝服务越小

客户端通过上面的公式,以一定概率抛弃请求。

限流

  • 滑动窗口
ha-windows

例如一个格子1s

一个窗口包含5个格子

如果一个窗口的流量超过阈值,则抛弃请求

窗口每过一秒向右移动一格

存在的问题:

  1. 流量超过,则必须抛弃或者降级
  2. 控制不够精细,不能限制突发流量
  • 令牌桶
ha-lingpaitong
ha-get-lingpai

初始先注满令牌桶

周期性的检查令牌桶是否满,未满则注入新的令牌

客户端每次发生调用,都先取令牌,如果获取到,则执行,否则拒绝服务

  • 动态适应算法

    根据TCP BBR算法,衍生出限流的自适应算法。

    关注3个值:TPS,latency,CPU
    TW(当前最佳处理任数目) = TPS * latency

    ha-autu-limit
    算法规则如下:
    • 定时采样CPU,如果CPU的利用率大于阈值(80%),则进入流量控制
    • 统计当前服务在一定时间窗口内的请求数和latency,得出inflight
    • 统计当前服务所有 buckets中完成的最多请求数和最小latency,得出maxflight = TPS*min latency
    • 如果inflight > maxflight则表明过载,进行流量控制、

维度

  • 按用户维度限流
  • 按IP维度限流
  • 按业务优先级维度限流

负载均衡

  • 静态算法

    • DNS

    • 动态CDN

      • 选择经量近的节点
      • 基于带宽策略选择机房
      • 基于服务容量来平衡流量
    • 随机负载

      忽略了机器之间的性能差异

    • 轮询

      忽略了机器之间的性能差异

    • 最小连接

    • 加权选择

      大部分流量压到权重大的机器

  • 动态算法

    • p2c

      在多个结点中随机选择两个结点

      二选一

      每个机器都有可能选择到,也考虑了机器之间的性能差异

    • EWMA

ha-ewma

通过把过去的信息加权平均,来计算当前服务器的负载

通过EWMA计算每个后端服务器的负载

使用p2c随机选择两个后端服务器结点

比较两个结点的EWMA值,选择负载低的结点进行发送

重试

  • 每分钟设置最多可以重试次数,超过则直接标志为失败
  • 限制重试次数比例为10%
  • 随机重试策略
    • Exponential Backoff And Jitter
    • 如果发生RPC服务拒绝,则启动重试
    • 重试的时间间隔以2的指数增长
    • 并设定最大重试次数

幂等

  • 相同id,保存在数据库或者redis
  • 使用seq序号来保证幂等

降级

当发生后端服务器负载过高,或者拒绝服务时,返回兜底资源,而不是请求后端服务器,来保证服务的可用性

超时

  • 客户端发起RPC请求时携带可接受的超时时间
  • 服务器每处理一段业务,进行超时时间的递减
  • 一旦发现处理时间大于客户端的超时时间,则停止往下执行

过载保护

  • 如果CPU超过80,则丢弃部分流量
  • 内存使用量超过阈值,则丢弃部分流量
  • 使用队列的最大长度,限制正在处理的最大请求
  • 可控延迟算法 Codel

Ref:

https://baijiahao.baidu.com/s?id=1714316170925203681&wfr=spider&for=pci1i2

https://martinfowler.com/bliki/CircuitBreaker.html

https://cloud.tencent.com/developer/news/868069

https://zhuanlan.zhihu.com/p/146848111

https://cloud.tencent.com/developer/article/1618923

相关文章

网友评论

      本文标题:高可用最佳实践

      本文链接:https://www.haomeiwen.com/subject/ckjbrrtx.html