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 里去。

  • 相关阅读:
    HUD 问题
    嵌入式面试
    网上某人面试经验总结
    C中prngtf是从右到左压栈的
    哈希表
    做事原则
    学习单片机的步骤
    C#预处理器命令
    CWinApp类CMultiDocTemplate类CDocument类CView类的关系
    Windows消息大全
  • 原文地址:https://www.cnblogs.com/mentalidade/p/7003210.html
Copyright © 2011-2022 走看看