대규모 분포 식 시스템 구조 와 디자인 실전 노트 3

3378 단어 fourinone
천 봉 선생님 의 제3 장 은 분포 식 조율 의 실현 을 말한다. 십장 - 직소 - 노동자 의 모델 에서 분포 식 조율 은 실제 적 으로 직소 와 관련 된 내용 이다. 이 는 지도자 (직소) 가 어떻게 생산 하 는 지, 현재 지도자 가 다운 되면 어떻게 하 는 지, 지도자 가 각 직원 (노동자) 을 어떻게 관리 하 는 지 를 포함한다.등등 일련의 문제.
fourinone 에서 지도 자 를 선택 하 는 것 은 paxos 알고리즘 처럼 선점 을 바탕 으로 하 는 소수 가 다수 에 복종 하 는 전략 을 실시 하 는 것 이 아니 라 양보 하 는 전략 이다. 상당 한 지도자 가 지도자 가 되 겠 다 는 신청 을 하기 전에 다른 사람 에 게 지도자 가 되 고 싶 은 지 물 어보 고 싶 으 면 자신 이 먼저 참 으 며 다른 사람 이 없 으 면 그 가 나 서 는 것 이다.이렇게 하면 충돌 을 피 할 수 있다.
지도자 가 확정 되면 지도자 가 통일 적 으로 명령 을 내 려 각 기 계 를 동기 화 시킨다.
지도 자 는 또 어떻게 각 기 계 를 동기 화 합 니까?fourione 프레임 워 크 는 파 크 를 통 해 정보 관 리 를 설정 하고 파 크 는 정 보 를 만 들 고 수정 하 는 방법 을 제공 하 며 윤 훈 과 감청 두 가지 방식 으로 변화 하 는 대상 을 얻 고 분포 식 시스템 설정 의 일치 성 을 향상 시 킵 니 다.

import com.fourinone.BeanContext;
import com.fourinone.ParkLocal;
import com.fourinone.ObjectBean;

public class GetConfigA
{
	public static void main(String[] args)
	{
        ParkLocal pl=BeanContext.getPark();
		ObjectBean oldob=null;
		while(true)
		{
			ObjectBean newob=pl.getLastest("zhejiang","hangzhou",oldob);
			if(newob!=null)
			{
				System.out.println(newob);
				oldob=newob;
			}
		}
	}
}

import com.fourinone.BeanContext;
import com.fourinone.ParkLocal;
import com.fourinone.LastestListener;
import com.fourinone.LastestEvent;
import com.fourinone.ObjectBean;

public class GetConfigB implements LastestListener
{
	public boolean happenLastest(LastestEvent le)
	{
		ObjectBean ob = (ObjectBean)le.getSource();
		System.out.println(ob);
		return false;
	}
	
	public static void main(String[] args)
	{
		ParkLocal pl = BeanContext.getPark();
		pl.addLastestListener("zhejiang", "hangzhou", null, new GetConfigB());
	}
}

import com.fourinone.*;

public class SetConfig
{
	public static void main(String[] args)
	{
		ParkLocal pl = BeanContext.getPark();
		ObjectBean xihu = pl.create("zhejiang", "hangzhou", "xihu",AuthPolicy.OP_ALL);
		try{Thread.sleep(8000);}catch(Exception e){}
		ObjectBean yuhang = pl.update("zhejiang", "hangzhou","xihu");
		
	
	}
}

이 를 통 해 알 수 있 듯 이 응용 프로그램 은 Park Local 에서 만 변경 하면 다른 기 계 는 이런 변 화 를 감지 하여 전체 분포 식 시스템 을 일치 시 킬 수 있다.
이 동시에 fourinone 은 지연 을 처리 하 는 상황 을 제공 했다.
import com.fourinone.BeanContext;

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);
	}
}

한 명의 지도자 와 여러 명의 예비 지도 자 를 가동 시 키 기만 하면 된다. 지도자 가 지연 되면 예비 지도자 가 정상에 오 를 것 이다.

좋은 웹페이지 즐겨찾기