第一篇:Sentinel基础知识与源码入门

Sentilnel是阿里开源的一个用于限流的组件,也是目前比较流行的,以下为官方文档

Sentinel官方文档,使用相对比较简单

使用方式

使用方式比较简单,目前有5种,官网也给出了比较详细的使用方式

basic-api-resource-rule

有以下几种

方式一:主流框架的默认适配

方式二:抛出异常的方式定义资源

方式三:返回布尔值方式定义资源

方式四:注解方式定义资源

方式五:异步调用支持

这里就一一贴代码了,因为官网已经说到非常详情了,直接到上面参考使用样式即可,其中注解方式是比较常用的一种,只需要标记注解即可完成限流功能

同时Sentinel控制台更方便我们的配置,不过这种方式是基于内存进行实现的,不过也可以通过对应的方式实现nacos等动态配置刷新

dashboard

基本概念

在sentinel主要的概念主要有资源和规则

资源:资源是 Sentinel 的关键概念。它可以是 Java 应用程序中的任何内容,例如,由应用程序提供的服务,或由应用程序调用的其它应用提供的服务,甚至可以是一段代码

规则:围绕资源的实时状态设定的规则,可以包括流量控制规则、熔断降级规则以及系统保护规则。所有规则可以动态实时调整。

sentinel的核心功能就是对流量进行控制,防止服务器在某个时间段内被大流量打崩掉,以下是官网的一个比较形象的图

第一篇:Sentinel基础知识与源码入门_第1张图片

 规则类型

其实sentinel里面要做的就是定义各种规则,然后对这些规则进行校验,只要违反了定义的规则那就会进行拦截,源码逻辑并不复杂,复杂的反而是这些规则的校验逻辑,也就是算法,对于算法本人并不是很熟悉,所以本系列文章更多的只是在讲述逻辑,对于算法尽可能描述,如果是想看算法的读者就不需要在这里看了,本人这方面知识目前还有很大的缺失

官网对于规则的描述也是比较清楚的,可以参考这个

sentinel规则文档

规则分类

流量控制规则:控制流量的,在我们能预知到系统承载的情况下进行的配置

熔断降级规则:也可以理解为容错,当某个服务挂掉以后为了不影响其他调用做的工作

系统保护规则:cpu,线程数,入口总算等限制

来源访问控制规则  :访问来源的控制

热点参数规则: 热点参数的特殊控制

以上只是简单的描述,具体后面再一个个进行说明,也可以参考官方文档的描述

sentinel规则文档

源码位置

Sentinel源码位置在github上,地址为

GitHub - alibaba/Sentinel: A powerful flow control component enabling reliability, resilience and monitoring for microservices. (面向云原生微服务的高可用流控防护组件)

里面主要有几个模块,见下图,其中比较核心的是core和dashboard

第一篇:Sentinel基础知识与源码入门_第2张图片

 

以上为基本的情况,本系列文章主要就是针对sentinel-core模块进行分析的,其他模块并不涉及,有兴趣的可以下载源码自己分析

你可能感兴趣的:(sentinel源码系列,sentinel,分布式)