Sentinel
weixin_42073629
这个作者很懒,什么都没留下…
展开
-
@SentinelResource注解使用详解
如何使用@SentinelResource注解灵活的定义控制资源以及如何配置控制策略。自定义资源点第一步:在应用主类中增加注解支持的配置:@SpringBootApplicationpublic class TestApplication { public static void main(String[] args) { SpringApplication.run(TestApplication.class, args); } // 注解支持的.原创 2020-07-03 23:43:27 · 2941 阅读 · 0 评论 -
Sentinel Dashboard中修改规则同步到Apollo
本文以Apollo存储为例,下一篇介绍Nacos的改在示例。问题分析在实际操作之前,我们先通过下图了解一下之前我们所实现的限流规则持久化方案的配置数据流向图:upload successful蓝色箭头代表了限流规则由配置中心发起修改的更新路径 橙色箭头代表了限流规则由Sentinel Dashboard发起修改的更新路径从图中可以很明显的看到,Sentinel Dashboard与业务服务之间本身是可以互通获取最新限流规则的,这在没有整合配置中心来存储限流规则的时候就已经存在这样的机制。原创 2020-07-03 23:38:01 · 278 阅读 · 0 评论 -
Sentinel Dashboard中修改规则同步到Nacos
代码实现下面直接来看看如何实现的具体改造步骤,这里参考了Sentinel Dashboard源码中关于Nacos实现的测试用例。但是由于考虑到与Spring Cloud Alibaba的结合使用,略作修改。第一步:修改pom.xml中的sentinel-datasource-nacos的依赖,将<scope>test</scope>注释掉,这样才能在主程序中使用。<dependency> <groupId>com.alibaba.csp&原创 2020-07-03 23:32:58 · 557 阅读 · 1 评论 -
Sentinel使用Apollo存储规则
使用Apollo存储限流规则Sentinel自身就支持了多种不同的数据源来持久化规则配置,目前包括以下几种方式:文件配置 Nacos配置 ZooKeeper配置 Apollo配置本文我们就来一起动手尝试一下,如何使用Apollo来存储限流规则。准备工作下面我们将同时使用到Apollo和Sentinel Dashboard,所以可以先把Apollo和Sentinel Dashboard启动起来。如果还没入门Sentinel Dashboard可以通过文末的系列目录先学习之前的内容。原创 2020-07-03 23:24:11 · 1363 阅读 · 0 评论 -
Sentinel 实战-集群流控
集群流控我们已经知道如何为应用接入限流了,但是到目前为止,这些还只是在单机应用中生效。也就是说,假如你的应用有多个实例,那么你设置了限流的规则之后,每一台应用的实例都会生效相同的流控规则,如下图所示:local-flow-in-each-server.png假设我们设置了一个流控规则,qps是10,那么就会出现如上图所示的情况,当qps大于10时,实例中的 sentinel 就开始生效了,就会将超过阈值的请求 block 掉。上图好像没什么问题,但是细想一下,我们可以发现还是会有这样的问原创 2020-06-01 00:03:32 · 7085 阅读 · 6 评论 -
Sentinel 实战-规则持久化
规则持久化的5种方式规则丢失无论是通过硬编码的方式来更新规则,还是通过接入 Sentinel Dashboard 后,在页面上操作来更新规则,都无法避免一个问题,那就是服务重启后,规则就丢失了,因为默认情况下规则是保存在内存中的。Dashboard 是通过 transport 模块来获取每个 Sentinel 客户端中的规则的,获取到的规则通过 RuleRepository 接口保存在 Dashboard 的内存中,如果在 Dashboard 页面中更改了某个规则,也会调用 transport原创 2020-06-01 00:02:56 · 709 阅读 · 0 评论 -
Sentinel 实战-限流篇
我们已经知道了 Sentinel 的三大功能:限流降级系统保护。现在让我们来了解下具体的使用方法,以限流来演示具体的步骤。引入依赖首先肯定是要先引入需要的依赖,如下所示:<dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-core</artifactId> <version>x.y.z</version&..原创 2020-05-31 04:42:06 · 1405 阅读 · 0 评论 -
Sentinel 实战-控制台篇
通过 sentinel 的控制台,我们可以对规则进行查询和修改,也可以查看到实时监控,机器列表等信息,所以我们需要对 sentinel 的控制台做个完整的了解。部署控制台首先需要启动控制台, sentinel 的控制台是用 spring boot 写的一个web 应用,我们有几种方式来获取控制台:下载可执行 jar 包从release 页面下载截止目前为止最新版本的控制台 jar 包,如下图所示:下载源码构建除了可以下载预先构建好的可执行 jar 包之外,我们还可以把控制台的..原创 2020-05-31 04:39:24 · 993 阅读 · 1 评论 -
带你了解「sentinel」中的概念实体
sentinel中有很多比较重要的概念,我们要了解一个框架,首先要对框架中重要的概念实体进行分析,本文我将跟大家一起来分析一下sentinel中非常重要的几个概念。Resourceresource是sentinel中最重要的一个概念,sentinel通过资源来保护具体的业务代码或其他后方服务。sentinel把复杂的逻辑给屏蔽掉了,用户只需要为受保护的代码或服务定义一个资源,然后定义规则就可以了,剩下的通通交给sentinel来处理了。并且资源和规则是解耦的,规则甚至可以在运行时动态修改。定义完资源原创 2020-05-31 04:30:48 · 196 阅读 · 0 评论 -
限流降级神器「sentinel」基于滑动时间窗口的实时指标统计分析
上篇文章中,我们了解了sentinel是如何构造资源调用链的,以及每种Slot的具体作用,其中最重要的一个Slot非StatisticSlot莫属,因为他做的事是其他所有的Slot的基础。包括各种限流,熔断的规则,都是基于StatisticSlot统计出来的结果进行规则校验的。本篇文章我将深入研究下sentinel是如何进行qps等指标的统计的,首先要确定的一点是,sentinel是基于滑动时间窗口来实现的。化整为零我们已经知道了Slot是从第一个往后一直传递到最后一个的,且当信息传递到Statis原创 2020-05-31 04:29:04 · 379 阅读 · 0 评论 -
限流降级神器-哨兵(sentinel)的资源调用链原理分析
我们已经知道了sentinel实现限流降级的原理,其核心就是一堆Slot组成的调用链。这里大概的介绍下每种Slot的功能职责:NodeSelectorSlot负责收集资源的路径,并将这些资源的调用路径,以树状结构存储起来,用于根据调用路径来限流降级; ClusterBuilderSlot则用于存储资源的统计信息以及调用者信息,例如该资源的 RT, QPS, thread count 等等,这些信息将用作为多维度限流,降级的依据; StatisticsSlot则用于记录,统计不同维度的 ru...原创 2020-05-31 04:18:57 · 218 阅读 · 0 评论 -
限流降级神器-哨兵(sentinel)原理分析
Sentinel是阿里中间件团队开源的,面向分布式服务架构的轻量级高可用流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助用户保护服务的稳定性。大家可能会问:Sentinel 和之前常用的熔断降级库Netflix Hystrix有什么异同呢?Sentinel官网有一个对比的文章,这里摘抄一个总结的表格,具体的对比可以点此链接查看。对比内容 Sentinel Hystrix 隔离策略 信号量隔离 线程池隔离/信号量隔离 熔断降...原创 2020-05-31 04:12:17 · 2478 阅读 · 0 评论 -
在生产环境中使用 Sentinel 控制台
Sentinel 控制台作为 Sentinel 的一大利器,提供了多个维度的监控和规则配置功能。Sentinel 客户端目前已可用于生产环境,但若希望在生产环境中使用 Sentinel 控制台还需要进行一些改造。本文将介绍如何对 Sentinel 控制台进行改造以便在生产环境中使用。在生产环境中使用 Sentinel 控制台只需要两步改造:改造推送逻辑,支持向规则数据源进行推送 改造监控逻辑,支持监控数据持久化动态规则数据源Sentinel 的动态规则数据源用于从中读取及写入规则。从 0..原创 2020-05-31 04:00:50 · 383 阅读 · 0 评论 -
Sentinel 为 RocketMQ 服务保驾护航
在 Apache RocketMQ 中,当消费者去消费消息的时候,无论是通过 pull 的方式还是 push 的方式,都可能会出现大批量的消息突刺。如果此时要处理所有消息,很可能会导致系统负载过高,影响稳定性。但其实可能后面几秒之内都没有消息投递,若直接把多余的消息丢掉则没有充分利用系统处理消息的能力。我们希望可以把消息突刺均摊到一段时间内,让系统负载保持在消息处理水位之下的同时尽可能地处理更多消息,从而起到“削峰填谷”的效果:上图中红色的部分代表超出消息处理能力的部分。我们可以看到消息突刺往往都是原创 2020-05-31 03:55:21 · 668 阅读 · 0 评论 -
Sentinel 为 Dubbo 服务保驾护航
在复杂的生产环境下可能部署着成千上万的 Dubbo 服务实例,流量持续不断地进入,服务之间进行相互调用。但是分布式系统中可能会因流量激增、系统负载过高、网络延迟等一系列问题,导致某些服务不可用,如果不进行相应的控制可能导致级联故障,影响服务的可用性,因此如何对流量进行合理的控制,成为保障服务稳定性的关键。Sentinel是阿里中间件团队开源的,面向分布式服务架构的轻量级流量控制产品,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助用户保护服务的稳定性。本文将基于 Dubbo,看.原创 2020-05-31 03:46:02 · 338 阅读 · 0 评论 -
开源限流系统 Sentinel 全解析
阿里开源了自研的限流系统 Sentinel,官方对 Sentinel 的介绍中用到了一系列高大上的名词诸如 限流、熔断降级、流量塑形、系统负载保护等,还有漂亮的形容词诸如 轻巧、专业、实时等。作为技术消费者看到这样的广告词之后禁不住要大声感叹 —— NiuB!更要不得的是 Sentinel 的发布会由阿里的高级技术专家 子衿 主讲,她是一位女性开发者,这在男性主导额 IT 产业也算得上难得一见的奇观。Sentinel 入门首先,Sentinel 不算一个特别复杂的系统 ,普通技术开发者也可以.原创 2020-05-31 02:48:46 · 188 阅读 · 0 评论 -
Spring Cloud Alibaba 服务容错 Sentinel 入门
1. 概述本文我们来学习Spring Cloud Alibaba提供的Spring Cloud Alibaba Sentinel组件,对 Spring Cloud 进行整合,实现服务容错相关的功能。FROMhttps://github.com/alibaba/spring-cloud-alibaba/wiki/Sentinel随着微服务的流行,服务和服务之间的稳定性变得越来越重要。 Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。S...原创 2020-05-30 19:45:20 · 5815 阅读 · 1 评论 -
Spring Boot 服务容错 Sentinel 入门
1. 概述在《Sentinel 极简入门》中,我们简单了解了 Sentinel,并搭建了 Sentinel 控制台。如果还没看的胖友,可以先看看该文的「1. 概述」和「2. 控制台」小节。Sentinel 功能比较强大,同时胖友可能对服务容错可能比较陌生,所以我们跟着示例,一个一个来学习噢。2. 流量控制示例代码对应仓库:lab-46-sentinel-demo。在本小节,我们来学习下 Sentinel 的流量控制功能,对应《Sentinel 官方文档 —— 流量控制》文章。F原创 2020-05-30 19:02:27 · 2074 阅读 · 0 评论 -
Sentinel 极简入门
1. 概述Sentinel 的官方文档非常完善,所以本文会大量引用噢。如果胖友对服务保障相关的中间件了解较少,可能本文看起来会看到蛮多新概念。不过问题不大,打怪升级多美好~1.1 介绍Sentinel 是什么?FROMhttps://github.com/alibaba/Sentinel轻量级的流量控制、熔断降级 Java 库。FROM《Sentinel 官方文档 —— 介绍》随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流...原创 2020-05-30 18:16:38 · 352 阅读 · 0 评论