sentinel

  • sentinel base
  • 服务编写
  • 关键名词解释

sentinel base

官网:
https://github.com/alibaba/Sentinel

https://github.com/alibaba/Sentinel/wiki/%E4%BB%8B%E7%BB%8D
是什么?

是一款优秀的限流,降级,熔断的框架。
Sentinel 以流量为切入点,从流量控制、熔断降级、
系统负载保护等多个维度保护服务的稳定性。

组成部分

核心库(Java 客户端)不依赖任何框架/库,
能够运行于所有 Java 运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持。控制台(Dashboard)基于 Spring Boot 开发,打包后可以直接运行,
不需要额外的 Tomcat 等应用容器。

去哪儿下
https://github.com/alibaba/Sentinel/releases


能干吗


怎么玩

https://spring-cloud-alibaba-group.github.io/github-pages/greenwich/spring-cloud-alibaba.html#_spring_cloud_alibaba_sentinel

sentinel安装:
https://github.com/alibaba/Sentinel/releases
选择1.x版本下载. localhost:8080端口访问。

java -jar sentinel.jar


如上图,还没有一个服务交给sentinel进行管理。
需要编写服务,让sentinel接管服务。

服务编写

  1. 启动nacos
    http://localhost:8848/nacos/#/login

  2. 创建模块cloudalibaba-sentinel-service8401

  3. pom

        <!-- nacos --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!--将sentinel的配置持久化交给nacos管理,持久化到数据库 --><dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId></dependency><!-- sentinel --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies>
  4. yaml

    server:port: 8401spring:application:name: cloudalibaba-sentinel-servicecloud:nacos:discovery:server-addr: localhost:8848sentinel:transport:dashboard: localhost:8080 # 当前服务交给sentinel接管port: 8719  #默认8719,假如被占用了会自动从8719开始依次+1扫描。直至找到未被占用的端口management:endpoints:web:exposure:include: '*'
  5. 主启动

    @EnableDiscoveryClient
    
  6. 编写rest接口,用来测试控制台配置限流的规则

    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;@RestController
    public class FlowLimitController
    {@GetMapping("/test/a")public String testA() {return "------testA";}@GetMapping("/testB")public String testB() {return "------testB";}
    }
  7. 基本的限流规则配置

访问任意rest接口,可以看到流控,降级,热点,授权配置。

关键名词解释

  1. 流控

    流量控制(flow control),其原理是监控应用流量的 QPS 或并发线程数等指标,当达到指定的阈值时对流量进行控制,以避免被瞬时的流量高峰冲垮,从而保障应用的高可用性。

    一条限流规则主要由下面几个因素组成,我们可以组合这些元素来实现不同的限流效果:

    resource:资源名,即限流规则的作用对象
    count: 限流阈值
    grade: 限流阈值类型(QPS 或并发线程数)
    limitApp: 流控针对的调用来源,若为 default 则不区分调用来源
    strategy: 调用关系限流策略
    controlBehavior: 流量控制效果(直接拒绝、Warm Up、匀速排队)
    

    https://github.com/alibaba/Sentinel/wiki/%E6%B5%81%E9%87%8F%E6%8E%A7%E5%88%B6

  2. 熔断降级

    除了流量控制以外,对调用链路中不稳定的资源进行熔断降级也是保障高可用的重要措施之一。一个服务常常会调用别的模块,可能是另外的一个远程服务、数据库,或者第三方 API 等。例如,支付的时候,可能需要远程调用银联提供的 API;查询某个商品的价格,可能需要进行数据库查询。然而,这个被依赖服务的稳定性是不能保证的。如果依赖的服务出现了不稳定的情况,请求的响应时间变长,那么调用服务的方法的响应时间也会变长,线程会产生堆积,最终可能耗尽业务自身的线程池,服务本身也变得不可用。

    现代微服务架构都是分布式的,由非常多的服务组成。不同服务之间相互调用,组成复杂的调用链路。以上的问题在链路调用中会产生放大的效果。复杂链路上的某一环不稳定,就可能会层层级联,最终导致整个链路都不可用。因此我们需要对不稳定的弱依赖服务调用进行熔断降级,暂时切断不稳定调用,避免局部不稳定因素导致整体的雪崩。熔断降级作为保护自身的手段,通常在客户端(调用端)进行配置。

  3. 熔断策略

    慢调用比例 (SLOW_REQUEST_RATIO):选择以慢调用比例作为阈值,需要设置允许的慢调用 RT(即最大的响应时间),请求的响应时间大于该值则统计为慢调用。当单位统计时长(statIntervalMs)内请求数目大于设置的最小请求数目,并且慢调用的比例大于阈值,则接下来的熔断时长内请求会自动被熔断。经过熔断时长后熔断器会进入探测恢复状态(HALF-OPEN 状态),若接下来的一个请求响应时间小于设置的慢调用 RT 则结束熔断,若大于设置的慢调用 RT 则会再次被熔断。
    异常比例 (ERROR_RATIO):当单位统计时长(statIntervalMs)内请求数目大于设置的最小请求数目,并且异常的比例大于阈值,则接下来的熔断时长内请求会自动被熔断。经过熔断时长后熔断器会进入探测恢复状态(HALF-OPEN 状态),若接下来的一个请求成功完成(没有错误)则结束熔断,否则会再次被熔断。异常比率的阈值范围是 [0.0, 1.0],代表 0% - 100%。
    异常数 (ERROR_COUNT):当单位统计时长内的异常数目超过阈值之后会自动进行熔断。经过熔断时长后熔断器会进入探测恢复状态(HALF-OPEN 状态),若接下来的一个请求成功完成(没有错误)则结束熔断,否则会再次被熔断。

    https://github.com/alibaba/Sentinel/wiki/%E7%86%94%E6%96%AD%E9%99%8D%E7%BA%A7

