面试系列26 如何基于dubbo进行服务治理、服务降级、失败重试以及超时重试
(1)服务治理
1)调用链路自动生成
一个大型的分布式系统,或者说是用现在流行的微服务架构来说吧,分布式系统由大量的服务组成。那么这些服务之间互相是如何调用的?调用链路是啥?说实话,几乎到后面没人搞的清楚了,因为服务实在太多了,可能几百个甚至几千个服务。
那就需要基于dubbo做的分布式系统中,对各个服务之间的调用自动记录下来,然后自动将各个服务之间的依赖关系和调用链路生成出来,做成一张图,显示出来,大家才可以看到对吧。
服务A -> 服务B -> 服务C
-> 服务E
-> 服务D
-> 服务F
-> 服务W
2)服务访问压力以及时长统计
需要自动统计各个接口和服务之间的调用次数以及访问延时,而且要分成两个级别。一个级别是接口粒度,就是每个服务的每个接口每天被调用多少次,TP50,TP90,TP99,三个档次的请求延时分别是多少;第二个级别是从源头入口开始,一个完整的请求链路经过几十个服务之后,完成一次请求,每天全链路走多少次,全链路请求延时的TP50,TP90,TP99,分别是多少。
这些东西都搞定了之后,后面才可以来看当前系统的压力主要在哪里,如何来扩容和优化啊
3)其他的
服务分层(避免循环依赖),调用链路失败监控和报警,服务鉴权,每个服务的可用性的监控(接口调用成功率?几个9?)99.99%,99.9%,99%
(2)服务降级
比如说服务A调用服务B,结果服务B挂掉了,服务A重试几次调用服务B,还是不行,直接降级,走一个备用的逻辑,给用户返回响应
public interface HelloService {
void sayHello();
}
public class HelloServiceImpl implements HelloService {
public void sayHello() {
System.out.println("hello world......");
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<dubbo:application name="dubbo-provider" />
<dubbo:registry address="zookeeper://127.0.0.1:2181" />
<dubbo:protocol name="dubbo" port="20880" />
<dubbo:service interface="com.zhss.service.HelloService" ref="helloServiceImpl" timeout="10000" />
<bean id="helloServiceImpl" class="com.zhss.service.HelloServiceImpl" />
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<dubbo:application name="dubbo-consumer" />
<dubbo:registry address="zookeeper://127.0.0.1:2181" />
<dubbo:reference id="fooService" interface="com.test.service.FooService" timeout="10000" check="false" mock="return null">
</dubbo:reference>
</beans>
现在就是mock,如果调用失败统一返回null
但是可以将mock修改为true,然后在跟接口同一个路径下实现一个Mock类,命名规则是接口名称加Mock后缀。然后在Mock类里实现自己的降级逻辑。
public class HelloServiceMock implements HelloService {
public void sayHello() {
// 降级逻辑
}
}
(3)失败重试和超时重试
所谓失败重试,就是consumer调用provider要是失败了,比如抛异常了,此时应该是可以重试的,或者调用超时了也可以重试。
<dubbo:reference id="xxxx" interface="xx" check="true" async="false" retries="3" timeout="2000"/>
某个服务的接口,要耗费5s,你这边不能干等着,你这边配置了timeout之后,我等待2s,还没返回,我直接就撤了,不能干等你
如果是超时了,timeout就会设置超时时间;如果是调用失败了自动就会重试指定的次数
你就结合你们公司的具体的场景来说说你是怎么设置这些参数的,timeout,一般设置为200ms,我们认为不能超过200ms还没返回
retries,3次,设置retries,还一般是在读请求的时候,比如你要查询个数据,你可以设置个retries,如果第一次没读到,报错,重试指定的次数,尝试再次读取2次
转载于:https://www.cnblogs.com/xiufengchen/p/11259210.html
面试系列26 如何基于dubbo进行服务治理、服务降级、失败重试以及超时重试相关推荐
- 【Spring Cloud 基础设施搭建系列】Spring Cloud Demo项目 Spring Cloud Config Client 失败快速响应与超时重试
文章目录 Spring Cloud Config Client 失败快速响应与重试 测试 参考 源代码 Spring Cloud Config Client 失败快速响应与重试 Spring Clou ...
- 分布式面试 - 如何基于 dubbo 进行服务治理、服务降级、失败重试以及超时重试?
分布式面试 - 如何基于 dubbo 进行服务治理.服务降级.失败重试以及超时重试? 面试题 如何基于 dubbo 进行服务治理.服务降级.失败重试以及超时重试? 面试官心理分析 服务治理,这个问题如 ...
- dubbo k8s 服务发现_工商银行基于 Dubbo 构建金融微服务架构的实践-服务发现篇
作者 | 张远征来源|阿里巴巴云原生公众号 导读:Dubbo 作为分布式微服务框架,众多公司在实践中基于 Dubbo 进行分布式系统架构.重启开源后,我们不仅看到 Dubbo 3.0 最新的 Road ...
- 浅谈RPC服务治理服务
面向服务的架构SOA 任何大型网站的发展都伴随着网站架构的演进.网站架构一般最初是单应用设计,然后逐渐经历面向对象设计和模块化设计的架构,最终发展到面向服务的服务化架构.在单应用设计架构体系当中,我们 ...
- 微服务架构 — 服务治理 — 服务注册与发现、服务订阅与通知
目录 文章目录 目录 应用与服务的关系 服务注册与发现(Service Registration and Discovery) Service Registration Service Registr ...
- 微服务架构 — 服务治理 — 服务限流、服务降级、服务熔断
目录 文章目录 目录 服务限流 服务降级 服务熔断 服务限流 C ⇄ S 的异常问题:C 的请求太多,超出 S 的服务能力,导致 S 不可用.例如:DoS 攻击,企图耗尽被攻击对象的资源,让目标系统无 ...
- 基于Dubbo框架构建分布式服务(三)
我们将上面开发的服务提供方服务,部署到2个独立的节点上(192.168.14.1和10.10.4.125),然后可以通过Dubbo管理中心查看对应服务的状况,如图所示: 上图中可以看出,该服务有两个独 ...
- 广告行业中那些趣事系列26:基于PoseNet算法的人体姿势相似度识别
摘要:本篇从理论到实践分享了基于PoseNet算法的人体姿势相似度识别项目.首先介绍了项目背景,因为部门搞活动需要大家去模仿夸张搞笑的表情和姿势来提升活动的可玩性,所以需要利用CV算法对图片进行相似度 ...
- 微服务架构 — 服务治理 — 服务监控与告警、服务日志与审计
目录 文章目录 目录 日志与审计 监控与告警 配置中心 文档中心 日志与审计 日志分析组件应该在微服务兴起之前就被广泛使用了.即使单体应用架构,当访问数变大.或服务器规模增多时,日志文件的大小会膨胀到 ...
最新文章
- 数据蒋堂 | 存储和计算技术的选择
- Spark SQL 最简单例子
- socket网络编程实现远程备份
- html5转PDF软件,html转pdf软件(wkhtmltopdf) 0.12.5官方版
- python文本情感分析代码_6行代码的超简单语言情感分析:由Python的Vader情感库实现,超级,使用,vaderSentiment...
- Idea中@Autowired 黄色波浪线问题,注入类显示红色波浪线,去除重复代码导致的波浪黄线,去除xml文件里sql语句的黄色行背景色,问题解决
- PHP 将微信录音arm格式文件转mp3格式
- (转)比特币有了定价模型?过去四年94%的价格波动可由此解释
- innodb 删除隐藏列_MySQL进阶之InnoDB事务原子性实现原理
- 自动检测删除微信好友:学会这些方法,别再花冤枉钱!
- Coolie记住用户名和密码
- 带常数项指数函数的非线性回归方法(python实现)
- 厦门大学计算机科学与工程学院,厦门大学
- 中国古代衣食住行 3
- 【数据结构与算法】计算机之父
- EasyPlayer播放H.265的HLS视频流出现加载异常的问题分析及解决方法
- 嵌入式开发--STM32上实现驱动注册initcall机制(类linux)
- autojs 微信 布局分析不到位
- Kafka和Flink双剑合璧,Confluent收购Immerok引起业内广泛讨论
- [福禄克] Fluke同轴电缆测试模块DSX-CHA003 COAX
热门文章
- python字符串equals方法_java中如何使用equals进行比较?
- 无线网络的基础及优化方案
- JAVA并发,线程异常捕获
- 用Spire.doc来合并邮件
- Office合并字符功能比较(转)
- 微软Patterns Practices发布Windows Azure指南第三部分——构建混合应用
- 在ASP.NET中调用存储过程方法新解
- java表格源码_Java表格JTable代码实例解析
- springboot 多线程_机密文档!阿里产出SpringBoot/Cloud,细节爆炸
- cpu负载转移内存_为什么将所有工作负载转移到云中是个坏主意