一、SpringCloudAlibaba整合Sentinel

1、引入依赖

引入 Sentinel依赖,包含了 核心库和客户端等依赖。

        <!-- sentinel启动器--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency>

2、yml配置文件

根据 Sentinel控制台地址为微服务添加 yml配置 。

server:port: 18084servlet:context-path: /app-user-sentinelspring:application:name: app-user-sentinel  #应用名称 (nacos会将该名称当做服务名称)#nacos注册中心地址cloud:nacos:server-addr: 192.168.xxx.xxx:8848discovery:username: nacospassword: nacosnamespace: b4d0832b-a7b0-44c2-8ce5-1abe676a4736 # 必须使用命名空间id
#        group: prod#sentinel控制台地址sentinel:transport:# 添加sentinel的控制台地址dashboard: localhost:17080# 指定应用与 Sentinel控制台交互的端口# port: 8719

3、启动项目

启动项目,访问一下接口, Sentinel就会初始化。到此,整合 Sentinel完成。

二、Sentinel控制台使用

1、实时监控

事实监控接口的通过的 QPS和拒绝的 QPS 。同一个服务下的所有机器的簇点信息会被汇总,并且秒级地展示在"实时监控"下。 实时监控仅存储 5 分钟以内的数据,默认没有持久化。

2、簇点链路

簇点链路 :用来显示微服务的所监控的API。

簇点链路(单机调用链路)页面实时的去拉取指定客户端资源的运行情况。

提供了两种展示模式:

  • 一种用树状结构展示资源的调用链路,
  • 一种则不区分调用链路展示资源的运行情况。

3、流控规则

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

官方文档-流控规则:https://github.com/alibaba/Sentinel/wiki/%E6%B5%81%E9%87%8F%E6%8E%A7%E5%88%B6

  • 资源名:接口的API
  • 针对来源:默认是default,当多个微服务都调用这个资源时,可以配置微服务名来对指定的微服务设置阈值
  • 阈值类型:分为QPS和线程数 假设阈值为2
  • QPS类型:只得是每秒访问接口的次数>2就进行限流
  • 线程数:为接受请求该资源分配的线程数>2就进行限流

3.1 QPS流控

QPS(Query Per Second):每秒请求数,就是说服务器在一秒的时间内处理了多少个请求。

进入簇点链路选择具体的访问的API,然后点击流控按钮,配置上图信息。

@RestController
@RequestMapping("/flow")
@Slf4j
public class FlowController {@Autowiredprivate RestTemplate restTemplate;/*** http://localhost:18084/app-user-sentinel/flow/getOrderByUserId1/1* * @param id* @return*/@RequestMapping(value = "/getOrderByUserId1/{id}")public R getOrderByUserId1(@PathVariable("id") Integer id) {log.info("根据userId=" + id + "查询订单信息");String url = "http://app-order/order/findOrderByUserId/" + id;R result = restTemplate.getForObject(url, R.class);return result;}/*** http://localhost:18084/app-user-sentinel/flow/getOrderByUserId2/5** @param id* @return*/@RequestMapping(value = "/getOrderByUserId2/{id}")@SentinelResource(value = "/flow/getOrderByUserId2", blockHandler = "blockHandlerForGetOrderByUserId2", fallback = "fallbackForGetOrderByUserId2")public R getOrderByUserId2(@PathVariable("id") Integer id) throws InterruptedException {log.info("根据userId=" + id + "查询订单信息");if(id == 20){TimeUnit.SECONDS.sleep(id);}String url = "http://app-order/order/findOrderByUserId/" + id;R result = restTemplate.getForObject(url, R.class);return result;}public R blockHandlerForGetOrderByUserId2(Integer id, BlockException blockEx) {log.info("BlockException。id={}, blockEx = {}", id, blockEx.getMessage());return R.error(" getOrderByUserId2 方法被流控了。id=" + id);}public R fallbackForGetOrderByUserId2(Integer id, Throwable e) {log.info("业务出异常了。ex = {}", e.getMessage());return R.error(" getOrderByUserId2 业务出异常了。ex = " + e);}}

访问接口并添加 QPS流控。上面接口 QPS=2,所以,1秒内多次访问会被流控。


可以通过 @SentinelResource注解自定义处理异常信息。

也可以新建一个类,实现 BlockExceptionHandler接口,统一处理BlockException。

3.2 线程数流控

Sentinel 并发控制不负责创建和管理线程池,而是简单统计当前请求上下文的线程数目(正在执行的调用数目),如果超出阈值,新的请求会被立即拒绝,效果类似于信号量隔离。并发数控制通常在调用端进行配置。

设置并发线程数为1。

其他 Sentinel控制台的使用查看官方文档。

– 求知若饥,虚心若愚。

