1.1 初识Sentinel

一、雪崩问题及其解决方案

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

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

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

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

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

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

二、服务保护技术对比

Sentinel
Hystrix

隔离策略

信号量隔离

线程池隔离/信号量隔离

熔断降级策略

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

基于失败比例

实时指标实现

滑动窗口

滑动窗口(基于RxJava)

规则配置

支持多种数据源

支持多种数据源

扩展性

多个扩展点

插件的形式

基于注解的支持

支持

支持

限流

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

有限的支持

流量整形

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

不支持

系统自适应保护

支持

不支持

控制台

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

不完善

常见框架的适配

Servlet、Spring Cloud、Dubbo、gPRC等

Servlet、Spring Cloud Netflix

三、Sentinel介绍和安装

  1. 认识Sentinel

    1. Sentinel是阿里巴巴开源的一款微服务流量控制组件,官网地址:https://sentinelguard.io/zh-cn/

    2. 特点:

      1. 丰富的应用场景

      2. 完备的实时监控

      3. 广泛的开源生态

      4. 完善的SPI扩展点

  2. 安装Sentinel控制台

    1. 官方提供了UI控制台,方便我们做限流设置,可以在官方的GitHub上下载对应的jar包

    2. 下载完成后拷贝到一个非中文的目录,然后执行java -jar xxx.jar即可

    3. 访问地址,端口8080,用户名密码均为sentinel

    4. 修改端口,用户名以及密码

      配置项
      默认值
      说明

      server.port

      8080

      服务端口

      sentinel.dsahboard.auth.username

      sentinel

      默认用户名

      sentinel.dsahboard.auth.password

      sentinel

      默认密码

      说明:在只想命令后添加配置,即可修改默认配置项

      举例:java -jar xxx.jar -Dserver.port=8081 sentinel.dsahboard.auth.username=root`

四、微服务整合Sentinel

  1. 引入sentinel依赖

    <dependency>
    	<groupId>com.alibaba.cloud</groupId>
    	<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
    </dependency>
  2. 修改yml配置

    spring:
      cloud:
        sentinel:
          transport:
            dashboard: localhost:8080

    备注:配置的地址是ui地址

  3. 请求某个接口,让界面可以捕捉

最后更新于

这有帮助吗?