zoukankan      html  css  js  c++  java
  • 降级

    降级

    要做一个基于kong的降级先关服务。
    网上找到一个用 balancer_by_lua 加上 https://github.com/rrfeng/lua-resty-upstream-etcd 实现了基于 etcd 的简单服务发现。

    然后如果后端不够稳定或者流量过高的时候可能会直接压垮,所以通常服务治理框架都有熔断机制,即在发现后端失败率过高的时候,限制访问频率,进行服务降级等。

    例如在某个 phase 统计 upstream peer 返回的错误数量,达到比如 10% 就减少 10% 的流量(随机丢弃,返回空数据等)。

    特定 phase 或 back worker 收集后端任务健康信息,并计算好每个负载自身的状态,比如权重等。

    balancer_by_lua 里,直接使用这些状态值,从而达到熔断或降级目的。
    暂时想到两种办法,一种是 balancer 里通过 get_last_failure 来统计,这样的话比较切入自己编写的 balancer 模块。但是可能需要一些额外的配置,比如 proxy_next_upstream off 的情况下就不行了。并且可能需要在 set_current_peer 同时将 peer 保存到 ctx 里(不知道是否 retry 的时候 last tried peer 是否会带进来的)?

    另一种是在 log phase,统计各种状态码,然后将统计信息反馈到 balancer module 里去。

  • 相关阅读:
    Hopcroft-Carp 算法模板 自用
    (转)二分图匹配匈牙利算法与KM算法
    LightOJ
    最短路类型 (至今做过的)
    POJ
    POJ
    差分约束
    传递闭包(例题POJ3660)
    arrow,
    分辨率,
  • 原文地址:https://www.cnblogs.com/mentalidade/p/7003210.html
Copyright © 2011-2022 走看看