분산 캐시 클라이언트
사용 NCache 간단한 키-값 저장에서 고급에 이르기까지 다양한 사용 사례에 걸쳐 있습니다. SQL 검색 및 Pub / Sub. 클라이언트 애플리케이션에는 콘솔 애플리케이션, Windows 서비스, 웹 애플리케이션 및 웹 서비스가 포함되지만 이에 국한되지는 않습니다. 클라이언트 라이브러리(SDK)에는 .NET, Java 및 NodeJS가 포함됩니다. 또한 Python 및 Scala에 대한 지원도 제공됩니다. 관련 SDK를 사용하면 클라이언트 애플리케이션이 하나 이상의 캐시와 연결할 수 있습니다.
주의 사항
이 기능은 다음에서도 사용할 수 있습니다. NCache Professional.
분산 캐시 클라이언트의 통신 방법
데이터 교환 형식인 Google Protobuf: 클라이언트는 영구 TCP 소켓을 통해 분산 캐시와 통신합니다. NCache 클라이언트 사용 Google 프로토콜 버퍼 (Protobuf)는 캐시 서버와 통신하기 위한 프로토콜입니다. Protobuf를 사용하면 이전 클라이언트 버전에 유연성을 제공할 수 있습니다. NCache, 새로운 캐시 서버 버전과 통신합니다.
요청-응답 기반 병렬 요청 실행: NCache 클라이언트는 멀티스레딩을 지원합니다. 이러한 애플리케이션은 캐시에 병렬 요청을 할 수 있습니다. NCache 클라이언트-서버 통신에서 RequestId 기반 요청-응답 프로토콜을 따르며, 모든 요청에는 고유한 RequestId가 할당됩니다. 캐시 클라이언트와 캐시 서버 사이에 단일 TCP 연결이 있음에도 불구하고 클라이언트는 이미 전송된 요청의 응답을 기다리지 않고 고유한 RequestId를 사용하여 여러 요청을 캐시 서버에 보낼 수 있습니다. 따라서 각 요청은 완전히 독립적입니다. NCache 서버는 병렬 요청 실행도 지원합니다. 이 아키텍처를 통해 애플리케이션은 작업이 서로 기다리지 않고 클라이언트에서 캐시 서버로 여러 병렬 작업을 실행할 수 있으므로 최대 성능과 확장성을 제공합니다.
파이프라이닝 요청: 파이프 라이닝 단일 소켓(I/O) 작업에서 여러 요청을 결합하고 전송하는 것을 의미합니다. 애플리케이션이 I/O 작업을 수행할 때마다 사용자-커널 모드 전환이 발생하며 이는 비용이 많이 드는 작업입니다. 파이프 라이닝 적은 수의 I/O 작업으로 동일한 작업을 수행하여 이러한 비용을 방지합니다. 파이프 라이닝 애플리케이션 성능을 몇 배로 향상시킵니다. NCache 클라이언트와 서버 측 모두에서 파이프라인을 지원합니다.
캐시 토폴로지 인식: NCache 클라이언트는 캐시 토폴로지를 인식합니다. 캐시 클라이언트가 첫 번째 캐시 서버에 연결되면 토폴로지를 포함한 캐시 메타데이터를 검색합니다. 클라이언트가 캐시 서버와의 연결을 설정하는 방법과 클라이언트 작업을 실행하는 방법은 캐시의 기본 토폴로지에 따라 다릅니다. 예를 들어, 데이터는 다음과 같은 여러 캐시 서버에 분산됩니다. 파티션 된 및 파티션-복제본 토폴로지. 따라서 클라이언트는 캐시 클러스터의 각 서버와 TCP 연결을 설정하고 최신 데이터 분포 맵을 가져옵니다. 클라이언트는 해당 데이터가 포함된 파티션에 대해 읽기 및 쓰기 작업을 직접 수행합니다. 마찬가지로, 각 서버에는 복제 토폴로지에는 동일한 데이터 세트가 포함되어 있습니다. 따라서 클라이언트는 단일 캐시 서버에만 연결됩니다.
원활한 연결 실패 처리: XNUMXD덴탈의 NCache 클라이언트는 캐시 서버와의 지속적인 연결을 유지합니다. 네트워크 결함으로 인해 이 연결이 끊어지면 NCache 클라이언트에는 백그라운드 연결 재설정 메커니즘이 장착되어 있습니다. 이 메커니즘은 클라이언트와 서버 간의 네트워크 연결이 재개되는 즉시 실패한 서버와의 연결을 자동으로 설정합니다. 그리고 이 모든 작업은 클라이언트 애플리케이션의 개입 없이 원활하게 이루어집니다.
데이터 직렬화: 응용 프로그램 데이터는 캐시 서버로 이동하기 전에 직렬화 프로세스를 거칩니다. NCache 둘 다 지원 바이너리 및 JSON 직렬화. 캐시를 구성할 때 직렬화 형식 중 하나를 선택할 수 있습니다. 캐시 클라이언트는 캐시에 연결되면 캐시 서버에서 직렬화 형식을 가져옵니다. 그런 다음 직렬화 형식에 따라 애플리케이션 데이터를 직렬화합니다.
데이터 암호화 : 애플리케이션 데이터 암호화는 활성화할 수 있는 선택적 기능입니다. 만약에 암호화 구성된 경우 클라이언트는 직렬화된 후 애플리케이션 데이터를 암호화합니다. 클라이언트는 캐시에 연결할 때 캐시 서버에서 암호화 관련 구성을 가져옵니다.
데이터 압축: 압축 데이터가 정말 큰 경우 응용 프로그램 데이터의 캐시 크기를 줄이는 데 도움이 될 수 있습니다. 데이터는 먼저 직렬화된 다음 암호화되고(암호화가 활성화된 경우) 마지막으로 캐시로 전달되기 전에 캐시 클라이언트에 의해 압축됩니다. 캐시 클라이언트는 캐시에 연결할 때 캐시 서버에서 압축 관련 구성을 가져옵니다.
캐시와 연결
캐시 클라이언트가 캐시에 접속하기 위해서는 서버 정보가 필요합니다. 서버 정보는 클라이언트 구성 파일(클라이언트.ncconf ) 또는 통해 캐시 연결 옵션. 클라이언트는 제공된 캐시 서버 목록을 반복하고 서버에서 실행 중인 캐시와 연결을 시도합니다. 캐시 인스턴스가 지정된 서버에서 실행되고 있지 않으면 목록에 제공된 다음 서버로 이동합니다. 클라이언트 연결은 일반적으로 다음 단계를 거칩니다.
클라이언트는 먼저 다음과 TCP 연결을 설정합니다. NCache 서비스 종료 포트 9800.
그런 다음 클라이언트는 구성된 캐시 서버의 전체 목록을 요청합니다. 이런 식으로 캐시 서버의 업데이트된 목록이 있습니다.
그런 다음 클라이언트는 캐시 초기화 요청을 서버에 보냅니다. 캐시 보안이 활성화됨. 모든 캐시는 별도의 프로세스에서 실행됩니다. 당신이 가지고 있다면 .NET Framework 기반 설치 NCache 서버 측에서 서비스는 클라이언트 연결을 캐시 프로세스로 원활하게 전달하고 클라이언트는 캐시에 성공적으로 연결합니다. 에 .NET Core 또는 .NET 6 이상 설치의 경우 서비스는 캐시가 연결을 수신하는 클라이언트와 포트 정보를 공유합니다. 그런 다음 클라이언트는 캐시 프로세스와 직접 연결을 설정하고 초기화 요청을 보냅니다.
주의 사항
NCache Windows에서 필요한 모든 포트를 열도록 방화벽을 자동으로 구성합니다. 그러나 열어야 합니다. NCache Linux의 포트 방화벽 구성.
클라이언트가 다음과 연결하는 경우 복제된 캐시 클라이언트 로드 밸런싱이 활성화되면 클라이언트는 연결된 클라이언트 수가 가장 적은 서버를 요청합니다. 그런 다음 로드가 가장 적은 서버에 연결합니다.
클라이언트가 다음과 연결하는 경우 파티션 된 또는 파티션-복제본 캐시에 저장한 다음 서버에 대한 배포 맵을 요청합니다. 맵을 수신하면 배포 맵에 있는 캐시 서버와 연결을 설정합니다.
클라이언트는 또한 다음과 같은 다양한 캐시 구성을 요청합니다.
- 압축 임계값 및 캐시 직렬화 형식
- 암호화 키 클라이언트와 캐시 서버 간에 공유됩니다.
- 구성된 쿼리 인덱스 및 등록된 소형 유형 등