Ignite 的 Custom CacheStore 是否自动进行后写?
Does Custom CacheStore for Ignite automatically do write-behind?
我已经为 Ignite 实现了自定义 CacheStore 以与 Elastic Search 进行通信。现在,如果ElasticSearch服务器宕机一段时间,ES服务器启动后缓存中的数据是否会上传到ElasticSearch?
我认为既然你实现了一个自定义的CacheStore,那么你需要自己处理它。
同时您可以查看 Apache Ignite write-behind mechanism,它将在队列中累积更新并在需要时发送它们。理论上,如果您有足够的内存用于大型队列,那么它可以帮助您在 ElasticSearch 服务器停机期间幸存下来。但请记住,使用后写式 Ignite 不会提供一致性保证。
Does Custom CacheStore for Ignite automatically do write-behind?
没有。默认情况下禁用:https://apacheignite.readme.io/docs/3rd-party-store#section-configuration
setWriteBehindEnabled(boolean) | Sets flag indicating whether write-behind is enabled. | false
Now, if ElasticSearch server is down for some time, will the data in the cache be uploaded to Elastic Search once the ES server is up?
没有。 Ignite 不会再次发送该数据。文档中也有说明:
Performance vs. Consistency
Enabling write-behind caching increases performance by performing
asynchronous updates, but this can lead to a potential drop in consistency as
some updates could be lost due to node failures or crashes.
有一种write-behind模式,一旦条目写入Ignite,就不会将条目写入缓存存储,而是将它们推迟一段时间,然后批量写入累积的条目。当后写队列大小达到 CacheConfiguration#writeBehindFlushSize 时,进一步的操作将被阻止,直到队列被刷新。如果底层数据库在一段时间内不可用,则将重试写入操作,直到成功。
后写文档:https://apacheignite.readme.io/docs/3rd-party-store#section-write-behind-caching
与此模式相反,有一种直写模式,它使所有操作在执行后都进入缓存存储。如果缓存存储无法保存条目,则回滚操作本身。
直写文档:https://apacheignite.readme.io/docs/3rd-party-store#section-read-through-and-write-through
如果您在 CacheConfiguration
中启用 writeBehind
,Ignite 将自动添加 writeBehind 功能 到您的缓存存储。它将使用实现所有延迟和批处理功能的 GridCacheWriteBehindStore
包装您的缓存存储。
所以是,如果您在配置中启用它,Ignite 将自动执行后写。
我已经为 Ignite 实现了自定义 CacheStore 以与 Elastic Search 进行通信。现在,如果ElasticSearch服务器宕机一段时间,ES服务器启动后缓存中的数据是否会上传到ElasticSearch?
我认为既然你实现了一个自定义的CacheStore,那么你需要自己处理它。
同时您可以查看 Apache Ignite write-behind mechanism,它将在队列中累积更新并在需要时发送它们。理论上,如果您有足够的内存用于大型队列,那么它可以帮助您在 ElasticSearch 服务器停机期间幸存下来。但请记住,使用后写式 Ignite 不会提供一致性保证。
Does Custom CacheStore for Ignite automatically do write-behind?
没有。默认情况下禁用:https://apacheignite.readme.io/docs/3rd-party-store#section-configuration
setWriteBehindEnabled(boolean) | Sets flag indicating whether write-behind is enabled. | false
Now, if ElasticSearch server is down for some time, will the data in the cache be uploaded to Elastic Search once the ES server is up?
没有。 Ignite 不会再次发送该数据。文档中也有说明:
Performance vs. Consistency
Enabling write-behind caching increases performance by performing
asynchronous updates, but this can lead to a potential drop in consistency as
some updates could be lost due to node failures or crashes.
有一种write-behind模式,一旦条目写入Ignite,就不会将条目写入缓存存储,而是将它们推迟一段时间,然后批量写入累积的条目。当后写队列大小达到 CacheConfiguration#writeBehindFlushSize 时,进一步的操作将被阻止,直到队列被刷新。如果底层数据库在一段时间内不可用,则将重试写入操作,直到成功。
后写文档:https://apacheignite.readme.io/docs/3rd-party-store#section-write-behind-caching
与此模式相反,有一种直写模式,它使所有操作在执行后都进入缓存存储。如果缓存存储无法保存条目,则回滚操作本身。
直写文档:https://apacheignite.readme.io/docs/3rd-party-store#section-read-through-and-write-through
如果您在 CacheConfiguration
中启用 writeBehind
,Ignite 将自动添加 writeBehind 功能 到您的缓存存储。它将使用实现所有延迟和批处理功能的 GridCacheWriteBehindStore
包装您的缓存存储。
所以是,如果您在配置中启用它,Ignite 将自动执行后写。