【微服务sentinel】 控制台 dashboard 安装部署

本文详细介绍了如何将Spring Boot和Spring Cloud应用接入Sentinel控制台,包括Sentinel Dashboard的安装、客户端配置,以及如何通过配置使应用与控制台进行通信。Sentinel控制台提供方便的流控规则编辑和应用监控,使得规则管理更加直观和持久化。此外,还讨论了客户端初始化的过程,强调了首次调用的重要性。
摘要由CSDN通过智能技术生成


相关文章:
【Sentinel入门】01 最简单的例子 helloworld
【Sentinel入门】02 @SentinelResource语法(blockHandler、fallback)
【微服务sentinel】 控制台 dashboard 安装部署

前言

为什么需要控制台?

没有控制台,我们的程序也能运行,但是仅限于硬编码,或者@SentinelResource语法声明异常降级处理,不太方便定义流控规则(可以硬编码添加),有了控制台,我们可以在控制台编辑规则,然后,会自动同步至应用程序册,这样,流控规则就生效了

例如下面的代码,假设不涉及控制台,下面这个代码也可以运行的,仅限于降级,当访问 http://127.0.0.1:19966/foo?t=-100时,抛出异常,就会被外面声明的fallback = "helloFallback"捕获:

完整示例参见 【Sentinel入门】02 @SentinelResource语法(blockHandler、fallback)

public class TestServiceImpl implements TestService {
    @SentinelResource(value = "hello", fallback = "helloFallback")
    public String hello(long s) {
        if (s < 0) {
            throw new IllegalArgumentException("invalid arg");
        }
        return String.format("Hello at %d", s);
    }

  //降级服务的具体处理
    public String helloFallback(long s, Throwable ex) {
        // Do some log here.
        ex.printStackTrace();
        return "Oops, error occurred at " + s;
    }

但是假如我们想实现流控怎么办?要么手动写代码,创建规则,要么通过控制台编辑规则,自动同步至客户端代码,后者明显更直观方便,也可以自动设置存储至数据库,重启系统也不会丢失数据。

1. 安装(服务器端)

sentinel-dashboard官网下载地址

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

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

访问:http://127.0.0.1:8080/

用户名、密码默认都为:sentinel,也可在启动命令中自行配置:

  • -Dserver.port=8080 用于指定 Sentinel 控制台端口为 8080,也可以不指定,默认的端口是8080,也可以指定其他的端口。

  • -Dcsp.sentinel.dashboard.server=consoleIp:port 指定控制台地址和端口,客户端必须按指定的访问,也可以省略,默认是127.0.0.1:8080

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

2 客户端配置

2.1 springboot项目配置

那么我们自己的应用怎么接入到控制台,使用控制台对应用的流量进行监控呢,诸位客官,请继续往下看。

首先添加maven依赖,客户端需要引入 Transport 模块来与 Sentinel 控制台进行通信:

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

配置filter,把所有访问的 Web URL 自动统计为 Sentinel 的资源(这一步不是必须的,也可以通过@SentinelResource进行定义规则):

@Configuration
public class FilterConfig {
    @Bean
    public FilterRegistrationBean sentinelFilterRegistration() {
        FilterRegistrationBean<Filter> registration = new FilterRegistrationBean<>();
        registration.setFilter(new CommonFilter());
        registration.addUrlPatterns("/*");
        registration.setName("sentinelFilter");
        registration.setOrder(1);

        return registration;
    }
}

在启动命令中加入以下配置:

  • -Dcsp.sentinel.dashboard.server=consoleIp:port 指定控制台地址和端口,即指定服务器位置,用于客户端向服务器端发起注册请求。
  • -Dcsp.sentinel.api.port=xxxx 指定客户端监控 API 的端口,用于和服务器端进行通信,用来发送心跳检测以检测健康状态(默认是8719,避免同一个机器同时部署 服务器端和客户端冲突,因为控制台已经使用了8719,应用端为了防止冲突就使用8720,当然,可以不用配置,会自动寻找可以用的端口,不断尝试递增,8721、8722等,建议不使用显示配置):
  • -Dproject.name=sentinelDemo 防止默认的名称太长了
-Dserver.port=8888 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dcsp.sentinel.api.port=8720 -Dproject.name=sentinelDemo

在这里插入图片描述

如果是springboot项目,也可以在application.properties配置:
csp.sentinel.dashboard.server=127.0.0.1:8080

启动项目,我们可以看到多了一个应用名称sentinelDemo,点击机器列表,查看健康状况:
在这里插入图片描述

2.2 springcloud配置

也可以通过yaml或properties进行配置,如果集成了spring cloud,也可以增加如下配置:

spring:
  application:
    name: xxxx
  cloud:
    sentinel:
      transport:
        # 添加sentinel的控制台地址
        dashboard: 127.0.0.1:8080
        # 指定应用与Sentinel控制台交互的端口,应用本地会起一个该端口占用的HttpServer
        #port: 8719

3. 触发客户端初始化

确保客户端有访问量,Sentinel 会在客户端首次调用的时候进行初始化,开始向控制台发送心跳包。

也就是说你需要访问某个url的时候,才会真正的发起连接

基于示例 【Sentinel入门】02 @SentinelResource语法(blockHandler、fallback),我们得知,如果定义了@SentinelResource,不管是加在url入口,即controller的方法还是service层的方法,都会出现在控制台的簇点链路菜单中,和代码中的@SentinelResource是一对一对应的:

在这里插入图片描述

控制台显示注册为sentinel资源的有:

  • TestServiceImpl#test() service层面
  • TestServiceImpl#hello()
  • Demo1Controller#apiFoo1() Controller层面

DemoController的apiFoo()由于没有@SentinelResource修饰,则不是sentinel资源,对于springboot项目,非springcloud项目,也就是说,普通的url,如果不加@SentinelResource,即Controller内的方法没有被@SentinelResource修饰,则不是sentinel资源。

如果是springcloud项目,则springmvc有特殊包sentinel-spring-webmvc-adapter,会把所有的url都当做资源

参考

Sentinel控制台服务搭建
超详细的Sentinel入门 借鉴端口配置
Sentinel 控制台 官网控制台介绍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值