ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

微服务的限流

2021-10-20 01:33:14  阅读:144  来源: 互联网

标签:服务 springboot Sentinel 限流 规则 sentinel 控制台 客户端


1 sentinel

1.1介绍

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。

Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。

Sentinel 具有以下特性

    - 丰富的应用场景

        Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。

    - 完备的实时监控

        Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况

    - 广泛的开源生态

        Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel。

    - 完善的 SPI 扩展点

        Sentinel 提供简单易用、完善的 SPI 扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等。

1.2 sentinel的基本组成

  • 核心库(Java 客户端):不依赖任何框架/库,能够运行于 Java 7 及以上的版本的运行时环境,可以结合springcloud一起使用

  • 控制台(Dashboard):控制台主要负责管理推送规则、监控、集群限流分配管理等,使用账号密码登录,初始账号密码都是sentinel

1.3 sentinel的生态

1.4 启动sentinel

下载好的sentinel就是一个打包好的jar包,可以直接用控制台启动

java -jar sentinel-dashboard-1.7.2.jar --server.port=自定义端口号

1.5 配置客户端

1.5.1 已有项目 引入pom依赖

只需要在需要引入sentinel的项目中加入依赖,具体使用的版本号会自动与当前springcloud的版本号对应,比如在springcloud项目的父模块的pom文件中加入该依赖,也可以在项目的子模块中引入该依赖,即单独为模块引入

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

通过查看GitHub上alibaba提供的springcloud说明文档可以找到组件和主版本的对应关系,其中seata是做分布式事务的,dubbon是做服务调用的,rocketMQ是消息队列,nacos是做注册中心,sentinel是做流量监控的

1.5.2 新项目 springboot骨架创建时启用

如果是新项目,那么可以在springboot骨架创建项目时就引入这个组件

1.5.3 配置yml

如果是手动引入的sentinel,需要配置sentinel

spring:
  application:
    name: nacos-order
  cloud:
    sentinel:
      transport:
        port: 8719
        dashboard: 127.0.0.1:8080

如果是基于springboot-alibaba骨架创建的,那么yml已经配置好了,我们只需要修改部分参数

1.6 控制台页面

1.6.1 布局

启动springboot项目,并访问一次配置了sentient客户端的模块后,就可以通过控制台查看到项目,具体使用规则可以看官方在GitHub上的文档说明

1.6.2 降级规则

可以在控制台新增降级规则,在什么时候进行服务降级,和Hystrix提供的设置很相似

资源名 就是controller的方法的请求路径

异常比例 就是Hystrix提供的错误率

时间窗口 就是降级多少秒才恢复

1.6.3 流控规则

QPS即每秒查询数

资源名 就是controller的方法的请求路径

单机阈值 就是单台机器最多发送几个查询

1.7 springboot项目中的sentinel实际就是个过滤器

在服务器上启动sentinel,然后启动配置了sentinel的springboot项目,此时sentinel在springboot上就是一个过滤器

sentient提供一个网页端控制台,运维或者开发通过控制台设定规则,然后把控制台上设定好的规则推送到所有装了sentinel的客户端上,此时各个客户端上的sentient就以过滤器的角色执行这些规则,这也就是为什么sentient是低侵入的原因

标签:服务,springboot,Sentinel,限流,规则,sentinel,控制台,客户端
来源: https://www.cnblogs.com/BRSblackshoot/p/15427168.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有