美文网首页
服务治理 - 降级机制,百分比控制下游调用

服务治理 - 降级机制,百分比控制下游调用

作者: 赤子心_d709 | 来源:发表于2019-02-28 20:31 被阅读7次

    背景

    类似上文ACL机制是下游限制上游,这里同样有场景上游限制下游调用
    服务调用的链路中,如果上游想要禁止某一个下游的调用(下游扛不住了,不稳定等,或者服务治理上的其他考量),需要平台上有相关功能
    这里降级就叫degradation

    定义

    degradation是以client端视角进行配置的
    例如A调用B的方法b,则当A对B的方法b进行降级时(限制一部分的流量),则框架会根据设置的比例对RPC请求进行丢弃。
    当发生丢弃行为时,框架会抛出特定异常;
    

    实体名称

    upstream:上游
    downstream:下游
    methodName:方法名
    

    上游可以根据需要更加细化,比如包含cluster名称等

    实现

    配置降级,写配置

    即用一个分布式服务框架,如zk等,写一个特定key
    如/degradation/upstream/downstream/methodName

    值为[0,100]某个值
    为100则代表upstream调用downstream的methodName这个方法时,100%抛异常
    为0代表正常调用下游

    配置生效,读配置

    框架上用middleware,切面等方式(我是以py的django框架为基础,其他语言也有自己的框架),该中间件的处理在upstream调用下游的时候

    比如upstream在调用downstream的方法methodName的时候,
    会去访问分布式配置的key “/downstream/upstream/downstream/methodName”

    并且随机一个[0,100]的值
    如果随机值<=设定值,代表这部分请求被降级,抛异常,业务层自行处理
    否则正常调用

    思考

    1.和上次ACL什么关系

    区别

    从配置的角度上面考量,一个是client配置,一个是server配置
    一个是配开关代表0,1,一个是配置[0,100]代表百分比
    

    关系

    真正降级或者ACL,都是上游走到特定切面或者middleware就抛异常了,不会走到下游,快速失败
    

    相关文章

      网友评论

          本文标题:服务治理 - 降级机制,百分比控制下游调用

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