背景:

最近线上系统遇到线程耗尽,导致不能正常办理业务问题。通过分析发现,因为其中两个定时任务触发时间短,每个处理耗时反而很长,线程耗尽,已获的线程部分报没有提供者,即服务不可用,同时导致部分业务请求无法获得线程,业务中断无返回。

解决此具体问题可以用具体方案,比如将线程数量调大,有问题的定时任务触发时间调长。但是,我们希望避免类似问题再出现,因此可以采用熔断限流组件。比如Netflix的一款开源限流组件Hystrix,作为作为Spring Cloud官方默认的熔断组件,但是已经停止维护。另外一款是18年7月开源的sentinel,行业应用普遍。

熔断:如果当调用失败达到指定的次数,则将熔断器打开一段时间,即将请求链路断开;在指定时间内,都不再让消费者向提供者发送请求;当熔断时间到了,就将熔断器设置为半打开的状态,此时消费者可以往提供者发送请求,并统计成功次数,如果达到指定的成功次数,熔断器则变为关闭状态,即将请求链路打开,否则熔断器又变回打开状态。

限流:限制单位时间内请求数量,比如每秒只能1个请求,多余请求直接返回,不会发到服务提供者上去。

由于系统采用的是dubbo框架,dubbo自带服务降级,但是其服务降级可理解为将后端报错包装成具有业务意义的返回,并不带熔断。所以尽管每次因为 RPC 异常而导致调用失败,也不会进行熔断处理;即不管调用失败多少次,消费者还是会继续进行调用。其实这样会导致服务的资源浪费:

只要服务提供者出现异常达到一定的次数,其实可以理解为服务提供者短时间内已经不能正常提供服务了,后续再调用也是浪费资源。当出现提供者不可用,消费者还会进行 1+retires 次的 RPC 调用,这样就更加浪费资源了。所以,为 dubbo 配一个熔断机制是非常有必要的了。

Sentinel(微服务的哨兵)简介:

随着分布式系统变得越来越流行,服务之间的可靠性变得比以往任何时候都更加重要。Sentinel以“流量”为切入点,在流量控制、 流量整形熔断系统自适应保护等多个领域开展工作,保障微服务的可靠性和弹性。

哨兵具有以下特点:

丰富的应用场景:Sentinel在阿里巴巴已经被广泛使用,几乎覆盖了近10年双11(11.11)购物节的所有核心场景,比如“秒杀”需要限制突发流量到满足系统容量、消息削峰填谷、下游不可靠业务断路、集群流量控制等。

实时监控:Sentinel 还提供实时监控能力。可以实时查看单台机器的运行时间信息,以及500个节点以下集群的聚合运行时间信息。

广泛的开源生态系统:Sentinel 提供与常用框架和库(例如 Spring Cloud、Dubbo 和 gRPC)的开箱即用集成。您只需将适配器依赖项添加到您的服务即可轻松使用 Sentinel。

多语言支持:Sentinel 为 Java、Go和C++提供了本机支持。

丰富的SPI扩展:Sentinel提供简单易用的SPI扩展接口,可以让您快速自定义逻辑,例如自定义规则管理、适配数据源等。

具体可以参考:Sentinel: 官网阿里 Sentinel

Sentinel使用

本demo使用技术springboot+dubbo+mybatis-puls+sentinel,工程已上传github,地址是:https://github.com/zbf2016/springboot-dubbo-sentinel.git

工程目录截图:

dubbo-service:接口模块,所有需要暴露的接口放此模块,会被dubbo-consumer和dubbo-service模块依赖。

dubbo-common:公共模块,主要放工具类等。

dubbo-consumer:消费者模块。

dubbo-provider:服务提供者模块

sentinel配置放在common模块,如下:

服务提供者接口:

服务提供者接口实现

消费者需要继承熔断流控规则类:

测试,服务提供者不启动,模拟100次请求,一秒请求2次

观察结果如下:

当第0次请求,第2次请求,第4次请求,第6次请求都是正常,没有被限流,也就是符合1QPS的限流规则,说明sentinel起了限流作用。

当第10次请求后,所有的请求都被熔断了,符合熔断规则设置的5秒内10个请求,有2个异常及以上即熔断。

Sentinel监控

Sentinel监控可以直接在github下载jar包,参考github即可,启动后如下所示:

账号密码都是sentinel,初次进入是空白

当有请求之后,可在控制界面配置限流规则和熔断规则,目前只在服务生效期间有用,服务重启需要重新配,如需要长期有效,可以整合nacos即可

总结:sentinel使用简单,功能强大,在微服务系统中被广泛使用,让系统高可用。

