码迷,mamicode.com
首页 > 其他好文 > 详细

分布式作业

时间:2015-07-04 13:49:58      阅读:96      评论:0      收藏:0      [点我收藏+]

标签:

简直崩溃

假设有3个节点,其ID分别为1、2、3。开始运行时,每个节点的leaderId都为1

(1)节点1、2、3启动后,都进入looking状态,开始leader选举。令1为始发节点,将其加入nowNodes中,并设置它的isStart为真。则节点1查找全局变量totalNodes,发现除了自己还有2和3节点,则向2,3发送自己的nowNode消息。

(2)节点2收到节点1的消息,首先查看当前状态,发现STATE处于looking状态。查看自己的状态isStart是否为真[初始化均为假],发现否,则不能结束。然后节点2在nowNodes中查找是否已存在自己,不存在,将自己加入nowNodes中。查找全局变量totalNodes,发现3还不在nowNodes中,然后向3发送nowNodes

 

感觉不可能建一个全局变量,得到所有进程的id号,并存入链表中。

如果发送规则,是向除了我,并且没有响应过的节点发,则死掉的节点一直不会回应,有很多冗余的发送【第一次不回应,就该标记为死亡节点,但是万一中途活了呢】,而且重要的是消息不会回到始发节点,算法没法结束。

如果向除了自己的节点发,冗余消息则太多了。

或者,传递的消息中就应该包含始发节点的id,当前的节点,发现没有未响应的活着的节点的时候,就将消息发送给始发节点,传递结束。

但是,我感觉环顺序是没有用的。

问题就是要选择一个leader,让leader广播不是挺好吗?当然广播,leader的性能容易成为瓶颈。按环顺序相当于串行,又有点浪费时间= =

分布式作业

标签:

原文地址:http://www.cnblogs.com/froid/p/4620561.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!