前言:
Sentinel:分布式系统的流量防卫兵

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。

Sentinel 具有以下特征:

丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。
完备的实时监控:Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况。
广泛的开源生态:Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel。
完善的 SPI 扩展点:Sentinel 提供简单易用、完善的 SPI 扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等。
Sentinel 分为两个部分:

核心库(Java 客户端)不依赖任何框架/库,能够运行于所有 Java 运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持。
控制台(Dashboard)基于 Spring Boot 开发,打包后可以直接运行,不需要额外的 Tomcat 等应用容器。
重点来 他是一个jar包,所以就操作比较简单 Java -jar…就可以,操作简单
这些Sentinel给的介绍,官网地址:https://github.com/alibaba/Sentinel/wiki/%E4%BB%8B%E7%BB%8D
他和第一版 cloud的SpringCloud-Hystrix熔断器服务降级做对比的话 首先不从代码上讲,SpringCloud-Hystrix的监控需要单独一个符才可以做,而Sentinel他一单独的一个项目运行的,在代码上也简化了不少了 我为什么这么说呢,因为Sentinel都是可视化配置配合注解 完成,服务降级,限流等
想用Sentinel首相可定去官网下载Sentinel的jar包
下载地址:https://github.com/alibaba/Sentinel/releases/tag/v1.8.0
这最新的版本

这都不用说说了把拉倒底点击下载

运行Sentinel

前提 jdk 1.8
端口是:8080 检查一下8080端口是否被占用 被占用起不来
从目下打开cmd窗口

Java -jar sentinel-dashboard-1.8.0.jar

启动成功访问Sentinel界面
账号:sentinel
密码:sentinel

登陆成功:

现在启动完成 ,结合项目使用

案例:
pom:
两个依赖 一个是sentinel 做持久化的 就是数据库 一个是sentinel

  <dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId></dependency><!--SpringCloud ailibaba sentinel --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency>

yml
port: 8719 如果端口被占用 就从8719+1开始 一直找到那个端口没被占用为止

server:port: 8092
spring:application:name: cloudalibaba-sentinel-servicecloud:nacos:discovery:server-addr: localhost:8848 #Nacos服务注册中心地址sentinel:transport:dashboard: localhost:8080 #配置Sentinel dashboard地址port: 8719management:endpoints:web:exposure:include: '*'

启动类:

package com.tang.cloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication
@EnableDiscoveryClient
public class SentinelService8092 {public static void main(String[] args) {SpringApplication.run(SentinelService8092.class,args);}
}

测试类写个方法就可以
Sentinel是 懒加载机制所以呢 需要访问一下接口即可
再去访问Sentinel 就有数据了


Sentinel流控监测
资源名:唯一名称请求路径

针对来源:Sentinel可以针对调用者进行限流,填写微服务的名 默认default(不区分来源)
阀值类型/单机阀值:QPS(每秒请求的数量)当前调用api的QPS达到阀值的 时候进行限流
进程数当调用该api的线程达到了阀值的时候限流

流控模式:
直接:是 api达到了限流的条件时直接限流
关联:当关联的资源达到阀值的时候就限流自己
链路:只记录指定链路的流量
流控效果:
快速失败:直接抛异常
wan Up:根据codeFactor(冷加载因子默认3)的值 从阀值/codeFactor,进过预热时长才打到设置的QPS阀值

排队等待:均速排队,让请求以均速通过,阀值类型必须是QPS否则无效


来测试一下 QPS

QPS单机阀值是1代表的是一秒一次

如果点的过快的话直接抛异常

线程的阀值是·1的话 值允许一个线程进去如果在进一个就会抛异常、
Blocked by Sentinel (flow limiting)

关联
QPS阀值是1 意思是 当/select/test1访问达到了阀值 /select/test的这个接口就会被限流

根据调用链路入口限流:链路限流
NodeSelectorSlot 中记录了资源之间的调用链路,这些资源通过调用关系,相互之间构成一棵调用树。这棵树的根节点是一个名字为 machine-root 的虚拟节点,调用链的入口都是这个虚节点的子节点。

一棵典型的调用树如下图所示:

               machine-root/       \/         \Entrance1     Entrance2/             \/               \DefaultNode(nodeA)   DefaultNode(nodeA)

上图中来自入口 Entrance1 和 Entrance2 的请求都调用到了资源 NodeA,Sentinel 允许只根据某个入口的统计信息对资源限流。比如我们可以设置 strategy 为 RuleConstant.STRATEGY_CHAIN,同时设置 refResource 为 Entrance1 来表示只有从入口 Entrance1 的调用才会记录到 NodeA 的限流统计当中,而不关心经 Entrance2 到来的调用。

调用链的入口(上下文)是通过 API 方法 ContextUtil.enter(contextName) 定义的,其中 contextName 即对应调用链路入口名称。详情可以参考 ContextUtil 文档。

3.3 具有关系的资源流量控制:关联流量控制
当两个资源之间具有资源争抢或者依赖关系的时候,这两个资源便具有了关联。比如对数据库同一个字段的读操作和写操作存在争抢,读的速度过高会影响写得速度,写的速度过高会影响读的速度。如果放任读写操作争抢资源,则争抢本身带来的开销会降低整体的吞吐量。可使用关联限流来避免具有关联关系的资源之间过度的争抢,举例来说,read_db 和 write_db 这两个资源分别代表数据库读写,我们可以给 read_db 设置限流规则来达到写优先的目的:设置 strategy 为 RuleConstant.STRATEGY_RELATE 同时设置 refResource 为 write_db。这样当写库操作过于频繁时,读数据的请求会被限流。

