本文涉及的基本概念:

几种服务限流方式:
熔断:拒绝流量访问,当系统恢复正常时在关闭熔断
服务降级:将次要服务降级,停止服务,将系统资源释放出来给核心功能
延迟处理:在前端设置一个流程缓冲池,将所有的流程全部缓冲到这个池子不立即处理,常见队列缓模式处理,服务端处理不及时会丢失部分请求
特权处理:优先处理需要高保障的请求,其他请求丢去或者延迟处理

Sentinel 的 能做什么?

可以通过 Sentinel 的控制台,我们可以对规则进行查询和修改,也可以查看到实时监控,机器列表等信息

官方文档介绍:https://github.com/alibaba/spring-cloud-alibaba/wiki/Sentinel#%E9%85%8D%E7%BD%AE%E6%8E%A7%E5%88%B6%E5%8F%B0%E4%BF%A1%E6%81%AF

官方下载地址:https://github.com/alibaba/Sentinel/releases

启动控制台

-Dproject.name=sentinel-dashboard 指定Sentinel控制台程序的名称

-Dserver.port=8718 控制台端口,sentinel控制台是一个spring boot程序。
注:客户端需向控制台提供端口,配置文件配置,如:spring.cloud.sentinel.transport.port=8718

-Dcsp.sentinel.dashboard.server=localhost:8718 控制台的地址,指定控制台后客户端会自动向该地址发送心跳包。

-Dcsp.sentinel.api.port=8719 (默认8719)
注:客户端提供给Dashboard访问或者查看Sentinel的运行访问的参数 。若启动多个应用,则需要通过 -Dcsp.sentinel.api.port=xxxx 指定客户端监控 API 的端口

注:
csp.sentinel.dashboard.server这个配置是用在客户端,这里Sentinel控制台也使用是用于自己监控自己程序的api,否则无法显示控制台的api情况,当然这个也可以根据情况不显示。
csp.sentinel.api.port=8719 本地启动 HTTP API Server 的端口号。是客户端的端口,需要把客户端设置的端口穿透防火墙,可在控制台的“机器列表”中查看到端口号,这里Sentinel控制台也使用是用于自己程序的api传输,由于是默认端口所以控制台也可以不设置。

控制台推送规则的日志在 :${user.home}/logs/csp/sentinel-dashboard.log 中,
客户端接收规则日志在 ${user.home}/logs/csp/record.log 中
启动配置wiki: https://github.com/alibaba/Sentinel/wiki/启动配置项
spring cloud alibaba配置、整合feign、动态数据源支持 等的wiki:https://github.com/spring-cloud-incubator/spring-cloud-alibaba/wiki/Sentinel

java -Dserver.port=10090 -Dcsp.sentinel.dashboard.server=localhost:10090 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar
java -Dcsp.sentinel.api.port=10090 -Dserver.port=10090 -Dcsp.sentinel.dashboard.server=localhost:10090 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar

然后用浏览器访问地址:http://localhost:10090

一:首先在项目里添加  sentinel 的  maven 依赖,如下:

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
<version>0.2.1.RELEASE</version>
</dependency>

可以加版本号,也可以省略版本号,具体如下:

配置控制台信息
在 application.yml 配置文件中:

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

这里的 spring.cloud.sentinel.transport.port 端口配置会在应用对应的机器上启动一个 Http Server,该 Server 会与 Sentinel 控制台做交互。比如 Sentinel 控制台添加了一个限流规则,会把规则数据 push 给这个 Http Server 接收,Http Server 再将规则注册到 Sentinel 中。

动态数据源支持
SentinelProperties 内部提供了 TreeMap 类型的 datasource 属性用于配置数据源信息。

在当前项目的 application.properties 中增加限流的配置

# 文件规则数据源
spring.cloud.sentinel.datasource.ds1.file.file=classpath: flowrule.json
# JSON格式的数据
spring.cloud.sentinel.datasource.ds1.file.data-type=json
# 规则类型
spring.cloud.sentinel.datasource.ds1.file.rule-type=flow

flowrule.json 的详细内容:

[
{
"resource": "hello",
"controlBehavior": 0,
"count": 1,
"grade": 1,
"limitApp": "default",
"strategy": 0
}
]

@SentinelResource使用

@GetMapping("/test")
@SentinelResource(value="hello",blockHandler="handleException",blockHandlerClass=ExceptionUtil.class)
public String test() {
String result = restTemplate.getForObject("http://localhost:8087/user/name", String.class);
return result;
}

回退内容定义:

public class ExceptionUtil {
public static String handleException(BlockException ex) {
return "扛不住了啊....";
}
}

前面我们使用注解的话都是手动配置SentinelResourceAspect类,为什么今天不需要配置SentinelResourceAspect呢?
那是因为在spring-cloud-alibaba中已经默认配置好了,代码在org.springframework.cloud.alibaba.sentinel.custom.SentinelAutoConfiguration中,代码如下:

@Bean
@ConditionalOnMissingBean
public SentinelResourceAspect sentinelResourceAspect() {
return new SentinelResourceAspect();
}

