我尝试实现多播通信分配一些资源。 我使用的JGroups对于这一点,所以我有可靠组播和FIFO排序。 通过这样做,我想知道,与分布式溶液,这意味着不充当协调器的主节点。
每个节点都能够开始进行分发,所以有可能是两个或多个节点开始在同一时间上的分布。 当一个节点接收到分发消息会回答这个问题。 有一个答案的消息,并从启动消息之间没有差异。 其中只包含了资源名称(例如resourceA),如果该节点是能够处理它的信息。 当member1中开始分布它会发出这样的消息:
Member1, resourceA, OK
Member2拥有该资源没有空间和发送应答消息,如:
Member2, resourceA, NOT_OK
在这种情况下,它是很容易的,因为现在的member1知道,他可以采取resourceA。 当多个节点都能够处理资源的其他属性将决定谁占有资源(例如,具有最高ID的成员)。
我的问题是:如何TA处理它当两个或多个节点同时开始关于同一主题(resourceA)的分配?
是否有人看到了一些问题的话是这样的:member1中和Member2开始在同一时间上的分布。 在这一点上双方期待彼此的响应。 因为事实有在响应消息或在启动的消息没有差异的两所思所想,他们刚刚收到的消息是应答。 这样的member1发送起动消息发送到多播组和Member2发送一个起动消息到mutlicast的基团(从member1中接收到该消息之前)。 现在的member1正在接收起动消息从Member2,认为这是响应。
通过每一个节点发送每个主题只有一个消息(作为首发或响应)保证我会说,没有问题的话,即使有两个以上节点的这种方式。