从spring数据geode/gemfire,我们可以在集群上创建Regions吗?当前正在创建本地缓存区域,但在ClientCache模式或ServerCache模式下进行的任何配置都不会对集群服务器产生任何影响。
但是如果我们使用gfsh命令创建一个REPLICATE区域,那么连接工作正常。这是在Gemfire/Geode集群中创建REPLICATE区域的唯一方法吗?
接下来,有许多文档引用了具有GLOBAL作用域的区域,但是在gfsh中,同样没有办法创建具有GLOBAL作用域的区域,我也无法通过Spring Data geode找到任何配置。
关于这一点,我们是否有任何补充信息?
顺祝商祺,马来亚
已搜索Geode/Gemfire文档中有关任何命令的信息,但未找到任何命令。
尝试调整Spring数据geode/gemfire,但即使存在,也没有创建全局区域的选项。
1条答案
按热度按时间mrphzbgm1#
DataPolicy
type(Javadoc)从客户端推送到服务器。此外,“* 群集配置推送 *”仅在Spring [ Boot ] Data应用程序是Apache Geode
ClientCache
时适用。如果应用程序是对等Cache
,则此功能不适用。注意:Sping Boot for Apache Geode(SBDG)在SDG的 * 集群配置推送 * 功能之上应用了其他功能。请参阅此处。同样,这仅适用于客户端。
AFAIR,首先,
Scope.GLOBAL
区域仅适用于REPLICATE
区域。也就是说,您不能创建“全局”PARTITION
区域。有关Scope
以及其它区域分配配置属性的详细信息,请参阅Apache Geode docs。假设您的Apache Geode应用程序的Spring [ Boot ] Data是一个对等的
Cache
示例,那么您可以使用“GLOBAL”Scope
配置您的REPLICATE
区域,如下所示:但是,请记住,这个对等的
Cache
,Spring配置的服务器应用程序不会将配置推送到集群中的其他服务器。如果您使用基于SDG注解的配置在Spring对等
Cache
应用程序中(动态且方便地)创建区域,例如:使用@EnableEntityDefinedRegions
或@EnableCachingDefinedRegions
,则您将需要额外依赖一个或多个RegionConfigurer
bean定义(请参阅文档)来自定义各个区域的配置,因为基于注解的支持无法实现这种性质的细粒度区域配置自定义(例如REPLICATE
区域上的Scope
)。这看起来可能如下所示。
给定一个持久性实体:
然后道:
注意:或者,如果您需要像这样对区域(bean)配置进行细粒度控制,那么您应该简单地使用基于Java的配置而不是Annotations。无论如何,它不是一种一刀切的做法。
从技术上讲,您还可以使用一个Region类型特定的Map注解(Javadoc)来注解持久性实体类(例如
Customer
),而不仅仅是通用的@Region
Map注解,例如使用@ReplicateRegion
。尽管如此,我还是更喜欢用户简单地使用通用的
@Region
Map注解,同样,如果他们需要对区域进行低级配置(如在REPLICATE
区域上设置“Scope
“),那么就简单地使用基于Java的配置,如开始的示例所示。不过,请记住,这些配置都不会在同一集群中的其他服务器之间共享。Spring对等
Cache
应用程序根本不会将配置元数据推送到其他服务器,而且永远不会。这是使用Apache Geode的Cluster Configuration Service的一点。注意:可以启用(默认情况下禁用)SDG对等
Cache
应用程序,以使用Apache Geode的群集配置服务从现有群集继承配置。例如,请参阅PeerCacheApplication
注解上的useClusterConfiguration
属性(Javadoc)。SDG默认情况下禁用此对等/服务器端功能的原因很充分。回顾一下这个和这个(并不是说
Scope
是你可以在事后对一个区域“改变”的东西),你是正确的,当使用 Gfsh 时,你不能在集群中创建一个GLOBAL
作用域REPLICATE
区域,:(一般来说,请记住,任何可以使用Apache Geode的API来完成的事情,您都可以使用 Spring( Boot /Data)for Apache Geode 来完成。
这在很大程度上是因为SDG是基于Apache Geode的API构建的,而不是像 Gfsh 这样的工具。