마이크로서비스의 서비스 검색 메커니즘은 마이크로서비스 아키텍처에서 통신을 위해 서비스 인스턴스를 동적으로 찾는 방법입니다.
주로 등록 센터에 의존하여 서비스 등록, 쿼리를 구현하고 로드 밸런싱을 지원함으로써 시스템의 확장성과 유연성을 향상시킵니다.
1. 기본 개념
서비스 검색은 분산 시스템에서 사용 가능한 서비스를 자동으로 검색하고 식별하는 프로세스를 말합니다.
마이크로서비스 아키텍처에서는 서비스가 서로 다른 서버에 분산된 여러 개의 소규모 자율 서비스로 분할되므로 서비스 간 효과적인 통신을 보장하려면 서비스 검색 메커니즘이 필요합니다.
2. 주요 단계
서비스 등록:
마이크로서비스 인스턴스가 시작되면 네트워크 위치 정보(IP 주소, 포트 번호 등)와 서비스 ID를 서비스 등록 센터에 등록합니다.
이 등록 프로세스는 일반적으로 자동으로 이루어지며 사람의 개입이 필요하지 않습니다.
등록 센터는 모든 서비스 인스턴스의 등록 정보를 유지 관리하고 서비스 인스턴스의 동적 등록 및 등록 취소를 지원하는 일을 담당합니다.
서비스문의:
마이크로서비스가 다른 마이크로서비스를 호출해야 하는 경우 서비스 레지스트리에 필요한 서비스의 현재 사용 가능한 네트워크 주소를 쿼리합니다.
등록 센터에서는 서비스 인스턴스의 주소 목록을 반환하고, 호출자는 로드 밸런싱 정책에 따라 통신할 서비스 인스턴스를 선택할 수 있습니다.
3. 주요 구성 요소
서비스 레지스트리:
서비스 검색 메커니즘의 핵심 구성 요소이며 모든 서비스 인스턴스의 등록 정보를 관리하고 저장하는 역할을 합니다.
서비스 인스턴스가 작업을 등록 및 취소할 수 있는 API 인터페이스를 제공하고, 서비스 소비자가 서비스 인스턴스의 등록 정보를 쿼리할 수 있도록 지원합니다.
서비스 제공자:
특정 서비스를 제공하는 마이크로서비스 인스턴스입니다.
시작 시 자체 서비스 정보를 서비스 레지스트리에 등록하고 종료 시 자체 서비스 정보 등록을 취소합니다.
서비스 소비자:
다른 서비스를 호출해야 하는 마이크로서비스 인스턴스입니다.
서비스 레지스트리를 쿼리하여 필요한 서비스의 네트워크 주소를 얻고 해당 서비스와의 통신을 설정합니다.
4. 서비스 검색 메커니즘을 구현하는 방법
서비스 검색 메커니즘은 구현 방법에 따라 클라이언트 검색과 서버 검색의 두 가지 유형으로 나눌 수 있습니다.
클라이언트 검색 모드:
클라이언트는 등록 센터에 쿼리하고, 사용 가능한 서비스 목록을 얻고, 로드 밸런싱 정책에 따라 서비스 인스턴스와 직접 상호 작용하는 일을 담당합니다.
장점은 클라이언트가 로드 밸런싱 전략을 유연하게 수립하여 서비스 등록 센터에 대한 의존도를 줄일 수 있다는 것입니다.
단점은 클라이언트가 복잡한 검색 논리를 구현해야 하므로 코드 복잡성과 유지 관리 비용이 증가한다는 것입니다.
서버 검색 모드:
클라이언트는 서버(일반적으로 API 게이트웨이 또는 서비스 프록시)에 요청을 보내고, 서버는 등록 센터에 쿼리하고 요청을 실제 서비스 인스턴스로 전달하는 역할을 합니다.
장점은 클라이언트 구현을 단순화하고 코드 복잡성과 유지 관리 비용을 줄이는 것입니다.
단점은 모든 요청이 서버를 통해 전달되어야 하기 때문에 시스템 대기 시간과 오류 지점이 증가한다는 것입니다.
5. 서비스 검색 메커니즘의 장점
서비스 간 결합 감소:
마이크로서비스는 서로의 네트워크 주소를 직접 알 필요가 없고, 서비스 등록 센터를 통해서만 통신하면 됩니다.
시스템 확장성 및 유연성 향상:
서비스가 동적으로 변경(확장, 축소, 마이그레이션 등)함에 따라 서비스 등록 센터에서는 서비스 인스턴스 정보를 실시간으로 업데이트하여 서비스 간의 통신이 영향을 받지 않도록 할 수 있습니다.
로드 밸런싱 및 장애 조치 지원:
클라이언트는 서비스 등록 센터에서 여러 서비스 인스턴스의 주소 목록을 얻어 로드 밸런싱 정책에 따라 통신할 인스턴스 중 하나를 선택할 수 있습니다. 서비스 인스턴스를 사용할 수 없으면 서비스 레지스트리는 자동으로 이를 비정상으로 표시하고 요청 전송을 방지할 수 있습니다.
6. 일반적인 서비스 검색 도구
유레카:
클라이언트 검색 모드를 사용하여 Netflix에서 개발한 서비스 검색 도구입니다. 매우 가볍고 통합 및 사용이 쉽습니다.
영사:
HashiCorp에서 개발한 서비스 검색 및 구성 센터 도구입니다. 서비스 상태 확인 및 기타 기능을 포함하여 비교적 완전한 솔루션을 제공하며 HTTP 및 DNS 프로토콜을 지원합니다.
동물원 관리인:
Apache ZooKeeper는 서비스 검색에도 사용할 수 있는 오픈 소스 분산 조정 서비스입니다. 분산 잠금, 이름 지정 서비스 및 기타 기능을 제공하고 다양한 클라이언트 라이브러리를 지원합니다.
마이크로서비스 아키텍처에서 서비스 검색 메커니즘은 등록 센터를 통해 서비스 인스턴스의 동적 등록 및 쿼리 기능을 실현하여 서비스 간의 결합을 줄이고 시스템의 확장성과 유연성을 향상시킵니다.