ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 분산 환경에서의 장애감지: Gossip Protocol
    시스템 설계 2022. 8. 28. 17:43

     

    [가상 면접 사례로 배우는 대규모 시스템 설계]를 읽고 작성하는 포스트 입니다. 

    틀린 내용이 있을 수도 있습니다! 

    틀린 내용이 있다면 댓글로 달아주시면 감사하겠습니다!

     

    분산 시스템에서는 보통 두 대이상의 서버가 똑같이 한대의 서버에 장애가 발생한 것을 감지해야

    해당 서버에 장애가 발생했다고 간주한다. 

    모든 노드 사이에 멀티캐스팅 채널을 두어, 노드의 장애를 발생할 수 있지만 이는 노드 수가 늘어나면 비효율적이다.

    이러한 분산 환경에서 장애를 감지할 때는 gossip protocol을 이용하는 것이 효율적이다. 

     

    동작원리

    - 각 노드는 멤버쉽 목록을 유지

    - 멤버쉽 목록은 멤버 ID와 heartbeat counter 쌍의 목록을 나타냄

    - 각 노드는 주기적으로 자신의 heartbeat counter를 증가시킴

    - 각 노드는 주기적으로 무작위로 선정된 노드들에게 자신의 heartbeat counter 목록을 보냄

    - hearbeat counter 목록을 받은 노드는 멤버쉽 목록의 heartbeat counter를 최신 값으로 갱신

    - 어떤 멤버의 heartbeat counter 값이 일정 시간 동안 갱신되지 않았다면, 해당 멤버에 장애가 발생했다고 간주

     

     

    예시

    1. 서버1은 자신의 heartbeat counter를 갱신한다.

    2. 서버1은 서버2가 heartbeat counter가 오랫동안 갱신되지 않았다는 것을 감지한다. 

    3. 서버1은 무작위로 서버를 선택해 자신의 member list를 전송한다.

    4. 서버4는 서버1로부터 받은 member list를 받아 각 member의 heart beat를 갱신한다.

    5. 서버4는 서버2의  heartbeat counter가 오랫동안 갱신되지 않았다는 것을 감지한다. 

    6. 서버2를 제외한 모든 서버들은 서버2의 heartbeat가 일정시간 갱신되지 않은것을 확인하고, 서버2를 장애 노드로 표시한다. 

     

    반응형

    댓글

Designed by Tistory.