【微服务】(十一)—— 初识Sentinel

目录

一、雪崩问题及解决方案

1)什么是雪崩效应

2)雪崩原因

3)解决方案

1、超时处理:

 2、舱壁模式:

3、熔断降级:

二、服务保护技术对比

三、Sentinel介绍和安装

1)认识Sentinel

2)安装Sentinel控制台

1、下载jar包

2、访问控制台页面

3、修改配置

四、微服务整合Sentinel

1)引入sentinel依赖:

2)配置控制台地址:

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


一、雪崩问题及解决方案

1)什么是雪崩效应

微服务调用链路中的某个服务故障,引起整个链路中的所有微服务都不可用,这就是雪崩。

 

 

2)雪崩原因

导致服务雪崩的原因有如下三种:

  • 1.由于服务自身的原因,比如缓存击穿,大量的请求,程序bug,硬件故障等导致服务不可用,导致雪崩
  • 2.由于用户或者代码逻辑重试,加大了流量,导致服务雪崩
  • 3.由于资源耗尽,导致服务调用者不可用,就是下面的雪崩效应的情况。

3)解决方案

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

1、超时处理:

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

 2、舱壁模式:

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

3、熔断降级:

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

4、流量控制:

限制业务访问的QPS,避免服务因流量的突增而故障。

二、服务保护技术对比

Sentinel

Hystrix

隔离策略

信号量隔离

线程池隔离/信号量隔离

熔断降级策略

基于慢调用比例或异常比例

基于失败比率

实时指标实现

滑动窗口

滑动窗口(基于 RxJava)

规则配置

支持多种数据源

支持多种数据源

扩展性

多个扩展点

插件的形式

基于注解的支持

支持

支持

限流

基于 QPS,支持基于调用关系的限流

有限的支持

流量整形

支持慢启动、匀速排队模式

不支持

系统自适应保护

支持

不支持

控制台

开箱即用,可配置规则、查看秒级监控、机器发现等

不完善

常见框架的适配

Servlet、Spring Cloud、Dubbo、gRPC 等

Servlet、Spring Cloud Netflix

三、Sentinel介绍和安装

1)认识Sentinel

Sentinel是阿里巴巴开源的一款微服务流量控制组件。

官网地址:https://sentinelguard.io/zh-cn/index.html

Sentinel 具有以下特征:

  • 丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。
  • 完备的实时监控:Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况。
  • 广泛的开源生态:Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel。
  • 完善的 SPI 扩展
  • :Sentinel 提供简单易用、完善的 SPI 扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等。

2)安装Sentinel控制台

1、下载jar包

sentinel官方提供了UI控制台,方便我们对系统做限流设置。大家可以在GitHub下载 :

java -jar sentinel-dashboard-1.8.1.jar

2、访问控制台页面

localhost:8080 即可看到控制台页面,默认的账户和密码都是sentinel

3、修改配置

如果要修改Sentinel的默认端口、账户、密码,可以通过下列配置:

配置项

默认值

说明

server.port

8080

服务端口

sentinel.dashboard.auth.username

sentinel

默认用户名

sentinel.dashboard.auth.password

sentinel

默认密码

 例如:如果8080端口占用了,可用8090端口

java -jar sentinel-dashboard-1.8.1.jar -Dserver.port=8090

四、微服务整合Sentinel

我们在order-service中整合Sentinel,并且连接Sentinel的控制台,步骤如下:

1)引入sentinel依赖:

        <!--sentinel-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>

2)配置控制台地址:

  cloud:
    nacos:
      server-addr: localhost:10086  #nacos地址
    sentinel:
      transport:
        dashboard: localhost:8080 #sentinel 控制台地址

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

 

猜你喜欢

转载自blog.csdn.net/a6470831/article/details/124371369