Sentinel产品功能介绍

发布时间 2023-10-26 18:12:12作者: 大树2

1.Sentinel产品功能介绍

Sentinel是面向分布式服务架构的高可用流量防护组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。

Sentinel 具有以下特性:

丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。
完备的实时监控:Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况。
广泛的开源生态:Sentinel 提供开箱即用的与其它开源框架 / 库的整合模块,例如与 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel。
完善的 SPI 扩展点:Sentinel 提供简单易用、完善的 SPI 扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等。

2.1服务端启动 sentinel-dashboard
下载 sentinel 源码 https://github.com/alibaba/Sentinel
启动 dashboard。 run DashboardApplication 的 main 方法,
登录 dashboard . 默认端口是 8080,默认账号密码是 sentinel、sentinel。这个可以在 application.properties 文件中配置。

刚开始这里是没有数据的。 等后续有限流数据上报这里才会有数据展示

2.2客户端应用接入 sentinel dashboard
引入 jar

com.alibaba.csp
sentinel-core
1.7.2-SNAPSHOT

	<dependency>
		<groupId>com.alibaba.csp</groupId>
		<artifactId>sentinel-transport-simple-http</artifactId>
		<version>1.7.2-SNAPSHOT</version>
	</dependency>

示例代码:
下面的例子是一个简单的 qps 限流策略。

@RequestMapping("sentinel")
public String sentinel() {
initFlowRules();
String resourceName = "testSentinel";
Entry entry = null;
String retVal;
try {
entry = SphU.entry(resourceName, EntryType.IN);
retVal = "passed";
}catch(Exception e) {
retVal = "blocked";
}finally {
if(entry != null) {
entry.exit();
}
}

	return retVal;
	
}

private static void initFlowRules(){
    List<FlowRule> rules = new ArrayList<>();
    FlowRule rule = new FlowRule();
    rule.setResource("testSentinel");// 资源名称
    rule.setGrade(RuleConstant.FLOW_GRADE_QPS); //qps 降级
    rule.setCount(2); // 每秒 2次,超过2次就失败
    rules.add(rule);
    FlowRuleManager.loadRules(rules);
}

属性配置
属性可以通过 jvm 参数注入,也可以通过 classpath:sentinel.properties 配置。但是 project.name 这个当前版本只支持 jvm 参数注入,不支持配置在 sentinel.properties 文件里面。所以建议通过 jvm 注入。

jvm 参数注入:
-Dproject.name=sentinel-demo -Dcsp.sentinel.dashboard.server=127.0.0.1:8080 -Dcsp.sentinel.api.port=8081
sentinel.properties 里面

本地http服务端口

csp.sentinel.api.port=8081

dashboard 访问IP:port

csp.sentinel.dashboard.server=127.0.0.1:8080

客户端向dashboard 发送心跳包的时间间隔,单位毫秒

csp.sentinel.heartbeat.interval.ms=1000

当前版本 1.7 ,只能通过jvm 参数注入,不能配置在这里 -Dproject.name=sentinel-demo

project.name=sentinel-demo

更多参数配置见参考文档。