sentinel-dashboard.jar 安装的更多相关文章

  1. Sentinel Dashboard(基于1.8.1)流控规则持久化到Nacos——涉及部分Sentinel Dashboard源码改造

    前言 之前虽然也一直在使用sentinel实现限流熔断功能,但却没有好好整理之前看的源码与资料,今天有时间将之前自己整理过的资料写成一篇博文,或者是是一篇关于Sentinel(基于目前最近版本1.8, ...

  2. jar安装

    安装sdk jar 安装到本地 mvn install:install-file -Dfile=F:\workspace\api-cookbook\java\src\main\lib\sdk-1.10 ...

  3. Redis Sentinel 集群安装 step by step

    一. 准备材料 服务器 IP address 操作系统 位数 Redis 版本   CNT06CAH05 192.168.3.47 CentOS 6.5 x64 Redis-3.2.6 sentine ...

  4. Spring Cloud Alibaba基础教程:Sentinel Dashboard中修改规则同步到Nacos

    上一篇我们介绍了如何通过改造Sentinel Dashboard来实现修改规则之后自动同步到Apollo.下面通过这篇,详细介绍当使用Nacos作为配置中心之后,如何实现Sentinel Dashbo ...

  5. 本地jar安装至maven仓库

    本地jar安装至maven仓库 一般不建议通过这种方式配置依赖,通常做法建议你把本地包安装到maven仓库,命令如下: mvn install:install-file-DgroupId=com.ht ...

  6. 将jar安装到本地mvn仓库

    声明:仅限于将maven Repository下载的jar(使用maven打包的jar)安装到本地的maven仓库中,不保证全部成功,最初的时候添加依赖发现下载始终不成功,只能手动下载,但是手动下载完 ...

  7. Spring Cloud Alibaba基础教程:Sentinel Dashboard同步Apollo存储规则

    在之前的两篇教程中我们分别介绍了如何将Sentinel的限流规则存储到Nacos和Apollo中.同时,在文末的思考中,我都指出了这两套整合方案都存在一个不足之处:不论采用什么配置中心,限流规则都只能 ...

  8. Sentinel Dashboard 的 Docker 镜像使用

    1.下载 docker 镜像:https://hub.docker.com/r/anjia0532/sentinel-docker 2.启动 docker 容器:docker run -p8080:8 ...

  9. Spring Cloud Alibaba基础教程:Sentinel Dashboard中修改规则同步到Apollo

    在之前的两篇教程中我们分别介绍了如何将Sentinel的限流规则存储到Nacos和Apollo中.同时,在文末的思考中,我都指出了这两套整合方案都存在一个不足之处:不论采用什么配置中心,限流规则都只能 ...

  10. Sentinel Dashboard 规则 持久化到Nacos

    本篇文章基于sentinel1.8.4版本进行改造的.本篇主要记录改造步骤 1.下载源码 https://github.com/alibaba/Sentinel 2.打开下载的sentinel,到se ...

随机推荐

  1. mybatis复习(三)映射文件属性详解和动态SQL

    mybatis映射文件属性详解和动态SQL笔记 <SELECT> id = "" 唯一标识parameterType = "" 表示传入SQL语句的 ...

  2. Kubernetes 的 NameSpace 无法删除应该怎么办?

    概述 有时候我们操作不规范,或者删除的先后顺序有问题,或者某项关键服务没有启动,导致 Kubernetes 经常会出现无法删除 NameSpace 的情况.这种情况下我们应该怎么办? 规范删除流程 其 ...

  3. spring cloud 学习笔记 客户端(本地)均衡负载(三)

    前言 在微服务中,一个服务可能即是服务端也是客户端,当别的服务调用该服务的时候这个服务就是服务端,当这个服务主动调用另外一个服务的时候,那么就是服务端. 作为客户端通过服务注册与发现获取某个服务的注册 ...

  4. c# unsafe

    前言 c# unsafe可以让我们做一些测试的危险操作. 正文 打开unsafe 功能 在 Visual Studio 开发环境中设置此编译器选项 打开项目的"属性"页. 单击&q ...

  5. uniapp中实现简易计算器

    uniapp中实现简易计算器主要问题:在计算器的实现过程中会遇到小数点计算精度:此计算器是依赖了uni-popup的弹出层插件,可在uniapp官方组件中查找扩展插件popup弹窗层下载,也可直接点击 ...

  6. 旧版本的centOS下载(国内-清华)

    链接如下: https://mirrors.tuna.tsinghua.edu.cn/centos-vault/

  7. watch对比computed

    总结:      computed和watch之间的区别:             1.computed能完成的功能,Watch都可以实现             2.watch能完成的功能,comp ...

  8. 【产品能力深度解读】连续入围Gartner魔力象限的Quick BI有何魔力?

    简介: 国际权威分析机构Gartner发布2021年商业智能和分析平台魔力象限报告,阿里云Quick BI再度入选,并继续成为该领域魔力象限唯一入选的中国企业. Quick BI凭借在增强分析能力上的 ...

  9. HMS数据库设置和优化

    简介:Hive Metastore (HMS) 是一种服务,用于在后端 RDBMS(例如 MySQL 或 PostgreSQL)中存储与 Apache Hive 和其他服务相关的元数据.本文主要分享H ...

  10. [Kali] Kali 信息收集

      网络空间测绘. 网络空间测绘是2016年出现的一个概念,主要指用一些技术方法,来探测全球互联网空间上的节点分布情况和网络关系索引,构建全球互联网图谱的一种方法. nmap端口扫描. 子域名爆破. ...