微服务保护(Sentinel)

1.雪崩

微服务链路上某个服务出现了问题,结果导致整个微服务调用链上所有服务都出现了问题,这就是雪崩。


2.解决雪崩问题的常见方式有四种

1.超时处理设定超时时间,请求超过一定时间没有响应就返回错误信息,不会无休止等待

2.舱壁模式限定每个业务能使用的线程数,避免耗尽整个tomcat资源,因此也叫线程隔离

3.熔断降级由断路器统计业务执行的异常比例,如果超出阈值则会熔断该业务,拦截访问该业务的一切请求。

4.流量控制:限制业务访问的QPS,避免服务因流量的突增而故障。QPS:每秒钟处理的请求的数量

注意

1.流量控制可以避免因瞬间高并发流量而导致服务故障。

2.超时处理,线程隔离,熔断降级避免因服务故障引起的雪崩问题

3.超时处理只是缓解了雪崩问题。(比如在1个请求的超时时间过程中又来了其他请求,随着时间推移,还是会耗尽服务的资源)

4.线程隔离由于会创建很多的线程,会造成一定的资源浪费

5.只有流量控制是预防雪崩,其他三种都是防止已有服务故障,然后又传递到其他的服务中去。


3.线程保护技术

注意

1.线程池隔离

             一个业务请求进入tomcat中的时候,给每一个被隔离的业务创建独立的线程池,所以比直接的方式会多出很多很多线程,虽然隔离性好,但是由于线程的数量增多,会造成更多的CPU上下文切换的消耗,所以整个服务性能会下降

2.信号量隔离

                  当业务请求进入tomcat后,不会创建独立线程池,而是统计当前业务已经使用了几个线程了,限定线程的数量,当业务请求数量超过了这个量就会拒绝,限制每个业务能使用的线程数量,减少了线程的创建,在隔离的基础上并没有影响性能


4.Sentinel

阿里巴巴开源的一款微服务流量控制组件: https://sentinelguard.io/zh-cn/index.html
在GitHub下载,使用时直接启动jar包即可: java -jar sentinel-dashboard-1.8.1.jar
然后账号密码都默认为 sentinel

1.微服务整合Sentinel

1.引入sentinel依赖

 <!--sentinel,整合Sentinel-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>

2.配置控制台地址

spring:
  cloud:
    sentinel:
      transport:
        #配置控制台地址
        dashboard: localhost:8080

3.访问微服务的任意端口,触发sentinel监控


5.限流规则

1.簇点链路

就是 项目内的调用链路(请求->springmvc->controller->service->mapper->),链路中被监控的每个接口就是一个资源。 默认情况下sentinel会监控SpringMvc的每一个端点(Endpoint)(可以理解成controller中的方法),因此SpringMVC的每一个端点就是调用链路中的一个资源。流控,熔断等都是针对簇点链路中的资源来设置的。

2.流控模式

在添加限流时,点击高级选项,可以选择三种流控模式:

直接:统计当前资源的请求,触发阈值时对当前资源直接限流,也是默认的模式。

关联:统计与当前资源相关的另一个资源,触发阈值时,对当前资源限流。

链路:统计从指定链路访问到本资源的请求,触发阈值时,对指定链路限流。


1.关联模式

关联模式使用

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值