文章目录
- 什么是 Sentinel
- Sentinel 具有以下特征:
- Sentinel分为两个部分:
- 安装 Sentinel 控制台
- 下载jar包,解压到文件夹
- 启动控制台
- 访问
- 了解控制台的使用原理
- 微服务集成 Sentinel
- 添加依赖
- 增加配置
- 测试用例编写
- 启动程序
- 实现接口限流
- 总结
欢迎来到阿Q社区
https://bbs.csdn.net/topics/617897123
什么是 Sentinel
Sentinel(分布式系统的流量防卫兵)是阿里开源的一套用于服务容错的综合性解决方案。它以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来保护服务的稳定性。
Sentinel 具有以下特征:
- 丰富的应用场景:Sentinel 承接了阿里巴巴近10年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。
- 完备的实时监控:Sentinel提供了实时的监控功能。通过控制台可以看到接入应用的单台机器秒级数据,甚至500台以下规模的集群的汇总运行情况。
- 广泛的开源生态:Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与SpringCloud、Dubbo、gRPC的整合。只需要引入相应的依赖并进行简单的配置即可快速地接入Sentinel。
- 完善的SPI扩展点:SentineI 提供简单易用、完善的SPI扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等。
Sentinel分为两个部分:
- 核心库(Java 客户端)不依赖任何框架/库,能够运行于所有Java运行时环境,同时对 Dubbo /Spring Cloud 等框架也有较好的支持。
- 控制台(Dashboard)基于 Spring Boot 开发,打包后可以直接运行,不需要额外的 Tomcat 等应用容器。
安装 Sentinel 控制台
Sentinel 提供一个轻量级的控制台,它提供机器发现、单机资源实时监控以及规则管理等功能。
下载jar包,解压到文件夹
https://github.com/alibaba/Sentinel/releases
启动控制台
#直接使用jar命令启动项目(控制台本身是一个Spring Boot项目)
java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.7.jar
访问
通过浏览器访问localhost:8080
进入控制台
默认用户名密码是sentinel/sentinel
,输入之后登录成功
了解控制台的使用原理
SentineI 的控制台其实就是一个 SpringBoot 编写的程序。
我们需要将我们的微服务程序注册到控制台上,即在微服务中指定控制台的地址,并且还要开启一个跟控制台传递数据的端口,控制台也可以通过此端口调用微服务中的监控程序获取微服务的各种信息。
微服务集成 Sentinel
微服务集成 Sentinel 非常简单,只需要加入 Sentinel 的依赖即可
添加依赖
在 pom. xml 中加入下面依赖
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> <version>2.1.0.RELEASE</version>
</dependency>
增加配置
修改 shop-order,在里面加入 sentinel 有关控制台的配置
spring:cloud:sentinel:transport:port: 9999 #跟控制台交流的端口,随意指定一个未使用的端口即可dashboard: localhost:8080 #指定控制台服务的地址
测试用例编写
编写一个 Controller 测试使用
@RestController
@RequestMapping("/order")
@Slf4j
public class OrderController3 {@RequestMapping("/message1")public String message1() {return"message1";}@RequestMapping("/message2")public String message2() {return"message2";}}
启动程序
程序启动之后,访问127.0.0.1:8091/order/message1
,发现在 sentinel 管理页面看到确实有监控 shop-order 微服务
实现接口限流
通过控制台为 message1 添加一个流控规则
通过控制台快速频繁访问,观察效果,发现限流成功。
总结
到这儿,服务容错中间件 Sentinel 我们算是基本入门了。下一篇将为大家带来容错组件 Sentinel 的进阶文章,敬请期待吧!
后续的文章,我们将继续完善我们的微服务系统,集成更多的Alibaba组件。想要了解更多JAVA后端知识,请点击文末名片与我交流吧。留下您的一键三连,让我们在这个寒冷的东西互相温暖吧!