【问题标题】:Write through Ignite to Cassandra using "with" timestamp to eliminate stale writes to Cassandra使用“with”时间戳通过 Ignite 写入 Cassandra,以消除对 Cassandra 的过时写入
【发布时间】:2020-04-01 00:46:05
【问题描述】:
我正在寻找能够通过顶部的 Ignite 层写入 Cassandra 的功能,类似于 Cassandra 支持“带”时间戳功能的方式,从而可以消除过时的更新。
我们之所以要通过 Ignite 写入,是因为我们可能会在写入后立即收到读取调用,并且 API 需要提供最新的服务,而不是等待 Ignite Cache 上的 TTL 或 LRU。
另一方面,我们可以直接写入 Cassandra,然后使条目无效/删除以确保提供最新数据。但是还有更好的方法吗?
【问题讨论】:
标签:
cassandra
ignite
timestamp-with-timezone
lru
write-through
【解决方案1】:
看来您需要的是一个启用了通读和通写的缓存。使用类似于以下的配置创建缓存:
<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 路由所有写入。