• 分布式的几件小事(六)dubbo如何做服务治理、服务降级以及重试


    1.服务治理

    服务治理主要作用是改变运行时服务的行为和选址逻辑,达到限流,权重配置等目的。
    ①调用链路自动生成
    一个大型的分布式系统,会由大量的服务组成,那么这些服务之间的依赖关系和调用链路会很复杂,这就需要dubbo对多个服务之间的调用自动记录下来,生成一张图,显示出来。

    ②服务反复问压力以及时长统计
    需要自动统计各个接口和服务之间的调用次数以及访问延时,而且要分成两个级别。一个级别是接口粒度,就是每个服务的每个接口每天被调用多少次,TP50,TP90,TP99,三个档次的请求延时分别是多少;第二个级别是从源头入口开始,一个完整的请求链路经过几十个服务之后,完成一次请求,每天全链路走多少次,全链路请求延时的TP50,TP90,TP99,分别是多少。
    这些东西都搞定了之后,后面才可以来看当前系统的压力主要在哪里,如何来扩容和优化。

    ③服务分层
    对服务的架构进行分层处理,比如Mapper负责接口映射,原子数据库操作。dao层负责数据访问,调用mapper,组装数据。service层负责对外提供dubbo服务,webservice层暴露接口等等,防止出现循环依赖的问题。

    ④调用链路失败的监控和报警
    服务之间的调用链路可能会很长,那么就会存在出现失败的可能性很大,最好对调用链路进行监控,一旦出问题能保存本次调用链路失败的全链路日志,好做问题排查。
    如果调用失败,或者超时了最好能进行报警,可以将报警发的邮件、钉钉群等里面,早点处理。

    2.服务降级

    比如服务A调用服务B,结果服务B挂掉了,服务A重试几次调用服务B,还是没有响应,那么就会直接走降级逻辑,即走一个备用的逻辑,给调用者返回响应。

    3.服务重试

    ①失败重试
    consumer调用provider失败了,比如provider出现了异常,这时候就要进行重试。

    ②服务超时
    比如某个服务的接口,要耗费5s,你这边不能干等着,你这边配置了timeout之后,我等待2s,还没返回,我直接就撤了,不能干等你。

    如果是超时了,timeout就会设置超时时间;如果是调用失败了自动就会重试指定的次数。

    <dubbo:reference id="xxxx" interface="xx" check="true" async="false" retries="3" timeout="2000"/>
    

    timeout,一般设置为200ms,我们认为不能超过200ms还没返回。

    retries,3次,设置retries,还一般是在读请求的时候,比如你要查询个数据,你可以设置个retries,如果第一次没读到,报错,重试指定的次数,尝试再次读取2次。

  • 相关阅读:
    React生命周期, 兄弟组件之间通信
    React组件式编程Demo-用户的增删改查
    React之this.refs, 实现数据双向绑定
    CCF CSP 201812-4 数据中心
    CCF CSP 201812-4 数据中心
    PAT 顶级 1020 Delete At Most Two Characters (35 分)
    PAT 顶级 1020 Delete At Most Two Characters (35 分)
    Codeforces 1245C Constanze's Machine
    Codeforces 1245C Constanze's Machine
    CCF CSP 201712-4 行车路线
  • 原文地址:https://www.cnblogs.com/jack1995/p/10921940.html
Copyright © 2020-2023  润新知