在集群中,有一下有几个问题:1主领导者宕机,备用机器顶上 2领导者知道集群中有哪些服务器(要求服务器启东时候到领导者那注册) 3服务器宕机后,集群中的其他服务器要知道。
基于以上三点:
基于fourinone的集群管理例子如下:
领导者代码
public class ParkMasterSlave { public static void main(String [] args) { String [][] master=new String [][]{{"localhost","1888"},{"localhost","1889"}}; String [][] slave=new String [][]{{"localhost","1889"},{"localhost","1888"}}; String [][] server=null; if(args[0].equals("M")) server=master; else if(args[0].equals("S")) server=slave; BeanContext.startPark(server[0][0],Integer.parseInt(server[0][1]),server); } }
服务器代码
import com.fourinone.*; import java.util.*; public class Server { public static void main(String [] args) { ParkLocal pl=BeanContext.getPark(); //服务器启东时候到领导者那注册 pl.create("group",args[0],args[0],AuthPolicy.OP_ALL,true); List<ObjectBean> olds=null; //轮询方式查看集群中的服务器:服务器宕机后,集群中的其他服务器要知道。 while(true) { List<ObjectBean> news=pl.getLastest("group",olds); if(news!=null) { System.out.println("groups:"+news); olds=news; } } } }