You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Amazon S3作为Hibernate Search 4.5.3的Infinispan缓存存储

替换Infinispan缓存存储为Amazon S3的配置方案

我来帮你把当前基于文件系统的Infinispan存储替换成Amazon S3,步骤如下:

1. 确保引入S3存储依赖

首先需要在你的项目中添加Infinispan的S3持久化模块依赖(以Maven为例,版本请严格匹配你使用的Infinispan 6.0):

<dependency>
    <groupId>org.infinispan</groupId>
    <artifactId>infinispan-persistence-s3</artifactId>
    <version>6.0.2.Final</version> <!-- 与你的Infinispan版本保持一致 -->
</dependency>

2. 修改infinispan.xml配置文件

把原来的<singleFile>存储节点替换为<s3Store>,并配置AWS相关参数。以下是修改后的完整配置:

<infinispan xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
            xsi:schemaLocation="urn:infinispan:config:6.0 http://www.infinispan.org/schemas/infinispan-config-6.0.xsd" 
            xmlns="urn:infinispan:config:6.0">
    <global>
        <globalJmxStatistics enabled="false" />
        <!-- <transport clusterName="storage-test-cluster" /> -->
        <shutdown hookBehavior="DONT_REGISTER" />
    </global>
    <default>
        <storeAsBinary enabled="false" />
        <locking isolationLevel="READ_COMMITTED" lockAcquisitionTimeout="20000" writeSkewCheck="false" concurrencyLevel="5000" useLockStriping="false" />
        <invocationBatching enabled="false" />
    </default>
    <namedCache name="LuceneIndexesMetadata">
        <persistence passivation="false">
            <s3Store 
                fetchPersistentState="true" 
                preload="true" 
                purgeOnStartup="false" 
                shared="true" 
                ignoreModifications="false"
                accessKey="你的AWS访问密钥ID"
                secretKey="你的AWS私有访问密钥"
                bucketName="你的S3桶名称"
                path="lucene-indexes/metadata" <!-- 桶内存储元数据的自定义路径 -->
                />
        </persistence>
    </namedCache>
    <namedCache name="LuceneIndexesData">
        <persistence passivation="false">
            <s3Store 
                fetchPersistentState="true" 
                preload="true" 
                purgeOnStartup="false" 
                shared="true" 
                ignoreModifications="false"
                accessKey="你的AWS访问密钥ID"
                secretKey="你的AWS私有访问密钥"
                bucketName="你的S3桶名称"
                path="lucene-indexes/data" <!-- 桶内存储索引数据的自定义路径 -->
                />
        </persistence>
    </namedCache>
    <namedCache name="LuceneIndexesLocking">
        <!-- No CacheLoader configured here -->
    </namedCache>
</infinispan>

3. 关键配置说明

  • accessKey/secretKey:你的AWS账号访问凭证,生产环境建议不要硬编码,优先通过环境变量或AWS IAM角色(部署在EC2/EKS等AWS服务上时)获取,避免密钥泄露。
  • bucketName:你在AWS S3上创建的桶名称,需确保该桶已存在,且你的凭证拥有该桶的读写权限(至少需要s3:PutObject、s3:GetObject、s3:ListBucket权限)。
  • path:S3桶内的子路径,用来区分元数据和索引数据,避免存储混乱。
  • shared="true":由于Lucene索引是集群节点共享的,必须设置为true,确保所有节点能访问同一套索引数据。

额外注意事项

  • 若你使用的Infinispan版本不是6.0,配置参数可能略有差异,请对应调整。
  • 测试前请确认S3桶的区域与你的应用部署区域一致,减少延迟。

内容的提问来源于stack exchange,提问作者gschambial

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:54:20