开发者社区 > 云原生 > 正文

规则datasource 存储

个人觉得默认加参数得形式,自动选择存储方式比较好,而不是要自己添加类来指定数据源地址,都不知道自己写在哪里合适

原提问者GitHub用户wanhuhou

展开
收起
码字王 2023-05-19 19:39:10 113 0
1 条回答
写回答
取消 提交回答
  • 这毫无意义。由于您使用的是数据源扩展,您必须知道您的规则存储在哪里。

    Sentinel提供了一个SPI扩展-InitFunc。您可以实现自己的InitFunc来初始化数据源。例如:

    package com.test.init;

    public class DataSourceInitFunc implements InitFunc {

    @Override
    public void init() throws Exception {
        final String remoteAddress = "localhost";
        final String groupId = "Sentinel:Demo";
        final String dataId = "com.alibaba.csp.sentinel.demo.flow.rule";
    
        DataSource<String, List<FlowRule>> flowRuleDataSource = new NacosDataSource<>(remoteAddress, groupId, dataId,
            source -> JSON.parseObject(source, new TypeReference<List<FlowRule>>() {}));
        FlowRuleManager.register2Property(flowRuleDataSource.getProperty());
    }
    

    }

    然后将类添加到资源目录的META-INF/services目录中的com.alibaba.csp.sentinel.init.InitFunc文件中:

    com.test.init.DataSourceInitFunc

    然后,当您触发资源访问时,Sentinel将扫描所有InitFunc并自动初始化数据源。您不必手动调用它。

    原回答者GitHub用户sczyh30

    2023-05-19 22:09:33
    赞同 展开评论 打赏
问答分类:
问答地址:

阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载