Gossip Protocol의 역할과 작동 원리
Cassandra의 Gossip Protocol은 엔드포인트 멤버십(endpoint membership)과 노드 간 네트워크 프로토콜 버전 정보를 전파하는 핵심 메커니즘입니다. 각 노드는 독립적으로 gossip 태스크를 실행하며, 매초마다 자신의 하트비트 상태를 갱신한 후 클러스터 내 임의의 노드와 끝점 상태(endpoint state)를 교환합니다.
버전 관리와 상태 수렴
각 노드의 상태 정보는 (generation, version) 튜플로 버전 관리됩니다. generation은 단조성 타임스탬프이고 version은 약 1초마다 증가하는 논리 시계입니다. 이러한 벡터 클록 방식으로 Cassandra는 gossip 메시지 내 논리 클록만 검사하여 오래된 클러스터 상태 정보를 자동으로 무시할 수 있습니다.
3단계 Gossip 핸드셰이크
매초 각 노드는 무작위 노드와 gossip을 시작합니다. 먼저 GossipDigestSynMessage를 전송하고, 상대 노드는 GossipDigestAckMessage로 응답한 후, 최종적으로 GossipDigestAck2Message를 송수신합니다. 또한 노드는 확률적으로 장애 상태의 노드와도 gossip을 시도하며, seed 노드와의 교환을 통해 수렴 속도를 높입니다.