服务降级|学习笔记

简介: 快速学习服务降级

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

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

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

相关文章
|
机器学习/深度学习 数据可视化 PyTorch
PyTorch基础之模型保存与重载模块、可视化模块讲解(附源码)
PyTorch基础之模型保存与重载模块、可视化模块讲解(附源码)
360 1
|
运维 Ubuntu 安全
kali2022.1(安装)
kali2022.1(安装)
485 0
|
4月前
|
机器学习/深度学习 人工智能 监控
AI 视频监控技术核心解析:三大底层能力支撑智能化升级
AI视频监控突破传统安防局限,依托三大核心技术:从“被动感知”到“主动理解”,实现精准场景识别;从“孤立运行”到“深度协同”,构建业务联动闭环;从“高门槛应用”到“普惠化落地”,降低部署成本与使用门槛。技术融合场景定制、智能决策与轻量化架构,推动安防向高效、智能、普及化方向升级。
1083 0
|
移动开发 监控 网络协议
每个端侧产品都需要的用户体验监控
ARMS RUM 是阿里云应用实时监控服务(ARMS)下的用户体验监控(RUM)产品,覆盖 Web/H5、各类平台小程序、Android、iOS、Flutter、ReactNative、Windows、macOS 等平台框架。接入 SDK 后会主动采集端侧页面性能、资源加载、API 调用、异常崩溃、卡顿、用户操作、系统信息等数据,还支持事件、日志、异常等数据按需自定义上报以满足业务数据分析需求,提供全面的性能分析、异常分析、产品分析、会话分析能力,帮助快速跟踪定位问题原因,提升产品用户使用体验。
908 109
|
安全 前端开发 Java
SpringBoot之HiddenHttpMethodFilter
`HiddenHttpMethodFilter`在SpringBoot中的应用,极大地方便了开发者在HTML表单中使用PUT、DELETE等方法。通过本文的介绍,希望能够帮助开发者理解和配置 `HiddenHttpMethodFilter`,从而更好地利用SpringBoot的功能来实现复杂的HTTP请求操作。在实际应用中,注意安全性防护,确保系统的稳定和安全。
189 2
|
存储 算法 Cloud Native
[minio]简介与安装
[minio]简介与安装
322 2
|
Linux 程序员 容器
总线,设备,驱动与class(二)
总线,设备,驱动与class
326 1
|
NoSQL Serverless PHP
遇到报错但没有日志信息的情况,该如何解决
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
342 1
|
人工智能 弹性计算 数据安全/隐私保护
如何在阿里云快速启动Stable Diffusion轻松玩转AI绘画
本文介绍如何如何在阿里云快速启动Stable Diffusion服务开启AI绘画
如何在阿里云快速启动Stable Diffusion轻松玩转AI绘画
|
机器学习/深度学习 数据采集 数据可视化
Python在数据分析领域的应用研究
Python在数据分析领域的应用研究
321 0