SpringCloud Alibaba整合Sentinel

2023-05-06,,

SpringCloud Alibaba整合Sentinel

Sentinel 控制台

1. 概述

Sentinel 提供一个轻量级的开源控制台,它提供机器发现以及健康情况管理、监控(单机和集群),规则管理和推送的功能。另外,鉴权在生产环境中也必不可少。这里,我们将会详细讲述如何通过简单的步骤就可以使用这些功能。

接下来,我们将会逐一介绍如何整合 Sentinel 核心库和 Dashboard,让它发挥最大的作用。同时我们也在阿里云上提供企业级的控制台:AHAS Sentinel 控制台,您只需要几个简单的步骤,就能最直观地看到控制台如何实现这些功能。

Sentinel 控制台包含如下功能:

查看机器列表以及健康情况:收集 Sentinel 客户端发送的心跳包,用于判断机器是否在线。
监控 (单机和集群聚合):通过 Sentinel 客户端暴露的监控 API,定期拉取并且聚合应用监控信息,最终可以实现秒级的实时监控。
规则管理和推送:统一管理推送规则。
鉴权:生产环境中鉴权非常重要。这里每个开发者需要根据自己的实际情况进行定制。

注意:Sentinel 控制台目前仅支持单机部署。

2. 启动控制台[Sentinel服务端]

2.1 获取 Sentinel 控制台

    您可以从 release 页面 下载最新版本的控制台 jar 包。

    您也可以从最新版本的源码自行构建 Sentinel 控制台:

    下载 控制台 工程
    使用以下命令将代码打包成一个 fat jar: mvn clean package

2.2 启动

注意:启动 Sentinel 控制台需要 JDK 版本为 1.8 及以上版本。

使用如下命令启动控制台:

java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar
# 注意上述命令在PowerShell 执行不了,要在cmd中执行

其中 -Dserver.port=8080 用于指定 Sentinel 控制台端口为 8080

从 Sentinel 1.6.0 起,Sentinel 控制台引入基本的登录功能,默认用户名和密码都是 sentinel。可以参考 鉴权模块文档 配置用户名和密码。

注:若您的应用为 Spring Boot 或 Spring Cloud 应用,您可以通过 Spring 配置文件来指定配置,详情请参考 Spring Cloud Alibaba Sentinel 文档。

Sentinel 客户端

FeginService.java

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable; /**
* @Author xiongmin
* @Description //TODO
* @Date 2020/12/5 20:15
* @Version 1.0
**/
@FeignClient(value = "nacos-provider", fallback = FallBackFeginServiceImpl.class)
public interface FeginService { @GetMapping(value = "/echo/{message}")
String echo(@PathVariable String message); @GetMapping(value = "/test/{message}")
String test(@PathVariable String message);
}

FallBackFeginServiceImpl.java

import org.springframework.stereotype.Component;

/**
* @Author xiongmin
* @Description //TODO
* @Date 2020/12/13 19:54
* @Version 1.0
**/
@Component
public class FallBackFeginServiceImpl implements FeginService { @Override
public String echo(String message) {
String result = "FallBack echo() method";
return result;
} @Override
public String test(String message) {
String result = "FallBack test() method";
return result;
}
}

编写一个SpringCloud的消费者用例,配置如下:前提,要先启动Nacos和Sentinel

spring:
application:
name: nacos-consumer-feign
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
sentinel:
transport:
port: 8720
dashboard: localhost:8080 server:
port: 9092 feign:
sentinel:
enabled: true management:
endpoints:
web:
exposure:
include: "*"
    应用名称为nacos-consumer-feign,如果不指定,在dashboard上就会显示你的包路径,很丑。
    spring.cloud.sentinel.transport.port是本地启的端口,与dashboard进行数据交互。官方文档是这样写的:这里的 spring.cloud.sentinel.transport.port 端口配置会在应用对应的机器上启动一个 Http Server,该 Server 会与 Sentinel 控制台做交互。比如 Sentinel 控制台添加了一个限流规则,会把规则数据 push 给这个 Http Server 接收,Http Server 再将规则注册到 Sentinel 中。
    spring.cloud.sentinel.transport.dashboard是指明了dashboard的地址,格式为IP:Port

Sentinel 客户端注册到SentinelDashboard 需要时间,项目启动之后可能要等待一会;如果SentinelDashboard一直没有加载Sentinel 客户端的话,可以将服务提供者暂时关闭,那么请求接口就会在SentinelDashboard有记录。

如果SentinelDashboard检测到Sentinel 客户端的话,那么此时会多一个名为 应用程序名 的服务

参考链接

阿里开源组件之SpringCloud接入sentinel
8.Spring Cloud Alibaba 熔断器仪表盘监控
SpringCloudAlibaba笔记(四):Sentinel——服务容错
Spring Cloud Alibaba配置实例nacos+sentinel+dubbo实行服务注册、配置中心、熔断限流
Sentinel官方网站

SpringCloud Alibaba整合Sentinel的相关教程结束。

《SpringCloud Alibaba整合Sentinel.doc》

下载本文的Word格式文档,以方便收藏与打印。