00:00
接下来我们就引入sent全方位的保护我们系统。首先们来看如何使用S来参照官方文档,我们先来看官方文档对我们这个如何使用的简介。官方说我们这个center呢,可以分为它的核心库和单sh bird,这个是一个web的可视化界面,我们这个核心库呢不是依赖可视化界面的,但有了可视化界面呢,我们整个调节监控就非常方便了。所以如果我们想要使用S,最低要求我们只需要导入一个核心库就行了。那将来要使用center的步骤呢,我们是分为这三步,第一个叫定义资源,加下来定义规则,三验证规则是否生效,也就是对于森特呢来说,它是来保护我们系统的,所我们系统里边所有想要受保护的东西,我们都可以称为资源,所以我们现在要做的第一件事就是在全系统里边,我们定位哪些资源需要生透的来进行保护,所以第一步我们要定义资源,然后第二个我们现在呢,生长知道这。
01:00
这资源要进行保护了,接下来我们就可以为这些资源定义相关的保护规则,比如每秒请求超过多少了,我们就不让你访问了,CPU负载超过多少了,就给它降级了等等等等。所我们接下来只要有了资源以后,你就来定义规则,那定义好规则以后,我们就可以验证我们定义的这个是否生效了。所以对于森特呢,使用呢,主要核心围绕这三步,那我们就得先想象第一步定义资源,我们如何去来定义们要受保护的资源,首先森呢是这这么来做的,主流框架呢,它是默认适配的,也就是说如果我们是用sol这些操作,我们来发请求的,包括spring mvc spring cloud,我们来做RPC远程调用的,只要是我们这些主流的web框架门呢,所有的请求是默认全部进来适配,所有的请求呢,都是要受保护的资源,这是第一个,第二个我们也可以呢,使用这种方式定义任意我们想要保的资源,比如我这有一段。
02:00
那么这是一段呢,非常复杂的逻辑运算,我们使用sna来定义一下,这是一个资源,我们要想要保护的资源,定义方法呢就是串,然后呢,我们spu ntry,然后写一个资源的名,那如果这个资源呢,被阻止访问等等各种情况,那就在catch里边会处理异常,所以我们可以用任意这一段代码来定义我们任意被保护的资源,这是第一种办法,但还有我们的方法三,通过返回布尔值的方式来定义资源,我们直接呢可以给他指定一个资源名,比如我们现在呢,三五段方法都同用一个资源名,只要这个资源名没有被限流,那就会执行到我们里边的方法,如果被限制访问了,那就会执行限制访问的方法,这个呢,类似于我们占了一个锁一样,这是我们说的返回布尔值的方式定义资源。那我们还有方式四,我们直接使用一个超简单的注解,我们可以标注在任何业务逻辑方法上,我们一标注说这是一个被保护的资源,那接下来森特德呢就会把它保护起来,只要我们森特呢把它降级、限流等各种手段导致资源不可调用了,我们呢还可以回调它下面的这个叫block handler。
03:15
也就是说阻塞了的处理器,如果C呢把这个资源阻塞住了,我们就可以调用这个来返回一个默认保护的值,包括三呢,也支持我们异步方式的这个调用,我们定义一个资源,即使在异步的情况下,我们也可以保护它,所以我们有这么五种方式,那么最常用的呢是方式四,这是第一种,还有我们的方式一,这是默认跟主流框架整合起来就已经好了,然后接下来就是方式二,然后方式124这四种呢是我们用的非常多的特别,方式二呢,你可以任意定义一段想要保护的资源逻辑,那接下来只要我们定义好了资源,我们就可以给他指定超多的规则,所以接下来就会有非常多的规则种类,比如官方文档,这呢也介绍的非常详细,我们现到的支持以下几种规则,第一种是流量控制规则,我控制你的流量不能超过什么,然后还有熔断降级规则,比如我们这个对方不能调用了,哪个窗口期之内我就不再调用它了。
04:15
还有我们的系统保护规则,比如我们现在CPU负载、内存等等超过多少占用率了,我们就可以不调用了,包括我们这个来源访问控制规则,我们设置一个黑名单或者白名单,在白名单之内的人你可以来访问我资源在白名单之外的人就不能访问等等等等,包括还有热点参数,那这些规则呢,我们后来再来进行测试,每一个规则的详细参数设置在这一块都说的非常清楚,我们就来解读上一个,我们后来用到哪个,我们就来参照哪个就行了。比如第一个流量控制规则,那想要控制一个资源的流量,我先定义了一个资源,比如我们就是一个请求叫hello,然后呢,这个资源我想要保护起来,那接下来我们对这个资源就要需要做一些定义,我们就可以这么来定义,首先呢,我们这个定义呢,应该是一个杰森,我们这个杰森只要有这段配置就行,然后首先第一个属性叫资源的名字代表我们现在呢对哪个资源做一个规则的限制,接下第二个count。
05:15
限流的阈值,比如我写一个十,那就是呢,我们这个请求过来只能有一个十个,但十个是一个什么模式,是并发线程数十个呢?还是QPS每秒的请求进来十个,所以我们可以来选,那么这个十代表是什么意思,包括我们有没有限制它是哪个来源的default呢?表示不限制,如果我们这个应用特别多,那么还有这个来源的区分limit APP,那么也可以在这来进行指定,包括我们的这个调用关系的限制策略,我们是直接只限制这个资源呢?就是这一个叫直接,就是直接只限制这个资源,还是限制我们这个资源的整个链路,还是限制跟他关联的这些其他资源,默认呢,就是我们只是根据我们资源本身直接限制他自己就行了,包括我们最终限流的效果,现在呢,你流量达到十个了,我把你限制了,限制了以后呢要咋办?我们有三种模式,直接拒绝,那就是把你。
06:15
直接打回去,说流量超限了,你不能访问了,服务器忙了,还有一个叫排队等待,那就是呢,我把你不打回去,我让你呢在这儿排好队,等这闲了我再把你放过去,所以第二种呢,还是放过去了,第三种叫慢启动,慢启动呢,我们以前也提过,它应对我们这个高峰涌入的这个流量,比如我们现在这个系统呢,只能处理100个请求,我们高峰引入了1000个,那我们现在能处理100个,一下就把这100个全放进来,有可能我们系统刚启动,整个初始化工作还没做完,这100个它处理起来都很难,所以呢,我们可以使用慢启动模式,1000个过来,我先给你放十个,再增加一点,再增加一点,再增加一点流量,缓慢给你增加,最终增加到你的系统负载能力100个,我每秒给你放100个,所以这是我们说的慢启动模式,包括是否集群限流否呢,就是只限制我当前这个单击这个资源,如果是集群,那就是比如我们这个。
07:15
哈,请求这个方法呢,我们部署了五台机器都有,那这五台机器呢,全部合在一起,比如我们限流说了一个十,那就是集群限流是一个十个,五个机器呢,合在一起总共只能处理十个请求流量,所以这是我们说的一个规则定义,其他规则定义也都非常清楚,包括我们这个规则定义,我们可以使用代码,你就是写这一段代码,创建一个流量规则,然后设置一些属性就行了,把这个属设置的规则加载到我们的属性管理器里边,所以呢,我们要使用C的呢,先总结起来就两点,第一点我们先来定义好一个资源,只要我们有我们要保护的资源了,家人们就可以定义各种规则,这一块呢支持超多的规则,我们后来进行测试限制就行了,包括我们所有的这些限制,我们都可以通过一个可视化的控制台,就是sentel dashboard,我们可以来看一下我们整个可视化的控制台呢,咱我们这一块的文档里边有。
08:15
也就是说,如果我们想要看整个流量的监控,包括集群的这些性能,以及定制我们这些规则,我们都可以通过这个控制台来定制,那这个控制台呢,我们只需要来下载相关的这个控制台的依赖炸包,直接一启动就行了,它一样也是一个么boot写到web项目,我们直接Java杠炸一启动就行了。那么就来先提前下一个控制台工程,在这儿有一个下载控制台工程,我们就去它的release页面,但这个控制台呢,要下载一定要根据我们后来引入的center版本是多少,我们才来下载,所以我们就先放到这个页面,那下节课整合center,我们就直接根据引入的版本,我们再来下载一个控制台,整个可视化调整呢,也非常方便,那么就推荐呢,大家在下边的时候把我们这个文档如何使用,那每一个东西呢,大家都仔细的阅读一遍,这块文档呢也写的非常清楚,非常详细,我们照着文档呢,完全能做出效果,包括你看我们定义好资源,定义好规则,我们就可以有整个单是bird的实时监控,那单sh bird呢就参照我刚才打开的这个控制台文档,那每一个你需要参照的地方,它都自动链接到相应的文档,那我们下节课就来做一个整合。
我来说两句