내 잡다한 노트
Service Registry 본문
서비스 레지스트리 : 클러스터 내에서 '누가 현재 리더인지', '어떤 노드가 어떤 역할을 맡고 있는지' 등을 어디엔가 기록해두고, 참여자들이 필요할 때 참조할 수 있게 하는 기능을 포괄적으로 일컫는다.
예를 들어, Hasicorp의 Consul, etcd, zookeeper 등이 서비스 레지스트리로 자주 사용된다.
zookeeper의 경우를 예로 들면....
- “Active Master”가 결정되면, 해당 Master는 자신의 주소(host:port) 또는 “현재 마스터가 누구인지”에 대한 정보를 ZooKeeper에 기록(등록)합니다.
- 이후 Spark Worker들은 주기적으로 ZooKeeper에서 “현재 Master가 어디에 있는지”를 조회하거나, 이벤트 알림(Watch)을 통해 변경을 감지하여 새로운 Master에게 등록을 갱신합니다.
- 이런 식으로, ZooKeeper가 “현재 Master가 누구다”라는 정보를 중앙 저장소처럼 보관하고, 변경 시 알림을 주는 서비스 레지스트리 역할을 합니다.
“서비스 레지스트리”라는 용어가 다소 추상적으로 들릴 수 있는데, 핵심 아이디어는 다음과 같습니다:
- 분산 환경에서 동적으로 변하는 서비스의 위치(주소, 포트, 리더 노드 등)를 중앙에 저장
- 다른 컴포넌트가 이 정보를 조회해 적절한 대상에 연결
이 개념은 마이크로서비스 환경에서 “Service Discovery” 때도 자주 등장하지만, Spark Master HA에서도 “어떤 노드가 Master 역할을 하고 있는가?” 라는 메타데이터를 중앙에 저장하여 다른 노드들이 참고하는 구조와 유사합니다.
즉,
- “서비스 레지스트리”는 “Spark Master = 10.0.0.5:7077 (Active)” 같은 정보를 담아두는 ‘명부’ 역할을 하고,
- Spark Worker나 드라이버(클라이언트) 등이 그 정보를 이용해 “어느 호스트로 접속해야 하지?”를 알게 되는 것입니다.
'분산시스템' 카테고리의 다른 글
Service Discovery란? (1) | 2025.01.16 |
---|---|
application advertising (0) | 2025.01.15 |
Split Brain이란? (0) | 2025.01.09 |
분산 코디네이터 (1) | 2024.12.14 |
Communication (0) | 2024.12.07 |