如何定义本地枢纽GemFire区域的持久性?

时间:2018-08-20 11:35:10

标签: java gemfire spring-data-gemfire

我有本地Region,我想将Region数据持久保存到磁盘。如何使用DataPolicy定义它?

2 个答案:

答案 0 :(得分:0)

我不确定您在这里要问的是什么,问题还不够详细……无论哪种方式,hangup_cause枚举都有DataPolicyPERSISTENT_REPLICATE值您可以在配置区域以使其持久化时使用它。

希望这会有所帮助。

答案 1 :(得分:0)

如果您的地区确实是“本地”,则该地区的数据仅存储在GemFire数据节点(服务器)本地,或者在您的应用程序(如果它是集群的客户端或同级成员)本地存储(两种方式),然后您可以使用正确的Region快捷方式指定数据策略。

例如,如果您的应用程序/安排使用的是gcloud dataflow jobs run [NAME_OF_THE_JOB_WHATEVER_YOU_LIKE] \ --gcs-location=gs://[YOUR_BUCKET_HERE]/templates/PubsubToDatastore.json \ --zone=[ZONE_WHERE_YOU_WANT_TO_RUN] \ --parameters "pubsubReadTopic=[YOUR_PUBSUB_TOPIC_HERE],datastoreWriteProjectId=[YOUR_PROJECTID_HERE]" (即您的应用程序是缓存客户端),那么您仍然可以使用ClientRegionShortcut.LOCAL_PERSISTENT定义仅LOCAL的持久性区域。

如果您的应用程序/安排使用对等端ClientCache(即您的应用程序实际上是作为数据节点/服务器,集群中的对等成员参与),那么您仍然可以定义仅LOCAL的持久性区域使用RegionShortcut.LOCAL_PERSISTENT

通过GemFire API(对等Cache):

Cache

通过GemFire API(Cache peerCache = new CacheFactory(..) .set(..) .create(); RegionFactory localPersistentServerRegion = peerCache.createRegionFactory(RegionShortcut.LOCAL_PERSISTENT); ):

ClientCache

通过使用SDG XML(对等ClientCache clientCache = new ClientCacheFactory(..) .set(..) .create(); ClientRegionFactory localPersistentClientRegion = clientCache.createClientRegionFactory(ClientRegionShortcut.LOCAL_PERSISTENT); ):

Cache

通过使用SDG XML(<gfe:local-region id="ExampleLocalPersistentServerRegion" persistent="true"/> ):

ClientCache

通过使用SDG JavaConfig(对等<gfe:client-region id="ExampleLocalPersistentClientRegion" shortcut="LOCAL_PERSISTENT"/> ):

Cache

通过使用SDG JavaConfig(@Configuration @PeerCacheApplication class GemFireConfiguration { @Bean LocalRegionFactoryBean exampleLocalPersistentServerRegion( GemFireCache peerCache) { LocalRegionFactoryBean exampleRegion = new LocalRegionFactoryBean(); exampleRegion.setCache(peerCache); exampleRegion.setClose(false); exampleRegion.setPersistent(true); return exampleRegion; } ):

ClientCache

在SDG中,还可以使用其他方法使用纯Annotation-based configuration model完成相同操作,但这应该可以帮助您。

干杯! -约翰