首页 > 其他分享 >sentinel-SPI初始化时机

sentinel-SPI初始化时机

时间:2024-10-24 11:11:19浏览次数:1  
标签:初始化 System StringUtils setProperty SPI hasText && sentinel properties

时机一引入alibaba-starter-sentinel

如果使用了alibaba-starter-sentinel则不需要手动调用因为com.alibaba.cloud.sentinel.custom.SentinelAutoConfiguration#init在这里面执行了自动调用

@PostConstruct
    private void init() {
        if (StringUtils.isEmpty(System.getProperty(LogBase.LOG_DIR))
                && StringUtils.hasText(properties.getLog().getDir())) {
            System.setProperty(LogBase.LOG_DIR, properties.getLog().getDir());
        }
        if (StringUtils.isEmpty(System.getProperty(LogBase.LOG_NAME_USE_PID))
                && properties.getLog().isSwitchPid()) {
            System.setProperty(LogBase.LOG_NAME_USE_PID,
                    String.valueOf(properties.getLog().isSwitchPid()));
        }
        if (StringUtils.isEmpty(System.getProperty(SentinelConfig.APP_NAME_PROP_KEY))
                && StringUtils.hasText(projectName)) {
            System.setProperty(SentinelConfig.APP_NAME_PROP_KEY, projectName);
        }
        if (StringUtils.isEmpty(System.getProperty(TransportConfig.SERVER_PORT))
                && StringUtils.hasText(properties.getTransport().getPort())) {
            System.setProperty(TransportConfig.SERVER_PORT,
                    properties.getTransport().getPort());
        }
        if (StringUtils.isEmpty(System.getProperty(TransportConfig.CONSOLE_SERVER))
                && StringUtils.hasText(properties.getTransport().getDashboard())) {
            System.setProperty(TransportConfig.CONSOLE_SERVER,
                    properties.getTransport().getDashboard());
        }
        if (StringUtils.isEmpty(System.getProperty(TransportConfig.HEARTBEAT_INTERVAL_MS))
                && StringUtils
                        .hasText(properties.getTransport().getHeartbeatIntervalMs())) {
            System.setProperty(TransportConfig.HEARTBEAT_INTERVAL_MS,
                    properties.getTransport().getHeartbeatIntervalMs());
        }
        if (StringUtils.isEmpty(System.getProperty(TransportConfig.HEARTBEAT_CLIENT_IP))
                && StringUtils.hasText(properties.getTransport().getClientIp())) {
            System.setProperty(TransportConfig.HEARTBEAT_CLIENT_IP,
                    properties.getTransport().getClientIp());
        }
        if (StringUtils.isEmpty(System.getProperty(SentinelConfig.CHARSET))
                && StringUtils.hasText(properties.getMetric().getCharset())) {
            System.setProperty(SentinelConfig.CHARSET,
                    properties.getMetric().getCharset());
        }
        if (StringUtils
                .isEmpty(System.getProperty(SentinelConfig.SINGLE_METRIC_FILE_SIZE))
                && StringUtils.hasText(properties.getMetric().getFileSingleSize())) {
            System.setProperty(SentinelConfig.SINGLE_METRIC_FILE_SIZE,
                    properties.getMetric().getFileSingleSize());
        }
        if (StringUtils
                .isEmpty(System.getProperty(SentinelConfig.TOTAL_METRIC_FILE_COUNT))
                && StringUtils.hasText(properties.getMetric().getFileTotalCount())) {
            System.setProperty(SentinelConfig.TOTAL_METRIC_FILE_COUNT,
                    properties.getMetric().getFileTotalCount());
        }
        if (StringUtils.isEmpty(System.getProperty(SentinelConfig.COLD_FACTOR))
                && StringUtils.hasText(properties.getFlow().getColdFactor())) {
            System.setProperty(SentinelConfig.COLD_FACTOR,
                    properties.getFlow().getColdFactor());
        }
        if (StringUtils.hasText(properties.getBlockPage())) {
            setConfig(BLOCK_PAGE_URL_CONF_KEY, properties.getBlockPage());
        }

        // earlier initialize
        if (properties.isEager()) {
            InitExecutor.doInit();
        }

    }

 

时机二调用SphU.entry时

    // 1.5.0 版本开始可以直接利用 try-with-resources 特性 自动回收调用  entry.exit() 配合注解使用 @SentinelResource("HelloWorld")
                        try (Entry entry = SphU.entry(
                            "HelloWorld",
                            EntryType.IN)) {
                            // 被保护的逻辑
                            System.out.println(Thread.currentThread().getId() + "hello world" + (++i));

                        } catch (BlockException ex) {
                            i++;


                        }

