sentinel阿里开源的项目,提供了流量控制、熔断降级、系统负载保护等多个维度来保障服务之间的稳定性。随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统自适应保护等多个维度来帮助保障微服务的稳定性。
流量控制示意流量控制在网络传输中是一个常用的概念,它用于调整网络包的发送数据。然而,从系统稳定性角度考虑,在处理请求的速度上,也有非常多的讲究。任意时间到来的请求往往是随机不可控的,而系统的处理能力是有限的。我们需要根据系统的处理能力对流量进行控制。Sentinel 作为一个调配器,可以根据需要把随机的请求调整成合适的形状。
资源
资源是 Sentinel 的关键概念。它可以是 Java 应用程序中的任何内容,例如,由应用程序提供的服务,或由应用程序调用的其它应用提供的服务,甚至可以是一段代码。
只要通过 Sentinel API 定义的代码,就是资源,能够被 Sentinel 保护起来。大部分情况下,可以使用方法签名,URL,甚至服务名称作为资源名来标示资源。
规则
围绕资源的实时状态设定的规则,可以包括流量控制规则、熔断降级规则以及系统保护规则。所有规则可以动态实时调整。
流量控制有以下几个角度:
- 资源的调用关系,例如资源的调用链路,资源和资源之间的关系;
- 运行指标,例如 QPS、线程池、系统负载等;
- 控制的效果,例如直接限流、冷启动、排队等;
Sentinel 的设计理念是可以自由选择控制的角度,并进行灵活组合,从而达到想要的效果。
本系列使用官方提供的控制台界面进行接口的控制以及概念介绍,并完成服务的管理。
项目配置
基于上一篇服务治理的项目,服务提供者增加如下依赖:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
<version>2.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
然后配置增加两项:
spring:
cloud:
sentinel:
transport:
dashboard: localhost:8080
management:
endpoints:
web:
exposure:
include: '*'
dashboard
指向sentinel服务,代码中指向我本机安装的sentinel,端口默认是8080。
安装sentinel
sentinel jar 程序下载后,使用java -jar sentinel-dashboard-1.7.2.jar
运行即可,然后使用浏览器访问,端口默认是8080,用户名密码分别默认都是sentinel
。
如果要更改端口和登录用户数据,使用java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar
命令,其中-Dserver.port=8080
用于更改端口。
用户可以通过如下参数进行配置:
-
-Dsentinel.dashboard.auth.username=sentinel
用于指定控制台的登录用户名为 sentinel; -
-Dsentinel.dashboard.auth.password=123456
用于指定控制台的登录密码为 123456;如果省略这两个参数,默认用户和密码均为 sentinel; -
-Dserver.servlet.session.timeout=7200
用于指定 Spring Boot 服务端 session 的过期时间,如 7200 表示 7200 秒;60m 表示 60 分钟,默认为 30 分钟;
登录成功后,如果有服务运行,即可看到如下图所示的监控效果。其中provider
就是上一篇搭建的provider服务
的名字。(上一篇项目中暴露了一个localhost:8081/index接口,访问几次即可出现效果)
代码地址
本文是流量控制的第一步,搭建环境,后续回持续更新流量控制的限流、熔断机制等内容。如果喜欢,点个关注吧。♥
网友评论