fourinone 是一个居于包工头、职介所、工人的模式分布式计算框架。
上手demo 学习:
1.首先运行一个中介所服务
import com.fourinone.BeanContext;
public class ParkServerDemo
{
public static void main(String[] args)
{
BeanContext.startPark();
}
}
运行结果:
2.运行工人服务,创建并注册工人
import com.fourinone.MigrantWorker;
import com.fourinone.WareHouse;
public class SimpleWorker extends MigrantWorker
{
public WareHouse doTask(WareHouse inhouse)
{
String word = inhouse.getString("word");
System.out.println(word+" from Contractor.");
return new WareHouse("word", word+" world!");
}
public static void main(String[] args)
{
SimpleWorker mw = new SimpleWorker();
mw.waitWorking("simpleworker");
}
}
结果:
3.创建包工头,并获取工人分配任务
import com.fourinone.Contractor;
import com.fourinone.WareHouse;
import com.fourinone.WorkerLocal;
import java.util.ArrayList;
public class SimpleCtor extends Contractor
{
public WareHouse giveTask(WareHouse inhouse)
{
WorkerLocal[] wks = getWaitingWorkers("simpleworker");
System.out.println("wks.length:"+wks.length);
WareHouse wh = new WareHouse("word", "hello");
WareHouse result = wks[0].doTask(wh);
while(true){
if(result.getStatus()==WareHouse.READY)
{
System.out.println("result:"+result);
break;
}
}
return null;
}
public static void main(String[] args)
{
SimpleCtor a = new SimpleCtor();
a.giveTask(null);
}
}
运行结果:
包工头:
五月 03, 2016 6:15:19 下午
信息: getLeaderPark...................
五月 03, 2016 6:15:20 下午
信息: leader server is(localhost:1888)
wks.length:2
result:{word=hello world!}
工人:
五月 03, 2016 6:11:59 下午
信息: getLeaderPark...................
五月 03, 2016 6:12:00 下午
信息: leader server is(localhost:1888)
hello from Contractor.
五月 04, 2016 9:50:52 上午 [PutHbTask] [heartbeat:]
职介所:
五月 03, 2016 6:11:08 下午
信息: wantBeMaster.............................
五月 03, 2016 6:11:09 下午
信息: get one of other parks for init parkInfo.........
五月 03, 2016 6:11:10 下午
信息: setMaster(localhost:1888):true
五月 03, 2016 6:11:12 下午
信息: startWebapp(localhost:9080)
五月 03, 2016 6:12:00 下午 [Park] [askLeader]
信息: receive askLeader................
五月 03, 2016 6:12:00 下午
信息: setMaster(localhost:1888):true
五月 03, 2016 6:13:07 下午 [Park] [askLeader]
信息: receive askLeader................
五月 03, 2016 6:13:07 下午
信息: setMaster(localhost:1888):true
五月 03, 2016 6:15:20 下午 [Park] [askLeader]
信息: receive askLeader................
五月 03, 2016 6:15:20 下午
信息: setMaster(localhost:1888):true