Pivotal Knowledge Base

关注

单客户端连接多集群的配置

适用于

GemFire 7 及之后的版本

目的

通过Gemfire,可以实现一个客户端与分处不同集群中的多个Region连接工作。有些配置并未被支持所以一般情况下不应使用。本文的目的在于描述该场景下客户端如何配置。

描述

必须强调指出,Gemfire从未测试过也并不支持在一个连接池中使用属于不同集群的locator的做法。用一个客户端连接两个分布式系统,必须配置两个连接池并且在每个分布式系统中为客户端连接的region使用不同的名字。如果客户端连接的region在不同的分布式系统都使用相同的名字,每次需要在两个系统间切换的时候,都必须先关闭或销毁该Region,然后再重建。而如果region在不同的系统中名称不同,则客户端可以同时使用它们。

解决方案

如下例所示的一个简单client-cache.xml配置,其中region都有全局唯一的命名。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE client-cache PUBLIC "-//GemStone Systems, Inc.//GemFire Declarative Cache 7.0//EN" "http://www.gemstone.com/dtd/cache7_0.dtd">
<client-cache>
<pool name="CLUSTER1">
<locator port="40001" host="C1H1"/>
</pool>
<pool name="CLUSTER2">
<locator port="40001" host="C2H1"/>
</pool>
<region name="Region1C1">
<region-attributes refid="PROXY" pool-name="CLUSTER1"/>
</region>
<region name="Region1C2">
<region-attributes refid="PROXY" pool-name="CLUSTER2"/>
</region>
</client-cache>

利用该配置,可以实现RegionC1和RegionC2同时工作,而无须关心它们分处于不同的分布式系统。

在您需要使用分处于两个集群中名字相同的Region,你只能使用不同的cache.xml文件,或者通过编写代码使用动态设定。重要的是如前文所述,必须牢记不能让这样的两个Region同时工作。

评论

由 Zendesk 提供技术支持