分布式系统之Sentinel介绍与使用

网站建设4年前发布
41 0 0

在家休息的的时候,突然小勇打电话过来,问 农哥,你知道Sentinel吗?,学习技术第一步,先知道官网地址在哪里,官网永远是第一手资料:https://github.com/alibaba/Sentinel/wiki。,接下来我们先来了解一下什么是Sentinel。,分布式系统的流量防卫兵: 随着微服务的普及,服务调用的稳定性也变的越来越重要,Sentinel 以“流量”为切入点,在流量控制、断路、负载保护等多个方面进行续航,保证服务的可靠性。,Sentinel 具有以下特征:,Sentinel 的主要特性:,当我们的分布式系统,面临复杂的体系结构中应用程序可能有数十个依赖关系,每个依赖关系在某些时候将不可避免的失败,比如我们调用 D\F\K 这几个服务,如果这些服务中某一个出现问题了,那么有可能会出现整体系统效率的下降,严重的甚至出现服务雪崩。,多个微服务之间互相调用的时候,如果D调用K和F,而K和F又调用其他的微服务,那么就会形成扇出,如果扇出某个链路上的微服务调用超时或者响应很慢,那么微服务D就会占用越来越多的系统资源,从而导致系统崩溃,也就是服务雪崩。,对于高流量的应用来说,单一的后端依赖可能会导致服务器上的资源在极短的时间内被耗光,同时还有可能导致这些应用程序服务之间的响应时间增加,队列、线程和其他系统资源变的紧缺,导致整个系统之间发生更多的次生故障,如果我们单个应用服务故障处理和延迟进行隔离管控,当单个依赖关系失败时,不能对这个系统和资源产生影响,当某个模块实例失败以后,如果这个时候服务还能接收请求和流量访问,同时这个服务还去调用其他模块时,这样的级联故障,就会导致雪崩的发生。,对比与其他的断流产品(Hystrix)而言,他不需要我们自己手动搭建监控平台,而且它有一套属于自己的Web界面,可对多种指标进行流控、熔断,且提供了实时监控和控制面板,功能更为强大。,下载地址:https://github.com/alibaba/Sentinel/releases。,Sentinel 分为两个部分:,到这里呢,我们的Sentinel就安装成功了,可能有点同学在界面上没有看到任何东西,并没有发现监控的服务,这是因为我们还没有启动项目,而Sentinel 本身采用的是懒加载模式,所以我们需要先去访问服务对应的接口,Sentinel才会进行工作,接下来我们就来搭建我们的测试项目。,Sentinel 官方参考文档:https://sentinelguard.io/zh-cn/docs/quick-start.html。,注意: 这里我们使用到了Nacos,不会Nacos的小伙伴,可以看我之前的文章,里面有详细的介绍,其实只需要你启动一个端口为8848的Nacos就行。,导入依赖:,配置属性:,测试类:,最后在我们的启动类上加上 :@EnableDiscoveryClient,点击启动,然后我们来访问我们的测试地址:,访问之后,我们就能在Sentinel上看到我们的监控信息了,如下所示:,好了,你们以为到这里Sentinel就讲解完了吗?哎~怎么可能,我还要继续卷,宁愿累死自己,也要卷死你们!虽然基本操作已经完成,但是不讲一下他的 流控规则 ,我们怎么能印象深刻呢?是吧,各位大漂亮和大聪明们。,首先我们先来看一张图:,上面这张图,就包含了,我们要讲解的全部内容,主要分为以下几点:,资源名:流控规则中唯一的名称,默认为我们的请求路径。,针对来源:Sentinel 对调用者进行限流,填写我们的微服务名,默认为default,对来源不进行区分。,阈值类型/单机阈值:,是否集群:默认否,如果是集群勾选。,流控模式:,流控效果:,我们先来新增一个流控规则看一下,操作方式有两种。,因为方便,我们一般会选择在簇点链路中添加,我们先来试一下QPS的操作:,这里我们设置单机阈值为1,所以playA 这个接口一秒中只能被访问一次,如果超过,则进行限流操作进行一个阻塞操作,这个效果我们是可以直接看到的,当我们不停的刷新playA时,就会现在如下信息,而没有设置的playB,则不会。,在这里我们如果设置为线程数会怎么样呢?我们来看一下。,在这里我们要注意:如果项目重新启动,需要将修改后的playA,重新访问后重新,添加流控规则。,同时我们需要在代码中设置延时执行,如果处理太快,我们是看不到实际效果的,如果有兴趣的小伙伴可以自己启动线程去跑,在这里我们设置playA,进行一秒钟的延时操作。,这里要使用两个不同浏览器去跑,同一个浏览器使用的是同一线程,先请求的某歌后请求的某火效果如下所示:,QPS和并发线程数的规则如下所示:,虽然最终效果是一样的,但是规则是不同的,每种应对不用的业务场景,大家可以合理化的去使用,到这里我们的Sentinel就讲完了,后面还有更多有关于Sentinel的原理和介绍。

© 版权声明

相关文章