一起来学SpringCloud之整合Sentinel限流框架
大家好,一直以来我都本着用最通俗的话理解核心的知识点,我认为所有的难点都离不开「基础知识」的铺垫。目前正在出一个SpringCloud长期系列教程,从入门到进阶,篇幅会较多~
「大佬可以绕过~」
如果你是一路看过来的,很高兴你能够耐心看完。之前带大家学了Springboot这门框架,熟练掌握了单体应用的开发,如今微服务开发盛行,对我们的技术要求也是越来越高,薪资也是令人兴奋。这个系列将会带大家学习SpringCloud微服务开发,我会带大家一步一步的入门,耐心看完你一定会有收获~
xdm昨天迟到了哈,今天补上,全给大家整完。上期带大家一起认识了OpenFeign以及带大家体验了常用的方法,本期带着上期遗留下来的问题学习sentinel,我们一起来看一下吧~
同样的,我们先了解一下它到底是个啥?为啥要用它,其实sentinel并不是springcloud大家族的一员,这里还是带大家整一下,它还是很强大的
随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel是面向分布式服务架构的流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统自适应保护等多个维度来帮助您保障微服务的稳定性
资源是Sentinel的关键概念。它可以是Java应用程序中的任何内容,例如,由应用程序提供的服务,或由应用程序调用的其它应用提供的服务,甚至可以是一段代码。
只要通过SentinelAPI定义的代码,就是资源,能够被Sentinel保护起来。大部分情况下,可以使用方法签名,URL,甚至服务名称作为资源名来标示资源
围绕资源的实时状态设定的规则,可以包括流量控制规则、熔断降级规则以及系统保护规则。所有规则可以动态实时调整
流量控制在网络传输中是一个常用的概念,它用于调整网络包的发送数据。然而,从系统稳定性角度考虑,在处理请求的速度上,也有非常多的讲究。任意时间到来的请求往往是随机不可控的,而系统的处理能力是有限的。我们需要根据系统的处理能力对流量进行控制。Sentinel作为一个调配器,可以根据需要把随机的请求调整成合适的形状
流量控制有以下几个角度:
Sentinel和Hystrix的原则是一致的:当调用链路中某个资源出现不稳定,例如,表现为timeout,异常比例升高的时候,则对这个资源的调用进行限制,并让请求快速失败,避免影响到其它的资源,最终产生雪崩的效果。
Sentinel同时提供系统维度的自适应保护能力。防止雪崩,是系统防护中重要的一环。当系统负载较高的时候,如果还持续让请求进入,可能会导致系统崩溃,无法响应。在集群环境下,网络负载均衡会把本应这台机器承载的流量转发到其它的机器上去。如果这个时候其它的机器也处在一个边缘状态的时候,这个增加的流量就会导致这台机器也崩溃,最后导致整个集群不可用
有了大概的了解之后,我们发现它很强大,下面我们就整它,同样的为了方便练习,新建一个模块,引入如下依赖:
启动类正常建,无需额外注解,下面新建一个TestController
sentinel是有控制台的,我们在jar包里引入了,就是这个com.alibaba.csp,官方也提供了下载,我们这里直接整进去,启动项目,可以打开控制台瞅一眼,在这之前我们需要加一下配置
这个port要注意一下,它是客户端和控制台通信的端口,如果被占用了,就会从8719往后扫描直到未占用的端口,也就是说客户端会采集一些数据发到控制台去展示,好了之后,启动项目,打开localhost:8080,会发现应用那一栏多了一个,就是我们刚刚启动的项目
我们点击链路,发现里面是空的,因为我们还没建api接口,下面新建几个接口测试一下:
重新运行一下,发现簇点链路多了我们新建的/hello,然后我们就可以通过控制台,对它做一些规则操作,功能很多,什么qps,timeout,流量阀值,排队等等,大家自己可以取尝试操作一下,就不一一演示了
下面给大家讲一个服务回退的用法,类似我们之前讲的hystrix,这里主要有两种
细心的小伙伴会发现,我每次重启项目之后,我之前定义的规则都没了,原因是在控制台创建的时候并没有持久化,都是在内存里的数据,所以重启就没了,下面就整合nacos配置中心,看一下如何通过配置使用,我们需要引入
修改配置:
下面,我们就可以在配置中心新建配置了,修改都是实时生效的,新建一个配置dataIdsentinel,文件类型为json,这里给大家一个示例
本期到这里就结束了,总结一下,本节主要讲了什么是Sentinel,以及带大家整了一下它的控制台和如何持久化配置,主要是控制台规则的使用,这个要靠大家自己去体会了,建议大家自己多去尝试~
在构建微服务的过程中,网关(apigateway)显得尤为重要,几乎主流的微服务都有网关。之前也给大家讲过了,网关可以帮助我们管理接口,因为大部分对外都是提供的rest,我们把网关作为一个闸口,统一对请求验证,鉴权,错误统一处理,限流,转发,埋点,接口文档等等,只要你想到的都可以,下期就带大家认识一下springcloud大家族的一员ZuulGateway。关注我,不迷路,下期不见不散~
主题测试文章,只做测试使用。发布者:最新稳定辅助网,转转请注明出处:https://www.744broad.com/16240.html