용도 : 분산 시스템에서 특정 1개 프로세스를 coordinator로 지정하는 알고리즘
원리 : 각 프로세스들에게 고유한 아이디를 부여하고, 가장 큰 아이디를 가진 프로세스가 항상 coordinator 역할을 하도록 한다.

장점 :
 * 여러 개의 분산된 (서버)프로세스 중 coordinator 역할을 할 프로세스를 동적으로 선정 할 수 있다.
 * Coordinator (서버)프로세스 장애시 설정의 변경, 시스템 재시작 필요 없이 다른 프로세스가 해당 역할을 넘겨 받
   을 수 있다.

단점 :
  * 동적인 시스템 확장이 힘들다. 그룹내 모든 프로세스들은 다른 프로세스들의 정보를 미리 알고 있어야 하므로 
    신규 머신 추가를 위해서는 설정 파일을 변경하고 재시

제약 사항 :
 * 각 프로세스들은 고유한 아이디(라던지 순차적으로 구분 할 수 있는 무엇인가)를 가지고 있어야 한다.
 * 모든 프로세스들은 몇 개의 다른 프로세스가 있는지 알아야 한다.
 * 하지만 다른 프로세스가 현재 구동 중인지 아닌지는 알 필요 없다.


구동 방식 :
 a1. 그룹 내의 프로세스 중 하나가 coordinator가 다운 되었다는 것을 인지
   (그림에서는 4번 프로세스가 7번 프로세스가 다운 된 것을 발견 했다)
 a2. coordinator의 다운을 감지한 프로세스는 자기보다 높은 아이디를 가지고 있는 프로세스들에게 ELECTION 메시 
 a3. 아무런 프로세스도 응답을 하지 않으면 그 자신이 coordinator가 된다.

 b-d. ELECTION 메시지를 받은 프로세스들은 sender에게 OK 메시지를 전송하고, sender의 역할을 이어 받는다.
   (그림에서는 b에서 5번과 6번 프로세스가 4번에게 OK 메시지를 전송하고,  c에서 5번 프로세스가 4번 프로세스
    처럼 6번과 7번에게 ELECTION 메시지를 보낸다. 그리고 6번 프로세스역시 이전의 5번 프로세스가 4번 프로세스
    에게 했던것 처럼 5번에게 OK 메시지를 보낸다.)

 e. 가장 마지막 까지 election에 참가한 프로세스는 자신이 coordinator가 됨을 확인하고, 다른 모든 프로세스들에게
   새로운 coordinator의 등장을 알린다.
   만일 이전에 죽었던 프로세스가 다시 살아 나는 경우(7번 프로세스가 재부팅 되는 경우), 해당 프로세스는 위의
   과정을 거쳐 다시 coordinator가 된다.
Posted by kukuta

댓글을 달아 주세요

  1. Favicon of http://sdadsa BlogIcon sadsda 2010.08.12 13:57  댓글주소  수정/삭제  댓글쓰기

    http://maplestory.nexon.com/MapleStory/Page/Gnx.aspx?URL=home/index&DeployAID=8959854&DeployWID=4&DeployCID=5641586