com.alibaba.csp.sentinel.SphU#entry(java.lang.String, com.alibaba.csp.sentinel.EntryType)

 public static Entry entry(String name, EntryType trafficType) throws BlockException {
        return Env.sph.entry(name, trafficType, 1, OBJECTS0);
    }

类加载初始化

public class Env {

    public static final Sph sph = new CtSph();

    static {
        // If init fails, the process will exit.
        InitExecutor.doInit();
    }

}

 

标签:初始化,System,StringUtils,setProperty,SPI,hasText,&&,sentinel,properties
From: https://www.cnblogs.com/LQBlog/p/18499224

相关文章

  • MCU初始化
    1.MCU模块初始化配置MCU模块中配置了一个default时钟Mcu_Init(&Mcu_Config[0])-->(void)Mcu_InitClock_Arch(MCU_API_SERVICE_INIT,&(ConfigPtr->McuClockConfigPtr[ConfigPtr->McuDefaultClockSettingId])在这里会初始化一次时钟配置在Ecum中配置了MCU初始化。会提示配......
  • 磁盘的初始化
    ......
  • ssts-hospital-web-master项目实战记录四:主要配置
    记录时间:2024-10-231.配置浏览器自动打开配置文件:package.json "scripts":{  "dev":"vite--open" } 2.配置src别名(1)安装@types/node输入npm命令npm i@types/node--save-dev(2)配置文件:vite.config.tsimport{defineConfig}from'vi......
  • ssts-hospital-web-master项目实战记录三:项目开发规范
    记录时间:2024-10-23参考书籍《Vue.js3+TypeScript完全指南》17.3 项目开发规范 在企业项目开发中,通常由多人一起协作完成开发任务,每个人编写的代码风格可能不统一。为了避免出现问题,一般会制定一些规范来约束整个项目的编码风格,包括编辑器规范、代码格式规范、编写代码......
  • SPI通讯协议笔记
    SPI的通讯时序当我的NSS从机片选线从高电平被拉至低电平代表选中了这个从机,通讯开始,当从机片选线从低电平升至高电平,代表通讯结束(选中从机状态取消)SCK每一个周期传输MOSI和MISO的一个数据,当SCK下降沿时采样MOSI和MISO的数据......
  • ssts-hospital-web-master项目实战记录二:版本管理-git
    记录时间:2024-10-231.VSCode打开项目(1)文件→打开文件夹,对应的英文为File→OpenFolder(2)打开效果如下 2.VSCode本地项目托管 (1)打开终端:Terminal→NewTerminal(2)生成仓库:git init输入 git命令git init (3)添加到暂存区:git add.输入 git命令git add. (4)提......
  • ssts-hospital-web-master项目实战记录一:创建项目
    记录日期:2024-10-231.找到存放项目的文件夹,打开cmd命令  2.使用官方脚手架Vite创建项目(1)输入npm命令npmcreatevite@latest(2)输入项目名称:ssts-hospital-web-master  (3)选择框架:Vue(4)选择变体(使用的编程语言):TypeScript(5)构建完成,提示我们用三行命令进行接下来的操......
  • docker-compose安装sentinel
    1.获取sentinel.zip,并上传至/data/soft目录下,目录可任意通过网盘分享的文件:sentinel.zip链接:百度网盘请输入提取码提取码:1234--来自百度网盘超级会员v7的分享2.解压sentinel.zip:unzipsentinel.zip注意:如果unzip命令不可用则需要安装unzip:sudoyuminstallunz......
  • MCP4921DAC芯片硬件设计及驱动代码(PIC单片机硬件SPI模式)
    MCP4921DAC芯片硬件设计及驱动代码(PIC单片机硬件SPI模式)MCP4921简介MCP4921是一款由MicrochipTechnology生产的单通道、12位数模转换器(DAC),具有外部电压参考引脚和SPI接口。它具有以下主要特点:12位分辨率:提供高精度的模拟输出。单通道电压输出:适用于需要单一......
  • C语言中的初始化是什么意思
    在C语言中,初始化是指在定义变量时为其赋予初值的过程。通过初始化,可以确保变量在使用之前具有已知的初始值,避免了未初始化变量的不确定行为。初始化可以在变量定义时直接赋值,也可以通过赋予默认值或调用特定的初始化函数来完成。C语言中的初始化在C语言中,初始化是指在定义变......