SpringCloudAlibaba整合Sentinel使用相关推荐

  1. SpringCloudAlibaba 六、Sentinel 服务保护 ( 服务降级/ 熔断/ 数据持久化 / gateway 整合 Sentinel )

    一.Sentinel 描叙 1.Sentinel作用 Sentinel,中文翻译为哨兵,是为微服务提供流量控制.熔断降级的功能,它和Hystrix提供的功能一样,可以有效的解决微服务调用产生的&quo ...

  2. 1命名规则 sentinel_Spring Cloud Alibaba 整合 Sentinel 流控

    前面我们都是直接通过集成sentinel的依赖,通过编码的方式配置规则等.对于集成到Spring Cloud中阿里已经有了一套开源框架spring-cloud-alibaba,就是用于将一系列的框架成 ...

  3. sentinel 打包_SpringCloud Alibaba整合Sentinel

    欢迎关注H寻梦人公众号 SpringCloud Alibaba整合Sentinel Sentinel 控制台 1. 概述 Sentinel 提供一个轻量级的开源控制台,它提供机器发现以及健康情况管理. ...

  4. 【alibaba-cloud】网关整合sentinel实现限流

    网关整合sentinel实现限流 还是在前几篇博客的基础上搭建的,需要有服务端,客户端,网关等 客户端服务端的搭建:https://blog.csdn.net/wangyunzhao007/artic ...

  5. Spring Cloud Alibaba 实战 | 第十二篇: 微服务整合Sentinel的流控、熔断降级,赋能拥有降级功能的Feign新技能熔断,实现熔断降级双剑合璧(JMeter模拟测试)

    文章目录 一. Sentinel概念 1. 什么是Sentinel? 2. Sentinel功能特性 3. Sentinel VS Hystrix 二. Docker部署Sentinel Dashbo ...

  6. Feign整合Sentinel实现容错

    Sentinel通过各种规则对资源进行保护,即进行服务容错.Feign使得调用远程服务就像调用本地服务一样简单.但是Feign在调用远程服务的时候,由于远程服务的原因,可能会产生异常.就需要进行相应的 ...

  7. 六、手把手教你搭建SpringCloudAlibaba之Sentinel实现流量实时监控

    SpringCloud Alibaba全集文章目录: 零.手把手教你搭建SpringCloudAlibaba项目 一.手把手教你搭建SpringCloud Alibaba之生产者与消费者 二.手把手教 ...

  8. Springcloudalibaba整合es!实现相关性排序,集成完代码真香

    springboot 整合es出现问题: 版本不兼容问题,官方给出一个很详细的图,实际上整合起来还是会报版本不兼容的问题: 版本选型: SpringBoot <parent><gro ...

  9. 工作纪实_25-SpringCloud整合sentinel问题汇总

    sentinel使用汇总 1.纠结于`sentinel` 包的引入 2.关于reactive客户端和web客户端方面包引入的区别 3.包版本不匹配的问题 4.代码 1.启动类 2.http接口 3.s ...

最新文章

  1. Dat.gui 使用教程
  2. Java网络编程笔记3
  3. java RSA加密解密--转载
  4. 二十万字C/C++、嵌入式软开面试题全集宝典七
  5. nginx源码分析之IO多路复用流程
  6. mysql elt interval_mysql 区间分组 interval,elt 的运用
  7. 谈谈Runtime类中的freeMemory,totalMemory,maxMemory等几个方法
  8. 单反相机参数之ISO/焦距篇
  9. PHP完全自学手册01.pdf
  10. dlink网卡驱动 linux,D-Link友讯
  11. java读写xlsx文件
  12. python图书管理实训报告总结_结对项目 —— 图书管理系统实验报告
  13. 《那些年啊,那些事——一个程序员的奋斗史》——101
  14. dns被劫持怎么办,DNS被劫持了有什么解决办法?
  15. 无人机——电调篇(二)
  16. 智能摄像头在我们的家居生活中,主要包含哪些利弊?
  17. 软考中级一般需要备考多久?过来人告诉你
  18. 北京住房公积金联名卡查询使用
  19. [转]Windows CE 6.0(PB6)离线安装版下载
  20. python面试No7

热门文章

  1. 在职场要避免这些“潜规则”
  2. php两个手机号正则表达式_最新手机号码正则表达式(php版)
  3. Vue鼠标移入(悬停)显示-移出隐藏
  4. 公交来了 1.3.0 发布
  5. 接口与实现基础 DAY ONE
  6. 网络连通性以及网络不通解决办法
  7. Paper系列的查重和知网维普的查重对比
  8. 学习笔记 计算机组成原理_名词解释
  9. Unity用代码设置图片的压缩格式(AssetImporter/TextureImporter)
  10. epsfallback_5G语音回落4G解决方案探讨