从Spring data Geode/gemfire,我们可以在集群上创建区域吗?目前它正在创建本地缓存区域,但在ClientCache模式或ServerCache模式下完成的任何配置都不会对集群服务器产生任何影响。
但是使用gfsh命令,如果我们创建一个REPLICATE Region,那么连接就可以正常工作。这是在Gemfire/Geode集群中创建REPLICATE区域的唯一方法吗?
接下来,有许多留档是指具有GLOBAL范围的区域,但在gfsh中,没有办法创建具有GLOBAL范围的区域,我也无法通过Spring数据网格定位任何配置。
我们对此有什么补充信息吗?
问候马来亚
搜索了Geode/Gemfire留档中的任何命令,但没有找到。
尝试适应Spring数据大地/gefire,但即使在那里也没有GLOBAL区域创建的选项。
Spring Data for Apache Geode(SDG)支持使用SDG Cluster Configuration Push功能将Apache Geode区域(和其他Apache Geode对象,例如索引)的配置元数据推送到服务器集群。但是,此功能目前仅将区域“名称”和DataPolicy
类型(Javadoc)从客户端推送到服务器。
此外,“集群配置推送”仅适用于您的Spring[Boot]数据应用程序是Apache GeodeClientCache
时。如果应用程序是对等Cache
,则此功能不适用。
注意:Apache Geode(SBDG)的Spring Boot在SDG的集群配置推送功能之上应用了附加功能。请参阅此处。同样,这仅适用于客户端。
首先,AFAIR,Scope.GLOBAL
区域仅适用于REPLICATE
区域。也就是说,您不能创建“GLOBAL”PARTITION
区域。有关Scope
以及其他区域分布配置属性的更多详细信息,请参阅Apache Geode文档。
假设您的Apache Geode应用程序的Spring[Boot]数据是对等Cache
实例,那么您可以使用“GLOBAL”Scope
配置您的REPLICATE
区域,如下所示:
// Alternatively, you can use @CacheServerApplication
@PeerCacheApplication(name = "MySpringGeodeServer")
class MySpringDataGeodeApplication {
@Bean("MyRegion")
ReplicatedRegionFactoryBean myReplicateRegion(GemFireCache cache) {
ReplicatedRegionFactoryBean region = new ReplicatedRegionFactoryBean();
region.setCache(cache);
region.setScope(Scope.GLOBAL);
return region;
}
}
但是,请记住这个对等Cache
,Spring配置的服务器应用程序不会将配置推送到集群中的其他服务器。
如果您使用基于SDG注释的配置来(动态
这可能看起来像下面这样。
给定一个持久实体:
@Region("Customers")
class Customer {
// ...
}
然后:
@CacheServerApplication(name = "MySpringGeodeServer")
@EnableEntityDefinedRegions(
basePackageClasses = Customer.class,
serverRegionShortcut = RegionShortcut.REPLICATE
)
class MySpringDataGeodeApplication {
@Bean
RegionConfigurer customerRegionConfigurer() {
return new RegionConfigurer() {
@Override
public void configure(String beanName, PeerRegionFactoryBean<?, ?> region) {
if ("Customers".equals(beanName)) {
((ReplicatedRegionFactoryBean) region).setScope(Scope.GLOBAL);
}
}
}
}
}
注意:或者,如果您需要像这样对Region(bean)配置进行细粒度控制,那么无论如何,您应该简单地使用基于Java的配置,而不是注释。基于注释的配置主要是为了方便而提供的;无论如何,它都不是一刀切的。
从技术上讲,您还可以使用1个特定于区域类型的映射注释(Javadoc)来注释您的持久实体类(例如客户
),而不仅仅是通用的@Region
映射注释,例如使用@ReplicateRegion
。这允许您执行以下操作:
@ReplicateRegion(name = "Customers", scope = Scope.GLOBAL)
class Customer {
// ...
}
尽管如此,我通常更喜欢用户简单地使用通用的@Region
映射注释,同样,如果他们需要对区域进行低级配置(例如在REPLICATE
区域上设置“Scope
”),那么只需使用基于Java的配置,如开头的示例所示。
不过,请记住,这些都不会在同一集群内的其他服务器之间共享。Spring对等缓存
应用程序根本不会将配置元数据推送到其他服务器,也永远不会。无论如何,这就是使用Apache Geode集群配置服务的一点。
注意:可以启用SDG对等缓存
应用程序(默认禁用)以使用Apache Geode的集群配置服务从现有集群继承配置。例如,请参阅PeerCacheApplication
注释上的useClusterConfiguration
属性(Javadoc)。SDG默认禁用此对等/服务器端功能有充分的理由。
查看这个和这个(不是说Scope
无论如何都可以在Region上“更改”),你是正确的,当使用Gfsh时,你不能在集群中创建GLOBAL
ScopedREPLICATE
Region,:(
一般来说,请记住,任何可能与Apache Geode的API有关的事情,您都可以使用Spring(Boot/Data)for Apache Geode等等。
这在很大程度上是因为SDG是建立在Apache Geode的API上的,而不是像Gfsh这样的工具。