笔记:适用于 Apache Geode 的 Spring Boot(SBDG) 在 SDG 之上应用附加功能集群配置推送特征。参见here。同样,这仅适用于客户。
Scope.GLOBAL Regions (AFAIR) 仅适用于REPLICATE Regions,首先。也就是说,您不能创建“GLOBAL”PARTITION 区域。有关 Scope 以及其他区域分布配置属性的更多详细信息,请参阅 Apache Geode docs。
假设您的 Spring [Boot] Data for Apache Geode 应用程序是一个对等 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;
}
}
但是,请记住这个 peer Cache Spring 配置的服务器应用程序不会将配置推送到集群中的其他服务器。
如果您使用 SDG Annotation-based configuration(动态且方便地)在您的 Spring peer Cache 应用程序中创建区域,例如:使用 @EnableEntityDefinedRegions 或 @EnableCachingDefinedRegions,那么您将需要另外依赖 1 个或多个RegionConfigurer bean 定义(请参阅docs)以自定义各个区域的配置,因为基于注释的支持不会启用这种性质的细粒度区域配置自定义(例如 Scope REPLICATE 区域)。
这可能类似于以下内容。
给定一个持久实体:
@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);
}
}
}
}
}
注意:或者,如果您需要像这样对区域(bean)配置进行如此细粒度的控制,那么无论如何您应该简单地使用基于 Java 的配置而不是注释。基于注解的配置主要是为了方便而提供的;无论如何,它都不是一种尺寸。
从技术上讲,您还可以使用区域类型特定的 @Region 映射注释 (Javadoc) 中的 1 个来注释持久实体类(例如 Customer),例如 @ReplicateRegion。然后,您可以执行以下操作:
@ReplicatedRegion(name = "Customers", scope = Scope.GLOBAL)
class Customer {
// ...
}
不过,如果用户一般只使用 @Region 映射注释,我还是更喜欢它,如果他们需要对区域进行低级配置(比如在 REPLICATE 区域上设置“Scope”),那么只需使用作为开头示例演示的基于 Java 的配置。
不过,请记住,这些都不会在同一集群内的其他服务器之间共享。 Spring peer Cache 应用程序根本不会将配置元数据推送到其他服务器,而且永远不会。无论如何,这就是使用 Apache Geode 的集群配置服务的意义所在。
注意:可以启用 SDG peer Cache 应用程序(默认禁用) 使用 Apache Geode 的集群配置服务从现有集群继承配置。例如,请参阅 PeerCacheApplication 注释上的 useClusterConfiguration 属性 (Javadoc)。默认情况下,基于 Spring 和配置的服务器禁用此对等/服务器端功能是有充分理由的。
在查看this 和this(并不是说Scope 是你可以在事后“改变”的东西),你是正确的,当使用 Gfsh 时,你不能在簇, :(
一般来说,请记住,任何可以用 Apache Geode 的 API 做的事情,你绝对可以用 Spring (Boot/Data) for Apache Geode 来做,然后再做一些。
这在很大程度上是因为 SDG 是基于 Apache Geode 的 API 构建的,而不是某些工具,比如Gfsh.