风暴俱乐部|Sentinel:分布式系统流量防卫兵

大家好 , 我是阿七 。
在说Sentinel 之前呢 , 我们先聊一聊雪崩效应 。 我们假设有A、B、C、D四个服务 , C/D服务调用B服务 , B调用A服务 , 某一时刻 , A服务因为网络原因或者bug问题 , 导致B在请求A的时候 , 迟迟没有回应 。 一次请求就是一个线程 , 如果在高并发场景下 , 瞬间会积累大量的请求 , 造成大量的线程阻塞(而线程是要消耗内存和CPU) , 那么时间一长 , B服务所在的服务器再也无法创建新的线程 , 于是导致B服务也挂了 。 同样的 , C和D最终也会挂掉 。 这就是雪崩效应 。 服务雪崩效应是一种因“服务提供者的不可用”(原因)导致“服务调用者不可用”(结果) , 并将不可用逐渐放大的现象 。
我们再结合一张图来看一下:
风暴俱乐部|Sentinel:分布式系统流量防卫兵而Sentinel 就是用来防止服务雪崩 。 Sentinel 是一款由阿里开发的面向分布式服务架构的轻量级流量控制产品 , 主要以流量为切入点 , 从流量控制、熔断降级、系统负载保护等多个维度来保护服务的稳定性 。
一、整合Sentinel1、加依赖:
org.springframework.cloudspring-cloud-starter-alibaba-sentinelorg.springframework.bootspring-boot-starter-actuator【风暴俱乐部|Sentinel:分布式系统流量防卫兵】2、加注解: 没有注解3、写配置:
#暴露actuatormanagement:endpoints:web:exposure:include: '*'二、搭建Sentinel控制台1、下载启动控制台Sentinel有一个控制台 , 我们通过这个地址去下载jar包:https://github.com/alibaba/Sentinel/releases 。 我安装的是1.6.2版本 。
风暴俱乐部|Sentinel:分布式系统流量防卫兵下载好之后 , 直接 java -jar sentinel-dashboard-1.6.2.jar , 就可以启动了 , 我们访问http://localhost:8080 , 默认账号密码都是sentinel便可以进入控制台 , 是这个样子滴 , 里面空空如也 。
风暴俱乐部|Sentinel:分布式系统流量防卫兵2、为内容中心整合控制台我们只需加一个配置即可
spring:cloud:sentinel:transport:#指定sentinel控制台的地址dashboard: localhost:80803、测试体验此时 , 我们启动内容中心 , 然后请求几次接口:http://localhost:8889/shares/1我们再去控制台刷新一下看看 , ok , 有东西了 。 我们发现 , sentinel提供了很多的功能 , 流控、降级等等 , 下面就流控和降级作一下讲解 。
风暴俱乐部|Sentinel:分布式系统流量防卫兵三、流控规则我们可以看到 , 流控规则有三种:直接、关联、链路 。
风暴俱乐部|Sentinel:分布式系统流量防卫兵直接:直接限制请求 , 比如当我们设置单机阈值为1 , 然后我们频繁刷新接口 , 看看什么效果 。 哎 , 我们会发现被限流了 。
风暴俱乐部|Sentinel:分布式系统流量防卫兵关联:当关联的资源达到阈值 , 就限流自己 。 比如当test1在1秒内请求超过1次时 , 就会限流shares/1接口 。