zoukankan      html  css  js  c++  java
  • 分布式的几件小事(六)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次。

  • 相关阅读:
    【BZOJ4637】期望 Kruskal+矩阵树定理
    IEnumerable是什么
    (转)IIS windows认证
    使用pgrouting进行最短路径搜索
    Nginx设置防止IP及非配置域名访问
    java 调用c# web api 代码
    一台机器部署多个tomcat服务 nginx反向代理多个服务 笔记
    利用Kettle 从Excel中抽取数据写入SQLite
    sql server 统计信息
    sql server 索引碎片相关问题
  • 原文地址:https://www.cnblogs.com/jack1995/p/10921940.html
Copyright © 2011-2022 走看看