zoukankan      html  css  js  c++  java
  • SpringCloud Alibaba整合Sentinel

    SpringCloud Alibaba整合Sentinel

    Sentinel 控制台

    1. 概述

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

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

    Sentinel 控制台包含如下功能:

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

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

    2.1 获取 Sentinel 控制台
    1. 您可以从 release 页面 下载最新版本的控制台 jar 包。

    2. 您也可以从最新版本的源码自行构建 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: "*"
    
    1. 应用名称为nacos-consumer-feign,如果不指定,在dashboard上就会显示你的包路径,很丑。
    2. spring.cloud.sentinel.transport.port是本地启的端口,与dashboard进行数据交互。官方文档是这样写的:这里的 spring.cloud.sentinel.transport.port 端口配置会在应用对应的机器上启动一个 Http Server,该 Server 会与 Sentinel 控制台做交互。比如 Sentinel 控制台添加了一个限流规则,会把规则数据 push 给这个 Http Server 接收,Http Server 再将规则注册到 Sentinel 中。
    3. spring.cloud.sentinel.transport.dashboard是指明了dashboard的地址,格式为IP:Port

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

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

    image-20201216165648379

    参考链接

  • 相关阅读:
    Go标准库Context
    事务并发处理: DB+ORM+逻辑代码
    日志:slf4j+log4j+maven配置
    Shiro workshop
    JSP Workshop
    sql records
    Java内存模型(JMM)
    Application, JDBC, 数据库连接池, Session, 数据库的关系
    Java位操作全面总结
    Effective Java总结
  • 原文地址:https://www.cnblogs.com/dream-it-possible/p/14144949.html
Copyright © 2011-2022 走看看