sentinel简介
随着分布式系统变得越来越流行,服务之间的可靠性变得比以往任何时候都更加重要。Sentinel以“流”为切入点,并在流控制, 流量整形,电路中断和系统自适应保护等多个领域工作,以确保微服务的可靠性和弹性。
Sentinel具有以下功能:
丰富的适用场景:Sentinel已在阿里巴巴中广泛使用,并且在过去10年中涵盖了Double-11(11.11)购物节中几乎所有的核心场景,例如“ Second Kill”需要将突发流量限制为满足系统容量,消息峰值削波和谷值填充,为不可靠的下游服务而中断电路,集群流量控制等。
实时监控:Sentinel还提供了实时监控功能。您可以实时查看单个计算机的运行时信息,以及少于500个节点的群集的聚合运行时信息。
广泛的开源生态系统:Sentinel提供与常用框架和库(如Spring Cloud,Dubbo和gRPC)的现成集成。您只需将适配器依赖项添加到服务中即可轻松使用Sentinel。
多种语言支持:Sentinel已为Java,Go和C ++提供了本机支持。
各种SPI扩展:Sentinel提供了易于使用的SPI扩展接口,使您可以快速自定义逻辑,例如,自定义规则管理,调整数据源等。
功能概述:
要集成sentinel的步骤分为两部分,一部分是sentinel控制台安装启动,一部分是客户端集成。
sentinel控制台安装启动
简介:
Sentinel提供了一个简单的独立仪表板,您可以在其上监视应用程序并实时配置规则。它包括以下功能:
- 机器发现
- 单节点或少于500个节点的群集的资源监视
- 规则管理
- 仪表板
如下图所示:
下面来开始安装控制台:
1、下载Sentinel服务端jar
访问:https://github.com/alibaba/Sentinel/releases 下载 sentinel-dashboard-1.8.0.jar.
2、启动Sentinel服务端后台管理
执行命令:java -Dserver.port=8080 -jar sentinel-dashboard-1.8.1.jar 默认8080端口,可以通过port指定其他端口
3、访问 localhost:8080
默认登录用户:sentinel/sentinel
客户端集成
在项目的pom.xml文件中加入依赖:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
<version>2.2.5.RELEASE</version>
</dependency>
在配置文件yml加入如下配置:
server:
port: 2222
spring:
application:
name: agensgraph
cloud:
sentinel:
transport:
dashboard: localhost:8080
eager: true
编写一个接口来测试限流效果:
@Controller
public class SentinelController {
@RequestMapping("/AgensGraphSqlTestController/testSentinel")
@ResponseBody
public String sentinel(){
return "sentinel ....";
}
启动工程后,在localhost:8080 sentinel控制台可看到客户端已经注册上去了:
访问项目路径 http://localhost:2222/AgensGraphSqlTestController/testSentinel触发接口,可以看到已经触发了,我这里点了两次
配置限流规则:
多次连续点击访问:http://localhost:2222/AgensGraphSqlTestController/testSentinel
每秒的前1次返回数据正常,后面如果访问得多了可以看到浏览器返回:
Blocked by Sentinel (flow limiting)
表示已经被限流了,集成成功