更多使用看这个小姐姐的博客,细… 代码已经在我的仓库了。

Sentinel 分布式系统的流量防卫兵相关推荐

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

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

  2. Sentinel: 分布式系统的流量防卫兵

    前言 在 Spring Cloud 体系中,熔断降级我们会使用 Hystrix 框架,限流通常会在 Zuul 中进行处理,Zuul 中没有自带限流的功能,我们可以自己做限流或者集成第三方开源的限流框架 ...

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

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

  4. SpringCloud(十二)SpringCloudAlibaba Sentinel 分布式系统的流量防卫兵

    文章目录 一.Sentinel是什么? 1.1 Sentinel 具有 以下特性 二.Sentinel 使用 2.1 Sentinel 安装. 2.2 创建 `sgg-alibaba-sentinel ...

  5. sentinel分布式系统的流量防卫兵

    首先在根目录下开启cmd黑窗口启用jar文件 java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproj ...

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

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

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

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

  8. 详解sentinel:分布式系统的流量防卫兵

    目录 sentinel是什么 sentinel具有以下特征 丰富的应用场景 完备的实时监控 广泛的开源生态 完善的SPI扩展点 sentinel的主要特性 下载安装 控制台 应用接入 pom文件 ap ...

  9. Sentinel:分布式系统的流量防卫兵 | Spring Cloud 19

    一.Sentinel 是什么? 随着微服务的流行,服务和服务之间的稳定性变得越来越重要.Sentinel 以流量为切入点,从流量控制.流量路由.熔断降级.系统自适应过载保护.热点流量防护等多个维度保护 ...

最新文章

  1. dirty_background_ration 与 /proc/sys/vm/dirty_ratio
  2. 怎么将SAP数据传输到其他系统(Transferring Data from SAP to Other Systems)
  3. java epoll select_字节跳动高频面试题,操作系统/算法/Java等。
  4. matlab自带python_在matlab中直接在python中使用sklearn
  5. 【Transformer】Transformer中16个注意力头一定要比1个注意力头效果好吗?
  6. find 命令详解 基于文件大小,名字和权限等的查找策略以及-path和-prune的详细解释
  7. CentOS 缺少mysqli扩展 请检查PHP配置
  8. Android 人脸识别,活体检测离线SDK
  9. 《SEM长尾搜索营销策略解密》一一1.4 潜藏在海平线下的长尾世界
  10. 浅谈撰写软文标题时需要规避的误区
  11. 【光线追踪系列十一】纹理贴图
  12. 微信小游戏SDK,全方位解读
  13. 四川高中计算机大赛官网,四川省教育厅关于公布2018年度四川省中小学电脑制作活动评选结果的通知...
  14. MII、GMII、RMII、RGMII、SGMII、XGMII
  15. 大林算法,比较基础的,无振铃的改了对象需要手动改一下
  16. 计算机网络进阶 ---- 网络类型 ---- 二层封装协议 ---- HDLC ---- PPP ---- pap认证 ---- chap认证 ---- 详解
  17. GPT-3: 最强的人工智能?
  18. 计算机联锁标准站检测,计算机联锁设备专项测试研究.pdf
  19. 局域网中资源共享(第三方软件FTP)
  20. Android入门之ScrollView

热门文章

  1. oracle之创建和管理表
  2. 前端学习(1388):多人管理项目8user登录
  3. 前端学习(1296):第三方模块nodenrm
  4. 前端学习(648):转换为boolean
  5. java面试题33 Math.round(11.5) 等于多少 (). Math.round(-11.5) 等于多少 ( ).
  6. jenkins安装(用户配置)(2)
  7. Qt 设置当前窗口出现在左右窗口的最前面
  8. vue移动端html5页面根据屏幕适配的四种解决方法
  9. [线性代数]Note 1--方程组的几何解释
  10. postgres 禁止远程登录_Windows 7禁止可移动存储设备写入数据,只有想不到,没有做不到...