服务降级|学习笔记

简介: 快速学习服务降级

开发者学堂课程【阿里巴巴分布式服务框架 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

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

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

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