Apache Ignite自动从PostgreSQL加载缓存及容器内命令行操作方案
解决方案
你完全不需要额外编写Java项目,有两种开箱即用的方式可以实现需求:
方式1:启用自动预热加载(集群启动自动触发)
直接在你的NationCache对应的CacheConfiguration配置块中添加如下配置,即可实现集群启动时自动从PostgreSQL拉取全量数据到缓存:
<!-- 启动时自动加载全量底层数据 --> <property name="preloadPartitionedCache" value="true"/>
如果需要按需过滤加载的数据,可额外追加cacheLoadConfiguration配置指定过滤SQL,不需要修改其他逻辑。
方式2:命令行手动触发(适合容器内执行)
Ignite官方容器自带控制脚本,你可以直接在运行的Ignite容器内执行命令完成加载:
- 首先进入Pod终端:
kubectl exec -it <你的Ignite Pod名称> -- bash
- 调用工具执行缓存加载:
./ignite.sh --config <你的配置文件实际路径.xml> --load-cache NationCache
如果需要自定义过滤条件,可追加参数指定查询规则:
./ignite.sh --config <你的配置文件实际路径.xml> --load-cache NationCache "n_regionkey < 5"
额外优化建议
你的现有配置已经正确配置了CacheJdbcPojoStoreFactory和查询实体,不需要修改其他配置即可直接使用上述两种方式。如果需要定期全量同步数据,可将方式2的命令封装为Kubernetes CronJob定时执行即可。
内容的提问来源于stack exchange,提问作者Christian
相关产品推荐
相关产品推荐

