微服务保护和分布式事务(1)

米饭5个月前行业资讯179

一、微服务保护

保证服务运行的健壮性,避免级联失败导致的雪崩问题,就属于微服务保护。


为了方便讲解,下面的商品服务是故障方,购物车服务是故障调用方。


1.1 微服务保护方案:

微服务保护的方案有很多,比如:


请求限流

线程隔离

服务熔断

这些方案或多或少都会导致服务的体验上略有下降,比如请求限流,降低了并发上限;线程隔离,降低了可用资源数量;服务熔断,降低了服务的完整度,部分服务变的不可用或弱可用。因此这些方案都属于服务降级的方案。但通过这些方案,服务的健壮性得到了提升。


1.1.1 请求限流:

服务故障最重要原因,就是并发太高!解决了这个问题,就能避免大部分故障。当然,接口的并发不是一直很高,而是突发的。因此请求限流,就是限制或控制接口访问的并发流量,避免服务因流量激增而出现故障。


请求限流往往会有一个限流器,数量高低起伏的并发请求曲线,经过限流器就变的非常平稳。

image-20241121164025299

1.1.2 线程隔离:

当一个业务接口响应时间长,而且并发高时,就可能耗尽服务器的线程资源,导致服务内的其它接口受到影响。所以我们必须把这种影响降低,或者缩减影响的范围。线程隔离正是解决这个问题的好办法。

线程隔离的思想来自轮船的舱壁模式:

image-20241121164321037

轮船的船舱会被隔板分割为N个相互隔离的密闭舱,假如轮船触礁进水,只有损坏的部分密闭舱会进水,而其他舱由于相互隔离,并不会进水。这样就把进水控制在部分船体,避免了整个船舱进水而沉没。


为了避免某个接口故障或压力过大导致整个服务不可用,我们可以限定每个接口可以使用的资源范围,也就是将其“隔离”起来。

image-20241121164551621


如图所示,我们给查询购物车业务限定可用线程数量上限为20,这样即便查询购物车的请求因为查询商品服务而出现故障,也不会导致服务器的线程资源被耗尽,不会影响到其它接口。


1.1.3 服务熔断:

线程隔离虽然避免了雪崩问题,但故障服务依然会拖慢服务调用方的接口响应速度。而且故障服务依然会导致服务调用方出现故障,服务调用方也变的不可用了。


所以,我们要做两件事情:


编写服务降级逻辑:就是服务调用失败后的处理逻辑,根据业务场景,可以抛出异常,也可以返回友好提示或默认数据。


异常统计和熔断:统计服务提供方的异常比例,当比例过高表明该接口会影响到其它服务,应该拒绝调用该接口,而是直接走降级逻辑。

image-20241121165024533

本文系转载,版权归原作者所有,如若侵权请联系我们进行删除!  

云掣基于多年在运维领域的丰富时间经验,编写了《云运维服务白皮书》,欢迎大家互相交流学习:

《云运维服务白皮书》下载地址:https://fs80.cn/v2kbbq

想了解更多大数据运维托管服务、数据库运维托管服务、应用系统运维托管服务的的客户,欢迎点击云掣官网沟通咨询:https://yunche.pro/?t=shequ


相关文章

【Docker】1.Docker的前身LXC

【Docker】1.Docker的前身LXC

LXC简介:Linux Containers ,一种操作系统层虚拟化技术,为Linux内核容器功能的一个用户空间接口。将应用软件系统打包成一个软件容器内涵应用软件本身的代码,操作系统核心和库...

大数据存储方案

大数据存储方案

1 结构布局目前大数据存储有两种方案可供选择:行存储和列存储。业界对两种存储方案有很多争持,集中焦点是:谁能够更有效地处理海量数据,且兼顾安全、可靠、完整性。从目前发展情况看,关系数据库已经不适应这种...

CentOS7 yum安装报错“Could not resolve host: mirrorlist.centos.org; Name or service not known“之解决办法(换源)

CentOS7 yum安装报错“Could not resolve host: mirrorlist.centos.org; Name or service not known“之解决办法(换源)

yum安装出现错误如下:yum install -y wget && wget -O install.sh https://download.bt.cn/install/install...

Docker--Docker是什么和对Docker的了解

Docker--Docker是什么和对Docker的了解

Docker 的本质Docker的本质是LXC(Linux容器)之类的增强版,它本身不是容器,而是容器的易用工具。Docker通过虚拟化技术,将代码、依赖项和运行环境打包成一个容器,并利用隔离机制来使...

【网络】NAT、代理服务、内网穿透(1)

【网络】NAT、代理服务、内网穿透(1)

1.NAT技术NAT(Network Address Translation,网络地址转换)技术,是解决IP地址不足的主要手段,并且能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。1.1...

【Linux】进程状态

【Linux】进程状态

一、进程三状态转换·新建态:操作系统已经分配了资源给进程了。·就绪态:已经具备了执行的所有必有的条件,但是由于各种原因,暂时无法运行,进程进入就绪状态。·运行状态:当进程处于调度队列当中的时候就处于运...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。