java操作sentinel_八、Sentinel介绍和使用

1. Sentinel介绍

1.1 什么是Sentinel

Sentinel (分布式系统的流量防卫兵) 是阿里开源的一套用于服务容错的综合性解决方案。它以流量

为切入点, 从流量控制、熔断降级、系统负载保护等多个维度来保护服务的稳定性。

1.2 Sentinel 特征

丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景, 例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。

完备的实时监控:Sentinel 提供了实时的监控功能。通过控制台可以看到接入应用的单台机器秒级数据, 至 500 台以下规模的集群的汇总运行情况。

广泛的开源生态:Sentinel 提供开箱即用的与其它开源框架/库的整合模块, 例如与 SpringCloud、Dubbo、gRPC 的整合。只需要引入相应的依赖并进行简单的配置即可快速地接入Sentinel。

完善的 SPI 扩展点:Sentinel 提供简单易用、完善的 SPI 扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等。

1.3 Sentinel 2大主要组成部分

1 核心库(Java 客户端)

不依赖任何框架/库,能够运行于所有 Java 运行时环境,同时对 Dubbo /Spring Cloud 等框架也有较好的支持。

2 控制台(Dashboard)

基于 Spring Boot 开发,打包后可以直接运行,不需要额外的 Tomcat 等应用容器。

2. Sentinel使用

Sentinel所有知识都可以官网查询:官网地址

2.1 安装Sentinel控制台

下载jar包,解压到文件夹: Sentinel下载地址

启动控制台

```

# 直接使用jar命令启动项目(控制台本身是一个SpringBoot项目)

java -Dserver.port=8850 -Dcsp.sentinel.dashboard.server=localhost:8850 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.7.2.jar

```

防火墙将端口放行,重载规则后浏览器访问 ( 默认用户名密码是 sentinel/sentinel )

firewall-cmd --zone=public --add-port=8850/tcp --permanent

firewall-cmd --reload

浏览器地址:http://192.168.2.89:8850

ce5c70da7aa7

sentinel登陆界面

ce5c70da7aa7

登陆后界面

设置Sentinel自启动(jar包自启动)

在jar包同目录下新建启动脚本

vim sentinel-start.sh

# 加入如下内容:

#!/bin/sh

export JAVA_HOME=/usr/local/jdk1.8.0_251

export PATH=$JAVA_HOME/bin:$PATH

nohup java -Dserver.port=8850 -Dcsp.sentinel.dashboard.server=localhost:8850 -Dproject.name=sentinel-dashboard -jar /usr/local/sentinel/sentinel-dashboard-1.7.2.jar > /usr/local/sentinel/sentinel.log 2>&1 &

echo $! > /var/run/sentinel.pid

新建停止脚本sentinel-stop.sh

vim sentinel-stop.sh

# 加入如下内容:

#!/bin/sh

PID=$(cat /var/run/sentinel.pid)

kill -9 $PID

增加权限

chmod +x sentinel-start.sh

chmod +x sentinel-stop.sh

新建开机启动脚本

vim /lib/systemd/system/sentinal.service

# 加入如下内容:

#!/bin/sh

[Unit]

Description=nacos

After=network.target

[Service]

Type=forking

ExecStart=/usr/local/sentinel/sentinel-start.sh

ExecStop=/usr/local/sentinel/sentinel-stop.sh

PrivateTmp=true

[Install]

WantedBy=multi-user.target

自启命令

systemctl daemon-reload #先进行文件生效配置

systemctl start sentinel # 启动

systemctl stop sentinel # 停止

systemctl enable sentinel # 设置自启

systemctl status sentinel

启动命令时错误:-bash: ./sentinel-start.sh: /bin/sh^M: 坏的解释器: 没有那个文件或目录

错误原因:这个文件在Windows下编辑过,在Windows下每一行结尾是\n\r,而Linux下则是\n,所以才会有 多出来的\r。

修改错误:使用指令sed -i 's/\r$//' xxxxxxx.sh,上面的指令会把 xxxxxxx.sh中的\r 替换成空白!

2.2 微服务集成Sentinel

在pom.xml中加入下面依赖,因容错在上游,所以在消费者中引入

com.alibaba.cloud

spring-cloud-starter-alibaba-sentinel

配置文件中配置Sentinel

spring:

cloud:

sentinel:

transport:

port: 13001 #跟控制台交流的端口,随意指定一个未使用的端口即可,防火墙放行

dashboard: 192.168.2.89:8850 # 指定控制台服务的地址

##非局域网内的地址,有问题,还未解决

// TODO

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java整合Sentinel可以通过以下步骤进行: 1. 首先,需要在项目的pom.xml文件中添加Sentinel的依赖项。可以在Maven中央仓库中找到Sentinel的最新版本,并将其添加到pom.xml文件中。 ```xml <dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-core</artifactId> <version>{sentinel-version}</version> </dependency> ``` 2. 在代码中使用Sentinel进行流量控制和熔断降级等操作。可以使用注解或代码方式来配置Sentinel规则。 例如,使用注解方式配置一个资源的流量控制规则: ```java import com.alibaba.csp.sentinel.annotation.SentinelResource; import com.alibaba.csp.sentinel.slots.block.BlockException; public class MyService { @SentinelResource(value = "myResource", blockHandler = "handleBlock") public void myMethod() { // 被限流时的处理逻辑 System.out.println("Hello, Sentinel!"); } public void handleBlock(BlockException ex) { // 被限流时的处理逻辑 System.out.println("Oops, blocked by Sentinel!"); } } ``` 3. 在项目启动时,需要初始化Sentinel的相关配置。可以通过编写一个Servlet或者使用Spring Boot的自动配置来实现。 例如,在Spring Boot项目中,可以通过创建一个`@Bean`方法来初始化Sentinel: ```java import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.alibaba.csp.sentinel.SphU; import com.alibaba.csp.sentinel.init.InitExecutor; import com.alibaba.csp.sentinel.init.InitFunc; @Configuration public class SentinelConfig { @Bean public InitFunc sentinelInitFunc() { return () -> { // 初始化 Sentinel InitExecutor.doInit(); // 预热一个资源,避免第一次请求时被限流 SphU.loadEntry("myResource"); }; } } ``` 以上是Java整合Sentinel的基本步骤,你可以根据实际需求进行配置和扩展。希望对你有所帮助!如果还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值