Warm Up:(RuleConstant.CONTROL_BEHAVIOR_WARM_UP)方式,即预热/冷启动方式。当系统长期处理低水平的情况下,当流量突然增加时,直接把系统拉升到高水位可能瞬间把系统压垮。通过"冷启动",让通过的流量缓慢增加,在一定时间内逐渐增加
到阈值的上限,给系统一个预热的时间,避免冷系统被压垮

意思WarmUp吗,默认是3阀值预热时间超过10秒才能到达我能的我的想要的效果一秒10个请求

匀速排队(RuleConstant.CONTROL_BEHAVIOR_RATE_LIMITER)方式会严格控制请求通过的间隔时间,也即是让请求以均匀的速度通过,对应的是漏桶算法。详细文档可以参考 流量控制 - 匀速器模式,具体的例子可以参见 PaceFlowDemo。

SpringCloud-Alibaba-Sentinel-分布式系统的流量防卫兵与流量监控-入门相关推荐

  1. SpringCloud Alibaba Sentinel 分布式系统的流量防未兵

    一.服务雪崩 如果启动的下单服务不可用,就会出现线程池里所有线程都因等待响应而被阻塞,从而造成整个服务链路不可用,进而导致整个系统的服务雪崩.如图所示: 二.服务雪崩效应 服务雪崩效应:因服务提供者的 ...

  2. 介绍 spring Alibaba Sentinel: 分布式系统的流量防卫兵

    目录 一.Sentinel 是什么? 二.Sentinel 具有特征 三.下载和安装 一.Sentinel 是什么? Sentinel 是分布式系统的流量防卫兵,Sentinel 以流量为切入点,从流 ...

  3. SpringCloud Alibaba之 Sentinel流量防卫兵

    文章目录 Sentinel 流量防卫兵 一.安装与部署

  4. 3 - 分布式系统的流量防卫兵:Sentinel

    Java工程师的进阶之旅 学习 SpringCloud2 这一篇就够了 1 - SpringCloud Alibaba 介绍 2 - 服务注册与配置中心:Nacos 3 - 分布式系统的流量防卫兵:S ...

  5. Spring Cloud Alibaba Sentinel--分布式系统的流量防卫兵

    1 sentinel 1.官网 https://github.com/alibaba/Sentinel 中文:https://github.com/alibaba/Sentinel/wiki/介绍 H ...

  6. SpringCloudAlibaba - 分布式流量防卫兵Sentinel

    一. Sentinel: 分布式系统的流量防卫兵 - 阿里巴巴产品 具体介绍可以看官方文档:https://github.com/alibaba/Sentinel/wiki/介绍,下面我们说点官方没有 ...

  7. Nepxion Discovery学习笔记3 Sentinel流量防卫兵/服务容错综合方案

    Sentinel(分布式系统的流量防卫兵) 是阿里开源的一套用于服务容错的综合性解决方案.它以流量 为切入点, 从流量控制.熔断降级.系统负载保护等多个维度来保护服务的稳定性. 笔记1: Sentin ...

  8. 分布式系统的流量防卫兵Sentinel-入门指南

    1.介绍 欢迎来到 Sentinel 的世界!这篇新手指南将指引您快速入门 Sentinel. Sentinel: 分布式系统的流量防卫兵 1.1 Sentinel 是什么? 随着微服务的流行,服务和 ...

  9. SpringCloud Alibaba Sentinel 流量控制规则介绍与配置

    概述:流量控制(flow control),其原理是sentinel断路器通过监控应用服务调用的QPS或调用并发线程数来实现调用控制.当QPS或线程数达到配置的阈值时,进行响应的服务降级功能,从而到达 ...

最新文章

  1. Sigma Function LightOJ - 1336[约数和定理]
  2. 2016年3月23日作业(项目进度管理、项目成本管理)
  3. 如何在Cordova Android 7.0.0 以下版本集成最新插件 极光插件为例
  4. netty4.0.x源码分析—bootstrap
  5. SEO配置信息操作文档
  6. 大厂架构师经验分享!成功跳槽字节跳动
  7. mac基础操作:在Mac上怎么使用夜览
  8. 菜鸟python 正则表达式_python基础知识(进阶篇--正则表达式)
  9. win11系统卡死怎么办 Windows11系统卡死的解决方法
  10. Leetcode题解(十九)
  11. 矩阵直接分解法matlab,矩阵直接三角分解法
  12. 计算机教师中级职称个人总结,职称个人总结
  13. 2022-2027年中国熔融碳酸盐型燃料电池行业市场全景评估及发展战略规划报告
  14. 【ReactJs学习笔记总目录】
  15. IG赢了,让我们先理直气壮的喊出那句 我们是冠军!
  16. 面了20家,原来大厂面试的套路是……
  17. 学习笔记 | 面对海量数据,为什么无法设计出完美的分布式缓存体系?
  18. C#在Excel与Word中写入上角标与下角标
  19. 【网路编程】网络基础知识(IP、子网掩码、网关等)概念概述
  20. WEB前端 HTML 基本标签

热门文章

  1. 酒桌游戏,初期训练思维
  2. 1985-2020年全球30米地表覆盖精细分类产品V1.0免费下载,内附链接
  3. 时间是6G研发成功的关键
  4. 如何阻止你最好的员工辞职
  5. React 重新渲染指南
  6. 我发表的论文,怎么跑到百度文库中了
  7. 视频录制不清楚、模糊解决办法
  8. python画k线图_Python使用matplotlib绘制k线图(去掉空白日期)
  9. sublime 4 设置文件编码 GBK
  10. Simpsons’ Hidden Talents辛普森一家的隐藏天赋(next数组和kmp字符串匹配)