soul网关源码解析-数据同步-http同步

本文详细介绍了如何配置Soul Admin和Soul Bootstrap的HTTP同步,包括POM文件的依赖添加、服务启动流程,以及DataRefresh接口的实现。重点讲解了HttpSyncDataService的启动过程和不同数据类型同步类的分工。

http同步

配置

更新soul-admin和soul-bootstrap的yml文件配置如下

soul :
  sync:
        http:
             url : http://localhost:9095
soul :
    sync:
      http:
        enabled: true

pom文件依赖(加入依赖后网关需要重启)

        <dependency>
            <groupId>org.dromara</groupId>
            <artifactId>soul-spring-boot-starter-sync-data-http</artifactId>
            <version>${project.version}</version>
        </dependency>

启动相关的服务

源码

我们都是soul在第一次启动的时候会进行一次全量的数据加载.
HttpSyncDataService 在方中都使用构造器注入的时候调用的
start()方法.

    private void start() {
        // It could be initialized multiple times, so you need to control that.
        if (RUNNING.compareAndSet(false, true)) {
            // fetch all group configs.
            this.fetchGroupConfig(ConfigGroupEnum.values());
            int threadSize = serverList.size();
            this.executor = new ThreadPoolExecutor(threadSize, threadSize, 60L, TimeUnit.SECONDS,
                    new LinkedBlockingQueue<>(),
                    SoulThreadFactory.create("http-long-polling", true));
            // start long polling, each server creates a thread to listen for changes.
            this.serverList.forEach(server -> this.executor.execute(new HttpLongPollingTask(server)));
        } else {
            log.info("soul http long polling was started, executor=[{}]", executor);
        }
    }

注意这里的构造器注入的方式也是官方推荐的方式.

保证依赖不可变(final关键字)
保证依赖不为空(省去了我们对其检查)
保证返回客户端(调用)的代码的时候是完全初始化的状态

我们在看下 soul-sync-data-http 项目中的类和方法.

public interface DataRefresh {

    /**
     * Refresh boolean.
     *
     * @param data the data
     * @return the boolean
     */
    Boolean refresh(JsonObject data);

    /**
     * Cache config data config data.
     *
     * @return the config data
     */
    ConfigData<?> cacheConfigData();
}

然后我们在看下类DataRefreshFactory
这个类的主要作用就是保存

下面就是就是实现这个接口的抽奖类AbstractDataRefresh
然后就是同步不同类型数据的类
MetaDataRefresh 元数据操作
PluginDataRefresh 插件数据操作
SelectorDataRefresh 选择器数据操作
RuleDataRefresh 规则数据操作
AppAuthDataRefresh
然后数据在进行对应的操作

本资源提供2025年中国高铁动车线路及1645座站点空间分布数据,涵盖全国范围内已建成与运营的高速铁路网络及其站点信息,包含可编辑MXD工程文件、标准Shapefile矢量文件以及标准成图TIF文件。数据经过系统整理与标准化处理,空间结构完整、属性信息规范,可直接应用于GIS空间分析、交通地理研究、区域发展分析及科研教学等多种应用场景。从交通地理背景来看,中国已建成全球规模最大、运营里程最长的高速铁路网络之一。高速铁路系统以中国高速铁路为核心,形成以“八纵八横”为骨架的国家级铁路运输网络,连接全国主要城市群和经济区,对区域经济联系、人口流动及产业布局具有重要影响。在数据内容方面,本资源提供全国高铁线路矢量数据及站点分布数据。其中,线路数据以线状矢量形式表达高铁运行路径,站点数据以点状形式表示各类高铁车站位置。Shapefile文件包含基础属性字段,如线路名称、站点名称、所属行政区划等信息,可用于交通网络分析、可达性研究及空间统计分析。同时配套提供MXD工程文件,已完成基础制图配置,用户可在ArcGIS平台中直接进行编辑与专题地图制作。在应用层面,该数据可广泛用于交通网络结构分析、城市群联系研究、区域经济发展分析以及空间可达性评价等领域。结合人口、GDP、土地利用或夜间灯光数据,还可开展交通对区域发展的影响研究。此外,该数据也适用于GIS教学、交通地理课程实践及科研训练。资源同时提供标准成图TIF文件,可直接用于科研论文插图、报告展示及教学演示。整体数据格式规范、兼容性强,可在ArcGIS、QGIS等主流GIS软件平台中直接使用。总体而言,本数据资源具有数据覆盖全面、结构清晰及应用价值高等特点,可为我国高速铁路网络研究及相关科研工作提供重要的数据支撑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值