이 페이지에서는 Memorystore for Memcached의 자동 검색 서비스를 간략하게 설명합니다. 자동 검색 서비스에 액세스하고 연결하는 방법을 알아보려면 자동 검색 서비스 사용을 참조하세요.
자동 검색 서비스는 Memcached 인스턴스를 확장할 때 발생하는 노드 IP 주소의 추가 및 삭제에 클라이언트가 자동으로 적응할 수 있는 프로그래매틱 방식입니다.
자동 검색 서비스를 사용하지 않는 경우 확장 중에 Memcached 클라이언트에서 노드 IP 주소 목록을 수동으로 관리해야 합니다. 인스턴스가 확장 및 축소될 때 클라이언트가 업데이트되도록 해야 하므로 노드 IP 주소 목록을 수동으로 관리하는 과정에서 오버헤드가 가중됩니다. 자동 검색을 사용하면 이 작업을 자동화할 수 있습니다.
의도대로 자동 검색 엔드포인트를 사용해야 하며 get
, set
, delete
와 같은 Memcached 명령어를 실행하면 안 됩니다.
자동 검색 서비스 아키텍처 개요
Memorystore for Memcached는 검색 엔드포인트를 사용하여 자동 검색 서비스를 노출합니다. 검색 엔드포인트는 Memcached 인스턴스의 현재 노드 목록을 반환하는 인스턴스의 전용 IP 주소입니다. 모든 Memorystore for Memcached 인스턴스에는 고유한 검색 엔드포인트가 있습니다. 인스턴스가 생성되면 검색 엔드포인트의 IP 주소가 변경되지 않습니다.
인스턴스의 자동 검색 정보를 가져오려면 검색 엔드포인트를 쿼리합니다. 검색 엔드포인트는 다음 정보를 반환합니다.
필드 | 설명 | DataType | 예 |
---|---|---|---|
구성 버전 ID | 각 노드 목록 변경에 대해 증가하는 ID | 정수 | 9 |
노드 목록 | 현재 노드 및 해당 IP 주소의 목록을 반환합니다. | 문자열 | node1-ip|node1-ip|node1-port node2-ip|node2-ip|node2-port |
Memorystore for Memcached는 검색 엔드포인트를 직접 노출하지만 자동 검색은 클라이언트 라이브러리에서도 사용할 수 있어야 합니다. 클라이언트에서 자동 검색을 사용하는 방법에는 두 가지가 있습니다.
자동 검색을 지원하는 클라이언트 라이브러리를 사용합니다.
- Golang memcached 클라이언트 포크
클라이언트 라이브러리에 자동 검색 로직을 수동으로 추가합니다.
자동 검색 서비스 동작
자동 검색 서비스는 eventual consistency를 가집니다. 확장 작업 후 자동 검색 노드 목록이 현재 클러스터 구성을 따라 잡는 동안 초 단위 지연이 발생할 수 있습니다.
eventual consistency는 서비스의 분산 특성뿐 아니라 클라이언트에 다음 동작을 생성할 수 있습니다. 클라이언트 로직은 이 동작을 감안하도록 설계되어야 합니다.
자동 검색 서비스에 대한 두 개의 개별 쿼리의 동일한 클라이언트는 서비스로부터 두 개의 다른 자동 검색 응답을 수신할 수 있습니다(서비스가 일관되지 않은 동안). 그러나 응답 중 하나는 클라이언트가 응답을 처리하는 데 사용할 수 있는
Configuration version ID
가 더 높습니다.두 클라이언트는 서비스로부터 두 가지 자동 검색 응답을 수신할 수 있지만(서비스가 일관되지 않은 동안) 클라이언트가 서로 통신하지 않으므로 둘 중 어느 응답이 최신인지 찾을 수는 없습니다. 이 상태에서 인스턴스는 캐시 부적중을 반환할 수 있습니다. 이 시나리오에서 클라이언트는 자동 검색 서비스가 일관될 때까지 기다려야 합니다.
다음 단계
- 자동 검색 서비스 사용 방법을 알아봅니다.
- 사용 가능한 Memcached 구성을 검토합니다.