目录
一、什么是Sentinel
阿里巴巴开源的分布式系统流控工具
以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性
丰富的应用场景:消息削峰填谷、集群流量控制、实时熔断下游不可用应用等
完备的实时监控:Sentinel 同时提供实时的监控功能
提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Dubbo、gRPC 的整合
官网:https://github.com/alibaba/Sentinel/wiki/%E4%BB%8B%E7%BB%8D
Sentinel版本:2.2.1
二、核心概念
资源:是 Sentinel 中的核心概念之一,可以是java程序中任何内容,可以是服务或者方法甚至代码,总结起来就是我们要保护的东西
规则:定义怎样的方式保护资源,主要包括流控规则、熔断降级规则等
三、Sentinel 分为两个部分
核心库(Java 客户端)不依赖任何框架/库,能够运行于所有 Java 运行时环境,同时对 Dubbo、Spring Cloud 等框架也有较好的支持。
控制台(Dashboard)基于 Spring Boot 开发,打包后可以直接运行,不需要额外的 Tomcat 等应用容器。
四、pom.xml引入
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
五、Sentinel控制台搭建
文档:https://github.com/alibaba/Sentinel/wiki/控制台
控制台包含如下功能:
查看机器列表以及健康情况:收集 Sentinel 客户端发送的心跳包,用于判断机器是否在线。
监控 (单机和集群聚合)通过 Sentinel 客户端暴露的监控 API,定期拉取并且聚合应用监控信息,最终可以实现秒级的实时监控。
规则管理和推送:统一管理推送规则。
鉴权:生产环境中鉴权非常重要。这里每个开发者需要根据自己的实际情况进行定制。
注意:Sentinel 控制台目前仅支持单机部署 微服务和sentinel需要部署在同一台机器上才可以访问到监控!!! 用阿里云部署的话,如果微服务在本机windows中,即使配置了clientIp也连接不通。。我还不知道原因,尝试了好些方法,最后。。。部署在windows和微服务一起
学习使用,建议Sentinel直接部署在windows上。研发环境使用,建议同微服务一起部署在同一台服务上。
linux环境部署如下:(windows类似,启动语句也适用)
sentinel-dashboard-1.8.0.jar
cd /usr/local/software/sentinel
chmod 777 sentinel-dashboard-1.8.0.jar
//启动 Sentinel 控制台需要 JDK 版本为 1.8 及以上版本,
//-Dserver.port=8088 用于指定 Sentinel 控制台端口为 8088
//默认用户名和密码都是 sentinel
java -Dserver.port=8088 -Dcsp.sentinel.dashboard.server=localhost:8088 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.0.jar
六、微服务接入Sentinel配置
spring:
cloud:
sentinel:
transport:
dashboard: 127.0.0.1:8088
port: 9999
#dashboard:127.0.0.1 sentinel部署的IP地址 8088 sentinel部署所在的控制台端口
#port: 9999 本地启的端口,可以不改,随机选个不能被占用的,与dashboard进行数据交互,会在
应用对应的机器上启动一个 Http Server,该 Server 会与 Sentinel 控制台做交互, 若被占用,则开始+1
一次扫描
微服务注册上去后,由于Sentinel是懒加载模式,所以需要访问微服务后才会在控制台出现
七、限流配置
快速的刷新请求地址后,微服务控制台将出现以下错误: