本文涉及的基本概念:

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

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. 什么是coredump

    什么是 coredump 介绍 在 Linux 开发中,我们经常听到程序员说我的程序 core 掉了,通常出现这类的问题是低级 bug 中的内存访问越界.使用空指针.堆栈溢出等情况.使程序运行过程中异 ...

  2. Lite Actor:方舟Actor并发模型的轻量级优化

    原文:https://mp.weixin.qq.com/s/8biIBddpy6GKgakazg1vcg,点击链接查看更多技术内容. 并发模型是用来实现不同应用场景中并发任务的编程模型,通过合理地使用 ...

  3. k8s 深入篇———— pod 实战[六]

    前言 pod 实战一下,主要是一些例子. 正文 例子一 pod 实例的选择: NodeSelector:是一个供用户将 Pod 与 Node 进行绑定的字段 NodeName:一旦 Pod 的这个字段 ...

  4. linux 性能自我学习 ———— cpu 切换带来的性能损耗 [二]

    前言 我们知道现在操作系统,都是多进程和多线程,那么会有一个操作系统帮助我们去切换进程和线程,这个是要消耗cpu资源的,那么就来了解一下cpu资源消耗情况. 正文 一般是下面几个场景切换: 进程上下文 ...

  5. InnoDB常用锁总结(行锁、间隙锁、临键锁、表锁)

    相关文章 数据库系列:MySQL慢查询分析和性能优化 数据库系列:MySQL索引优化总结(综合版) 数据库系列:高并发下的数据字段变更 数据库系列:覆盖索引和规避回表 数据库系列:数据库高可用及无损扩 ...

  6. cv2在图像上画不同比例的锚框

    ''' cv2在图像上画不同比例的锚框 ''' import cv2 import math # 画宽高比1:1的锚框 def display_11_anchor(img,anchor_11_left ...

  7. 快速上手Linux核心命令

    Linux 的重要性不用我多说了吧,大多数互联网公司,服务器都是采用的Linux操作系统 Linux是一个主要通过命令行来进行管理的操作系统. 只有熟练掌握Linux核心命令,在使用起来我们才会得心应 ...

  8. MUI-拿到版本名称和版本code

    场景: 一般App发布了新版本之后,都会提示用户去更新.这就需要我们获取App的当前版本号与后台存储的版本号做对比来判断是否需要更新. 获取版本名称和版本code: 打开manifest.json文件 ...

  9. c#代码重构与迭代(一)——循环代码的优化

    foreach (var item in list) { Devices _Device = DevicesLogic.GetInstance().GetDevices(item.DeviceID); ...

  10. CentOS7.9 systemctl

    目录 命令格式 语法 加载配置文件 关机和开机 unit 文件存放位置 unit 格式说明 service unit file 文件构成部分 unit 段的常用选项 service 段的常用选项 in ...