我们目前正在使用ActivePivot 4.3进行水平分发。
我们按历史天数分割数据。即使加载速度很快,我们也不希望让用户访问部分加载的节点。
我们希望在群集加载时有一个节点,并在它准备好时加入它。如果它处于维护状态,我们也可能希望将其保留在群集之外。为了实现这一点,我们需要对节点如何加入/离开集群进行一些控制。
我相信JMX有一些控制权,但是,我们希望以编程方式访问这些控件,理想情况是通过Web服务。
我们如何实现?
答案 0 :(得分:1)
使用ActivePivot 4.3.3,您可以像这样实现:
要防止节点在完全加载之前加入群集,可以将“autoStart”分发属性设置为false。
在schema.xml文件中,添加以下代码
...
<distributionDescription>
<distributedPivotId> xxxx </distributedPivotId>
<clusterId> xxxx </clusterId>
<distributionType> xxxx </distributionType>
<properties>
<entry key="autoStart" value="false" />
</properties>
</distributionDescription>
...
然后,负责通过网络进行通信的信使组件将不会启动。你必须手动完成。
要启动此组件,必须调用其“start()”方法。如果您不想使用JMX工具并以编程方式执行,则必须使用“ActivePivotManager”组件。它提供了获取ActivePivot的几个实例的方法:使用它来获取所需的分布式ActivePivot。
最后,使用分布式ActivePivot中的“getMessenger()”方法获取信使组件,然后启动它。然后,所考虑的节点将加入群集。
假设您有经理,您的代码应如下所示:
ADistributedActivePivot myDistributedPivot = (ADistributedActivePivot) manager.getActivePivots().get("myDistributedPivot"); // Change it to the Id of your distributed pivot
myDistributedPivot.getMessenger().start();
要使节点加入/离开集群,您可以从其信使中自由使用“pause()”和“resume()”方法。