5、通信信息接收
由localQueue.poll()得出,信息的接收是通过Queue来完成的。
在GraphJobRunner.loadVertices()方法完成了信息的发送(send())、传递、障栅同步(sync())、接收(getCurrentMessage())等操作,而且信息的真正发送是在障栅同步(sync())阶段开始的。信息的发送和接收并不是一一对应的。
每个bsp任务信息传递都是一组输出信息管理器(OutgoingMessageManager)和输入队列组成;输出信息管理器收集发送的信息,序列化它、对它打包(bundle),在障栅同步阶段,bsp任务让信息在bsppeer之间做信息交换,解包并把解包后的信息方法队列中
6、超步计算
经过障栅同步(sync())后,每一次障栅同步也是一个超步的完成和下一个超步的开始在GraphJobRunner.loadVertices()方法中运行完成障栅同步(sync())直到信息的接收(peer.getCurrentMessage())后,运行GraphJobRunner.setup()方法,setup阶段是顶点计算的初始化阶段,代码如下:
7、Graph执行—run()
由“we do supersteps while we still have updates and have not reachedour maximum itreations yet”得知当还有信息更新或者没有达到要求得最大迭代数的时候还要继续执行superstep。