我有一个GemFire集群,它在两台UNIX机器中具有2个定位器和2个服务器。我正在运行一个Spring Boot应用程序,该应用程序以对等方的身份加入GemFire集群,并尝试创建复制区域,并使用Spring Data GemFire加载区域。一旦Spring Boot应用终止,我将无法在群集中看到Region /数据。
我在这里想念东西吗?
GemFire集群未使用<ComboBox Grid.Column="2" x:Name="propvar" HorizontalAlignment="Center" VerticalAlignment="Center" Height="30" Width="100" Margin="5,5,5,5" IsTextSearchEnabled="True" FontSize="11"
ItemsSource="{Binding AllProperties}" SelectionChanged="Var_SelectionChanged"
SelectedItem="{Binding Propselected, NotifyOnValidationError=True, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, ValidatesOnExceptions=True}" />
或Spring XML来引导区域。我的想法是通过一个独立的程序创建Regions,并使其在群集中可用。 SDGF版本为cache.xml
。
gemfire-config.xml
2.0.7
期望是Spring Boot应用终止时,应该在集群中创建Region。
答案 0 :(得分:1)
这里最简单的方法是使用群集配置服务,并通过gfsh创建区域。有关更多信息,请参见下面的链接
https://docs.spring.io/spring-gemfire/docs/current/reference/html/#bootstrap:cache:advanced
请参阅本节 使用基于集群的配置
有关群集配置的更多信息,请参见下面的链接
http://gemfire.docs.pivotal.io/97/geode/configuring/cluster_config/gfsh_persist.html
您的客户端代码可能是连接到gemfire集群的简单gemfire客户端。
答案 1 :(得分:1)
您的期望不正确。这并不是说Spring的限制,而是GemFire工作方式的副作用。
如果您要使用GemFire API或纯cache.xml
配置GemFire对等缓存实例/集群的成员,那么集群也不会“记住”配置。
使用GemFire API,Native Memory RSS VSZ
1 byte 42.0 MiB 9.6 GiB
2 bytes 45.8 MiB 9.6 GiB
4 bytes 46.0 MiB 9.6 GiB
8 bytes 46.1 MiB 9.6 GiB
16 bytes 46.3 MiB 9.6 GiB
32 bytes 46.5 MiB 9.6 GiB
64 bytes 47.0 MiB 9.6 GiB
128 bytes 47.5 MiB 9.6 GiB
256 bytes 47.6 MiB 9.6 GiB
512 bytes 48.9 MiB 9.6 GiB
1 KiB 49.1 MiB 9.6 GiB
2 KiB 49.2 MiB 9.6 GiB
4 KiB 49.3 MiB 9.6 GiB
8 KiB 49.3 MiB 9.6 GiB
16 KiB 49.8 MiB 9.6 GiB
32 KiB 50.1 MiB 9.6 GiB
64 KiB 50.1 MiB 9.6 GiB
128 KiB 50.6 MiB 9.6 GiB
256 KiB 51.4 MiB 9.6 GiB
512 KiB 51.3 MiB 9.6 GiB
1 MiB 51.4 MiB 9.6 GiB
2 MiB 51.4 MiB 9.6 GiB
4 MiB 51.4 MiB 9.6 GiB
8 MiB 51.4 MiB 9.6 GiB
16 MiB 51.3 MiB 9.7 GiB
32 MiB 51.3 MiB 9.7 GiB
64 MiB 51.7 MiB 9.8 GiB
128 MiB 51.7 MiB 9.9 GiB
256 MiB 51.6 MiB 10.1 GiB
512 MiB 51.6 MiB 10.5 GiB
1 GiB 51.7 MiB 11.3 GiB
2 GiB 51.8 MiB 12.8 GiB
4 GiB 51.9 MiB 15.8 GiB
8 GiB 51.9 MiB 21.8 GiB
16 GiB 52.0 MiB 33.8 GiB
32 GiB 52.0 MiB 57.8 GiB
64 GiB 52.1 MiB 105.8 GiB
128 GiB 52.1 MiB 201.8 GiB
256 GiB 52.5 MiB 393.8 GiB
512 GiB 52.6 MiB 777.8 GiB
1 TiB 52.7 MiB 1.5 TiB
2 TiB 52.7 MiB 3.0 TiB
4 TiB 52.8 MiB 6.0 TiB
8 TiB 52.9 MiB 12.0 TiB
16 TiB 53.1 MiB 24.0 TiB
32 TiB 53.2 MiB 48.0 TiB
Exception in thread "main" java.lang.OutOfMemoryError: Cannot allocate 70368744177664 bytes
或Spring配置(Spring XML或JavaConfig)时,该配置对于成员而言是本地的。在使用GemFire的Cluster Configuration Service之前,管理员需要在将构成集群的所有对等成员之间分配配置(例如cache.xml
)。
随后出现了集群配置服务,该服务使用户可以使用 Gfsh 定义其配置。在Spring config中,当配置/引导集群的对等缓存成员时,可以启用使用集群配置来配置该成员,例如:
cache.xml
正如所指出的here(第4点)。
但是,使用 Gfsh 配置每个GemFire对象(<gfe:cache use-cluster-configuration="true" ... />
,Regions
,Indexes
等)可能会非常繁琐,尤其是如果您有很多地区。另外,并非所有开发人员都希望使用Shell工具。一些开发团队希望与应用程序一起对配置进行版本控制,这很有意义。
鉴于您使用的是Spring Boot,您应该看看 Pivotal GemFire的Spring Boot ,here。
启动集群的另一种方法是使用Spring而不是 Gfsh 来配置和引导成员。我有这个here的例子。当然,您可以使用Spring Boot FAT JAR从命令行运行Spring Boot应用程序。
当然,一些管理员/操作员会阻止开发团队以这种方式引导GemFire集群,而是期望开发团队使用数据库提供的工具(例如 Gfsh )。
如果是这种情况,那么最好开发Spring Boot GemFire DiskStores
应用程序,以连接到使用 Gfsh 启动的独立集群。
您仍然可以做很少的配置,例如:
ClientCache
然后让您的Spring Boot客户端应用程序使用SDG的cluster configuration push功能来驱动集群的配置(即区域,索引等)。
有许多不同的选项,因此选择权取决于您。您需要确定最适合您的需求。
希望这会有所帮助。