微服务|微服务005-Sentinel高可用流量管理框架

1. sentinel简介 微服务|微服务005-Sentinel高可用流量管理框架
文章图片

2.Sentinel 功能和设计理念 2.1 流量控制 微服务|微服务005-Sentinel高可用流量管理框架
文章图片

2.2 流量控制设计理念 微服务|微服务005-Sentinel高可用流量管理框架
文章图片



2.3 限流算法 常用的限流算法有那些?1.计数器2.令牌桶-电影票3漏桶-漏斗4滑动窗口
微服务|微服务005-Sentinel高可用流量管理框架
文章图片


3.安装Sentinel服务 Sentinel 提供一个轻量级的控制台, 它提供机器发现、单机资源实时监控以及规则管理等功能,其控制台安装步骤如下:
第一步:打开sentinel下载网址
Releases · alibaba/Sentinel · GitHub微服务|微服务005-Sentinel高可用流量管理框架
文章图片
https://github.com/alibaba/Sentinel/releases第二步:在官网下载jar包。
微服务|微服务005-Sentinel高可用流量管理框架
文章图片

第三步:在该jar包目录下运行该包命令如下:(要求至少jdk8版本)

java -Dserver.port=8180 -Dcsp.sentinel.dashboard.server=localhost:8180 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.2.jar

微服务|微服务005-Sentinel高可用流量管理框架
文章图片

第四步:登录sentinel服务
访问 http://localhost:8180/ 用户名密码都为 sentinel
微服务|微服务005-Sentinel高可用流量管理框架
文章图片

微服务|微服务005-Sentinel高可用流量管理框架
文章图片


4.IDEA启动sentinel 我们每次都要从命令窗口运行会很麻烦,所以这种重复的事情我们交给计算机做,所以我们可以从IDEA中配置sentinel后实现一键启动
第一步:选择edit configurations 配置编辑
微服务|微服务005-Sentinel高可用流量管理框架
文章图片

第二步:选择shell Script 脚本外壳 并输入以下信息
微服务|微服务005-Sentinel高可用流量管理框架
文章图片

第三步:编辑脚本命令,与在命令窗口执行的命令几乎一致,1 删除前面的java英文2 在执行的jar包面前加入该jar包的路径
微服务|微服务005-Sentinel高可用流量管理框架
文章图片

如果跟下面一样说明运行成功
微服务|微服务005-Sentinel高可用流量管理框架
文章图片
5.利用sentinel进行限流 第一步:添加依赖
com.alibaba.cloud spring-cloud-starter-alibaba-sentinel org.springframework.boot spring-boot-starter-actuator

第二步:修改消费方的配置文件-------为了让sentinel找到我们相对应服务
微服务|微服务005-Sentinel高可用流量管理框架
文章图片

第三步:添加测试方法。1创建一个服务类
微服务|微服务005-Sentinel高可用流量管理框架
文章图片

在controller调用该Service
微服务|微服务005-Sentinel高可用流量管理框架
文章图片

第四步:打开服务注册中心Nacos 因为要调用服务
微服务|微服务005-Sentinel高可用流量管理框架
文章图片

刷新几遍发现监控到了微服务|微服务005-Sentinel高可用流量管理框架
文章图片

5.1 直接限流模式 微服务|微服务005-Sentinel高可用流量管理框架
文章图片

微服务|微服务005-Sentinel高可用流量管理框架
文章图片

微服务|微服务005-Sentinel高可用流量管理框架
文章图片

微服务|微服务005-Sentinel高可用流量管理框架
文章图片

当我们一秒钟刷新多次时,发现已经被哨兵阻挡了(流量限制)

5.2 关联限流模式 当我们创建下单的时候,后台还会有很多查询订单的服务来访问服务器。我们第一时间要保障的肯定是我们即将下单的用户,所以当用户下单,我们就会对查询订单的服务进行限流,
以达到用户下单的时候不会因为被挤爆服务器而导致出错的效果。
微服务|微服务005-Sentinel高可用流量管理框架
文章图片

微服务|微服务005-Sentinel高可用流量管理框架
文章图片

微服务|微服务005-Sentinel高可用流量管理框架
文章图片

测试:
微服务|微服务005-Sentinel高可用流量管理框架
文章图片


5.3 链路模式限流 学校机房专用。把学生的网络和教师的网络分为两个链路,当学生链路访问时,会把链路底下所有的服务进行限流。而教师链路不做要求。
微服务|微服务005-Sentinel高可用流量管理框架
文章图片

微服务|微服务005-Sentinel高可用流量管理框架
文章图片

快速刷新
【微服务|微服务005-Sentinel高可用流量管理框架】微服务|微服务005-Sentinel高可用流量管理框架
文章图片

如果我们限流精确到某一个方法时,会被限流成错误代码500
微服务|微服务005-Sentinel高可用流量管理框架
文章图片

微服务|微服务005-Sentinel高可用流量管理框架
文章图片

关闭URL聚合:
微服务|微服务005-Sentinel高可用流量管理框架
文章图片

微服务|微服务005-Sentinel高可用流量管理框架
文章图片

资源都变成了单独的了。不会出现在context下了
6.Sentinel熔断 除了流量控制以外,对调用链路中不稳定的资源进行熔断降级也是保障高可用的重要措施之一。由于调用关系的复杂性,如果调用链路中的某个资源不稳定,最终会导致请求发生堆积。
Sentinel 熔断降级会在调用链路中某个资源出现不稳定状态时(例如调用超时或异常比例升高),对这个资源的调用进行限制,让请求快速失败,避免影响到其它的资源而导致级联错误。当资源被降级后,在接下来的降级时间窗口之内,对该资源的调用都自动熔断(默认行为是抛出 DegradeException)。

6.1 Sentinel熔断 实践
第一步:用代码模拟耗时操作
微服务|微服务005-Sentinel高可用流量管理框架
文章图片



    推荐阅读