服务降级|学习笔记

简介: 快速学习服务降级

开发者学堂课程【阿里巴巴分布式服务框架 Dubbo 快速入门服务降级】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/624/detail/9474


服务降级


内容介绍:

一、什么是服务降级

二、Dubbo 支持的两种服务降级

三、如何设置服务降级

四、进行测试


服务降级,也是在分布式系统中来提升系统高可用性的手段之一。


一、什么是服务降级?

当服务压力器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有策略的不处理或换种简单的方式处理,从而释放服务器资源以保证核心交易正常运作或高效运作。

比如 A 服务器里有用户类服务 user service、订单相关服务 orderservice、广告类相关服务 Advertiment service,A 服务器现在流量很大,有3000多并且同时在处理,服务器处理极具缓慢,需要牺牲某些人利益,仅广告服务就有1000多个并发,如果把广告服务屏蔽掉,剩下2000个留给用户类服务和订单相关服务,就会非常迅速,想屏蔽广告服务就可以通过服务降级这种方式。


二、Dubbo支持两种服务降级

1、强制返回为空:mock=force:return+null

表示消费方对该服务的方法调用都直接返回 null 值,不发起远程调用。用来屏蔽不重要服务不可用时对调用方的影响。

2、mock=fail:return+null

表示消费方对该服务的方法调用在失败后,再返回 null 值,不抛异常,用来容忍不重要服务不稳定时对调用方的影响。

例:当广告服务大量并发后,每一个服务都处理的很缓慢,到达一定的超时时间还没有处理完即可用这种。


三、如何进行设置服务降级

直接进入控制台,在消费者层面,当 order-service 调用其他方面服务时,可直接进行屏蔽如下图

image.png屏蔽的作用是不发起远程调用,直接在客户端返回空对象,相当于 dubbo 的第一种服务降级,mock=force:return+null,不调用远程服务,直接返回为空。

其次我们还可以写容错,相当于 dubbo 的第二种服务降级,当调用失败后,返回为空,例如超时,网络波动等等。


四、进行测试

假如10011服务器,里面跑掉很多服务,不止 user-service 一个,并且当前服务器资源占满,内存百分之百,CPU 百分之百。

这时可以把服务器的某些服务屏蔽掉,屏蔽后让这些服务释放资源,服务器有其他闲时间和空余的资源处理更多核心业务,屏蔽是在消费者这里做的,order-service 是用调 user-service 的,来告诉 order-service 远程调用时把远程服务屏蔽掉,那么 oeder-service 在调用期间就可以选择每次远程调用时不调了,直接返回为空;要么远程调用时调一下,调失败后返回为空。

这两种策略分别对应 mock=force:return+null 和 mock=fail:return+null 。

1、设置第一种 mock=force:return+null 进行测试:

首先把 order-service 屏蔽掉,清掉控制台,进行刷新发现整个页面时空白的,发现 user-service 也没有调用,说明把整个远程服务屏蔽了不去调用。

恢复调用后再进行刷新,控制台又打印了。因此在线上我们可以实时根据服务器性能来屏蔽掉某些服务。恢复调用后,有一个性能是容错,作用是当远程调用失败时,返回空对象。

2、设置第二种 mock=fail:return+null 进行测试:

点击容错,这个调用是成功的,在 user-service,调用时代码写为@Reference(loadbalance=“random”,timeout=1000)//dubbo 直连,而远程服务时间会久一点,代码为Thread.sleep(2000);重新启动放在注册中心,user-service 会超时,进行调用,重新启动,并且我们对这个服务进行了容错处理,即 mock=fail:return+null,控制台进行刷新,点击消费者,消费者已经容错

image.png

再进行调用刷新,返回为空。

将容错关闭重新刷新,会发现控制台页面报错。因此我们可以快速返回为空,来屏蔽一个服务,达到动态调配服务器资源的功能。

相关文章
|
4月前
|
Java Spring
降级与熔断处理
降级与熔断处理
|
6月前
|
缓存 Java 应用服务中间件
常见的限流降级方案
【1月更文挑战第21天】
|
6月前
|
监控 Java 微服务
服务降级和服务熔断的区别
服务降级和服务熔断的区别
|
设计模式 监控 算法
高可用三大利器 — 熔断、限流和降级
在武侠世界里,“利器”通常指的是武器中的上乘、出色之物;武器对于武者的重要性不言而喻,拥有一把优秀的武器可以让武者在战斗中更加得心应手,威力更强。在分布式系统追求高可用的背景下,熔断、限流和降级这三个重要的策略可以称得上三大利器。降级和熔断是不是一回事?限流 与 降级呢?
224 2
|
缓存 SpringCloudAlibaba 监控
系统之高可用(二):熔断降级
分布式系统环境下,服务间类似依赖非常常见,一个业务调用通常依赖多个基础服务。如下图,对于同步调用,当库存服务不可用时,商品服务请求线程被阻塞,当有大批量请求调用库存服务时,最终可能导致整个商品服务资源耗尽,无法继续对外提供服务。并且这种不可用可能沿请求调用链向上传递,这种现象被称为级联故障效应,最终结果导致整个系统服务不可用
153 0
|
缓存 监控 前端开发
服务降级是什么?
服务降级是在面对系统负载过高、资源不足或外部依赖故障等异常情况下,通过临时屏蔽某些功能或改变服务行为,以保证核心功能的可用性和性能稳定性的一种策略。
469 0
|
弹性计算 Java 关系型数据库
服务降级|学习笔记
快速学习服务降级
服务降级|学习笔记
|
前端开发 关系型数据库 MySQL
服务降级熔断小总结|学习笔记
快速学习服务降级熔断小总结
服务降级熔断小总结|学习笔记
|
运维 监控 负载均衡
服务熔断|学习笔记
快速学习服务熔断
服务熔断|学习笔记
hystrix服务降级处理方案
当一个服务端的业务响应的时间过长的时候或者业务处理逻辑处理异常,不应该等待,应该给出一种处理方法
hystrix服务降级处理方案
下一篇
无影云桌面