demo说明
midis是一个基于组播的分布式协同处理的框架。在midis分布式环境中,始终存在一个coordinator调度者发送任务数据。coordinator是唯
一的目前版本,同事存在worker来处理基于分布式发送过来的数据mission,当一个coordinator crash down掉后,会选择一个worker转换
角色为coordinator,继续维护原coordinator进行的工作。当一个worker crash down掉后,coordinator 会根据当前context的状况,将发
context状态,选择将送到worker的任务mission进行重传、放弃等操作。 额。。
1.首先解释midis运行过程中,涉及到的几个基本的组件。
基本组件:
mission (任务)
midis框架运行过程中,发送的基本数据单元。
coordinator(调度者)
midis框架中,负责发送mission,以及维护worker,mission运行机制的调度单元。
worker(农民)
midis框架中,负责接受mission,以及处理mission,返回结果的处理单元。
Domain (领域)
midis框架在组件分布式网络时,创建的虚拟区域,可以理解为组,里面注册了分布的Node
Node (节点)
midis分布式框架逻辑上的处理单元,即一个PC处理机。
。。。(还有吧)
2. demo
演示最基本的分布式处理功能,以分布式文件处理为例子。在该demo中,设定一个文件路径.里面放置挺多files
建立midis网络。注册cooridnator,worker等组件。
run.
3. 解释
coordinator 始终维护一个空闲worker的队列,以及一个mission的队列。
当有空闲worker时,以及有mission等待处理。
会trigger一次distribute.
OK,就到这里。
4.来个代码片段
package com.primenetwork.framework.midis.demo.alphabet;
import com.primenetwork.framework.midis.core.Domain;
import com.primenetwork.framework.midis.core.MiDisDomain;
import com.primenetwork.framework.midis.core.Node;
public class EntryPoint {
public static void main(String[] args) {
/**
* build domain
*/
Domain domain = MiDisDomain.buildDomainXML("config/midis.cfg.xml");
/**
* build node.
*/
Node node = domain.buildNode("PC1");
/**
* add coordinator.which will distribute mission into the domain.
*/
node.addCoordinator(new AlphabetCoordinator());
/**
* add worker.to handle mission.
*/
node.addWorker(new AlphabetWorker());
/**
* add reduce handler.
*/
node.addReduceHandler(new MyReduceHandler());
node.start();
}
}