降级

降级

要做一个基于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 里去。

转载于:https://www.cnblogs.com/mentalidade/p/7003210.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值