Sentinel 基础
官网
1 Github: https://github.com/alibaba/Sentinel
2 快速开始: https://sentinelguard.io/zh-cn/docs/quick-start.html
3 中文: https://github.com/alibaba/Sentinel/wiki/介绍
4 使用手册:
https://spring-cloud-alibaba-group.github.io/github-pages/greenwich/spring-cloud-alibaba.html#_spring_cloud_alibaba_sentinel
Sentinel 概述
随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,
从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
梳理: sentinel 可以完成的功能: 绿色方框列出的部分
一句话: Sentinel: 分布式系统的流量防卫兵, 保护你的微服务
Sentinel 核心功能
流量控制
- 拿旅游景点举个示例,每个旅游景点通常都会有最大的接待量,不可能无限制的放游
客进入,比如长城每天只卖八万张票,超过八万的游客,无法买票进入,因为如果超过
八万人,景点的工作人员可能就忙不过来,过于拥挤的景点也会影响游客的体验和心情,
并且还会有安全隐患;只卖N 张票,这就是一种限流的手段
示意图
熔断降级
- 在调用系统的时候,如果调用链路中的某个资源出现了不稳定,最终会导致请求发生堆积,如下图
解读
熔断降级可以解决这个问题,所谓的熔断降级就是当检测到调用链路中某个资源出现不稳定的表现,例如请求响应时间长或异常比例升高的时候,则对这个资源的调用进行限制,让请求快速失败,避免影响到其它的资源而导致级联故障
系统负载保护
根据系统能够处理的请求,和允许进来的请求,来做平衡,追求的目标是在系统不被拖垮的情况下, 提高系统的吞吐率
消息削峰填谷
某瞬时来了大流量的请求, 而如果此时要处理所有请求,很可能会导致系统负载过高,影响稳定性。但其实可能后面几秒之内都没有消息投递,若直接把多余的消息丢掉则没有充分利用系统处理消息的能力
Sentinel 的Rate Limiter 模式能在某一段时间间隔内以匀速方式处理这样的请求, 充分利用系统的处理能力, 也就是削峰填谷, 保证资源的稳定性
Sentinel 两个组成部分
-
核心库:(Java 客户端)不依赖任何框架/库,能够运行在所有Java 运行时环境, 对Spring Cloud有较好的支持
-
控制台:(Dashboard)基于Spring Boot 开发,打包后可以直接运行, 不需要额外的Tomcat 等应用容器
Sentinel 控制台
需求分析/图解
- 需求: 搭建Sentinel 控制台,用于显示各个微服务的使用情况
- 下载 https://github.com/alibaba/Sentinel/releases/tag/v1.8.0
运行
1 指令: java -jar sentinel-dashboard-1.8.0.jar
- 注意: Sentinel 控制台默认端口是8080
访问
1 浏览器: http://localhost:8080
2 控制台页面
浏览器输入: http://localhost:8080 , 用户/密码都是sentinel
- 登录成功后的页面, 目前是空的,因为sentinel 还没有进行流量监控
注意事项和细节
1、更改Sentinel 控制台的端口
java -jar sentinel-dashboard-1.8.0.jar --server.port=9999