2

我正在寻找能够通过顶部的 Ignite 层写入 Cassandra 的功能,类似于 Cassandra 支持“带”时间戳功能的方式,从而可以消除过时的更新。我们想通过 Ignite 写入的原因是因为我们可能会在写入后立即收到读取调用,并且 API 需要提供最新的服务,而不是等待 Ignite Cache 上的 TTL 或 LRU。另一方面,我们可以直接写入 Cassandra,然后使条目无效/删除以确保提供最新数据。但还有更好的方法吗?

4

1 回答 1

2

看来您需要的是一个启用了通读和直写的缓存。使用类似于以下的配置创建缓存:

<bean class="org.apache.ignite.configuration.CacheConfiguration">
    <property name="name" value="cache1"/>
    <property name="readThrough" value="true"/>
    <property name="writeThrough" value="true"/>
    <property name="cacheStoreFactory">
        <bean class="org.apache.ignite.cache.store.cassandra.CassandraCacheStoreFactory">
            <!-- ... -->
        </bean>
    </property>
</bean>

当您写入此缓存时,写入将同步传播到 Cassandra,当您读取它时,Ignite 将从 Cassandra 获取值(如果它还没有)。

注意:如果您直接写信给 Cassandra,Ignite 不会知道这一点,并且会继续提供陈旧的值。使用 read-through 和 write-though 时,最好通过 Ignite 路由所有写入。

于 2021-06-03T13:47:59.430 回答