我们正在运行具有两种节点的WSO2-AM 2.6多租户集群
使用EFS完成黑白信息发布者和网关的共享。
到目前为止,我们一直在启用Hazelcast,但是我们更希望禁用Hazelcast,因为这会给我们带来很多痛苦,并且我们了解在WSO2 2.x中并不一定要启用它。 / p>
我们使用以下设置测试了系统:
<clustering class="org.wso2.carbon.core.clustering.hazelcast.HazelcastClusteringAgent" enable="false">
一切正常,除了我们注意到的一个副作用:将停用或重新激活租户填充到工作节点需要花费很长时间(甚至15分钟)。
使用新创建的API创建全新的组织时,几乎可以在工作线程上立即运行API。但是,如果禁用组织,则该API仍将运行。直到工人报告租户不再活动之前,将需要很长时间。
与重新激活租户相同。直到工作人员停止抱怨组织不活跃并允许运行API为止,这将花费很多时间。
是否需要更改配置设置?还是这种预期的行为?在没有Hazelcast的情况下,谁应该向工人报告组织变更?
答案 0 :(得分:0)
有一个包含租户信息的租户缓存[1]。缓存(和任何缓存)的默认TTL为15分钟。停用租户时,将使用hazelcast清除此分布式缓存。这就是为什么在禁用hazelcast群集时观察到上述原因的原因。
通常,在生产环境中,您不太可能需要非常频繁地激活和停用租户。因此,我认为15分钟的延迟不是一个令人关注的问题。
但是,如果确实如此,则必须保持启用Hazelcast群集。当您说您因Hazelcast而面临许多痛苦时,我相信这是由于这些缓存的分布式性质。作为解决方案,您可以启用本地缓存而不是分布式缓存。在这里,Hazelcast群集仅用于缓存失效调用。那可能对您有用。 (免责声明:我还没有尝试过。)
为此,您需要在ForceLocalCache
中将true
设置为carbon.xml
<Cache>
<!-- Default cache timeout in minutes -->
<DefaultCacheTimeout>15</DefaultCacheTimeout>
<!-- Force all caches to act as local -->
<ForceLocalCache>true</ForceLocalCache>
</Cache>
答案 1 :(得分:0)
老实说,我认为您应该探索更多如何配置Hazelcast。 Hazelcast嵌入在许多非常常用的项目堆栈(JHipster,Atlassian,Apache Camel,SunGard等)中。对于在此处进行所需的操作非常可靠,但是它也是高度可配置的,因此您可能希望根据以下内容进行设置您的需求。如果仅禁用它,则将删除它带来的所有群集可伸缩性。配置只是一个XML文件,您可以在这里找到所有文档:
https://docs.hazelcast.org/docs/3.11.2/manual/html-single/index.html#understanding-configuration
很容易弄清楚,绝对值得您花时间。