美文网首页
Sentinel 流控第一步

Sentinel 流控第一步

作者: NoelI | 来源:发表于2021-08-02 15:10 被阅读0次

    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接口,访问几次即可出现效果)

    运行效果

    代码地址
    本文是流量控制的第一步,搭建环境,后续回持续更新流量控制的限流、熔断机制等内容。如果喜欢,点个关注吧。♥

    相关文章

      网友评论

          本文标题:Sentinel 流控第一步

          本文链接:https://www.haomeiwen.com/subject/zeqjvltx.html