sentinel初探相关推荐

  1. Azure Sentinel -- 初探系列二 案件调查及追踪

    在上一篇文章中,我们看到了如何对案件通过相关性迅速找到事件发生的根源,但查找到威胁仅仅只是个开端,后续如何流程化的解决这个威胁,实现安全编排和自动相应.也是安全团队所需要去完成的工作,而这个过程,Az ...

  2. Azure Sentinel -- 云原生企业安全信息和事件管理平台(SIEM)初探系列一

    SIEM,一个已经存在20多年的安全产品领域,一个很多企业所必须的安全事件监控和管理平台,但现在它所承载的功能和价值也随着现在企业办公环境的变化而面临巨大的挑战. 首先,最大的一点的不同在于,企业的安 ...

  3. Alibaba Sentinel 限流与熔断初探

    在学习一个新技术或新框架时,建议先查看其官方文档,以获得对其形成一个整体的认识.https://github.com/alibaba/Sentinel/wiki/%E4%BB%8B%E7%BB%8D ...

  4. Alibaba Sentinel 限流与熔断初探(技巧篇)

    温馨提示:源码分析 Alibaba Sentinel 专栏开始连载,本文展示如何学习一个全新的技术的方法.该专栏基于 1.7.0 版本. 在学习一个新技术或新框架时,建议先查看其官方文档, Senti ...

  5. 极光实时监听怎么调用_源码分析 Sentinel 实时数据采集实现原理(图文并茂)

    本篇将重点关注 Sentienl 实时数据收集,即 Sentienl 具体是如何收集调用信息,以此来判断是否需要触发限流或熔断. Sentienl 实时数据收集的入口类为 StatisticSlot. ...

  6. Sentinel 高可用流量管理框架

    Sentinel 是面向分布式服务架构的高可用流量防护组件,主要以流量为切入点,从限流.流量整形.熔断降级.系统负载保护.热点防护等多个维度来帮助开发者保障微服务的稳定性. Sentinel 具有以下 ...

  7. SpringCloud Alibaba微服务实战(五) - Sentinel实现限流熔断

    什么是Sentinel? 请查看文章:SpringCloud Alibaba微服务实战(一) - 基础环境搭建 构建服务消费者cloud-sentinel进行服务调用 服务创建请查看文章:Spring ...

  8. 2021年大数据Flink(九):Flink原理初探

    Flink原理初探 Flink角色分工 在实际生产中,Flink 都是以集群在运行,在运行的过程中包含了两类进程. JobManager: 它扮演的是集群管理者的角色,负责调度任务.协调 checkp ...

  9. 从壹开始微服务 [ DDD ] 之一 ║ D3模式设计初探 与 我的计划书

    缘起 哈喽大家周四好!又是开心的一天,时间过的真快,我们的 <从壹开始 .net core 2.1 + vue 2.5 >前后端分离系列共 34 篇已经完结了,当然以后肯定还会有更新和修改 ...

最新文章

  1. python基础之Day23
  2. 图像的七个不变矩 可用于图像的匹配
  3. CentOS中使用Docker来部署Nginx
  4. mysql5.7 hibenate5.1_5.7 Spring与Hibernate整合应用
  5. 属于程序员的等级,看看你是哪个级别?
  6. 安卓下拉框获取序号_中文编程:安卓的右上角菜单
  7. IT 从业者要如何在国企「活」下去?
  8. ubtil类oracle,oracle中报错Connect internal only, until freed
  9. Linux下JAVA线程占用CPU高的分析方法
  10. ansible 第三次作业
  11. RedissonMultiLock + RedissonLock部分源码
  12. [渝粤教育] 深圳职业技术学院 安全教育与应急处理训练 参考 资料
  13. 十大排序算法之二路归并排序(难点为对于递归的理解)
  14. xampp 可道云_利用xampp+可道云KodExplorer本地搭建私有云
  15. WARN [org.springframework.web.servlet.PageNotFound] No mapping found for HTTP request with URI
  16. word2007删除页眉
  17. oracle删除闪回文件,oracle的闪回查询,闪回删除:
  18. python直接使用大括号生成_Python 解析式、生成器
  19. not a valid identifier
  20. [NOIP2008] 立体图-解题报告

热门文章

  1. 网上订餐系统项目实战
  2. 使用计算机处理问题的步骤,1.1使用计算机解决问题的一般过程 课件.ppt
  3. 云计算与云技术是什么-观点摘抄
  4. jQuery做简单的下拉菜单
  5. 联想电脑安装深度linux,联想笔记本电脑安装Deepin V20使用大黄蜂方案的心得
  6. 电脑回收站删除的文件如何找回呢?
  7. Downie 4 4.6.13 MAC上最好的一款视频下载工具
  8. 第三次作业辅导视频:微分方程求解(1)
  9. --del--() 方法
  10. c语言做游戏,告别黑窗口