카우치베이스 .NET SDK 2.2.4가 출시되었습니다!

오늘 Couchbase .NET SDK 버전 2.2.4를 출시합니다! 이 릴리즈는 2.2.2의 후속 버전으로, 2.2.3이 2.2.4에 병합되었습니다. 이번 릴리스의 가장 중요한 기능은 SDK가 더 적은 시스템 리소스(TCP 소켓)를 사용하여 더 많은 처리량을 수행할 수 있도록 하는 새로운 선택적 IO 모델입니다.

또한 이번 릴리스에는 몇 가지 중요한 버그 기능과 개선 사항이 포함되어 있으므로 이전 버전의 SDK 사용자라면 2.2.4로 업그레이드할 것을 권장합니다!

IO 멀티플렉싱(MUX)

오늘날의 마이크로 서비스 아키텍처에서는 대규모 모놀리식 서비스 계층이 컨테이너를 사용하여 여러 개의 더 작은 개별 배포로 나뉩니다. 모든 배포에는 클라이언트 인스턴스가 필요하기 때문에 배포된 각 애플리케이션이 SDK를 사용하여 여는 TCP 연결 수에 승수 효과가 있습니다. 일반적으로 승수는 다음과 같습니다:

클라이언트 x 클러스터 노드 x 버킷 x TCP 연결 = 총 연결 수

많은 서비스가 있는 대규모 배포에서는 클러스터가 효율적으로 처리할 수 있는 TCP 연결 수에 금방 한계에 도달하기 쉽습니다. 따라서 연결 수를 줄이면 클러스터에 가해지는 부담이 줄어들어 더 많은 요청을 처리할 수 있는 건강한 클러스터를 유지할 수 있습니다.

과거에 SDK는 멤캐시드 K/V 작업(가져오기, 삽입, 제거 등)에 대해 각 스레드가 한 번에 단일 TCP 소켓을 사용하는 연결 풀링을 사용했습니다. 연결 풀 제한은 MinSize 및 MaxSize 구성 설정에 의해 제한되며, MaxSize에 도달하면 SDK는 연결을 사용할 수 있게 될 때까지 기다리거나 OperationTimeout 응답을 반환합니다.

일반적으로 멤캐시드 작업은 서버에서 매우 빠르기 때문에 성능은 매우 우수하며, 주요 병목 현상은 네트워크 지연입니다. 대기 중인 다음 스레드에 연결을 제공하기 전에 SDK가 작업이 완료될 때까지 기다리기 때문에 지연 시간이 더 길어집니다.

이번 릴리스에서는 동일한 TCP 연결에서 여러 스레드가 동시에 송수신할 수 있는 IO 멀티플렉싱(MUX)이라는 새로운 옵션 IO 모델을 도입합니다. 이 모델의 장점은 OS 리소스에 대한 부담을 줄이면서 처리량을 향상시키고, 무엇보다도 클라이언트와 서버 간의 TCP 연결 수를 줄일 수 있다는 점입니다.

사용 방법:

MUX를 사용하려면 App.Config 또는 Web.Config에서 클라이언트가 이를 사용하도록 구성해야 합니다. 예를 들어

중요한 부분은 connectionPool 요소 내에서 기본 연결을 새로운 MultiplexingIOConnection으로 재정의하고 ioService 요소에서 기본 IO 서비스를 새로운 MultiplexingIOService로 교체하는 것입니다. 이 작업을 완료하면 클라이언트는 모든 멤캐시드(K/V) 작업에 새 IO 서비스를 사용하게 됩니다.

주의 사항

몇 가지 주의할 점이 있습니다:

  • SSL은 아직 MUX에서 지원되지 않습니다(곧 제공 예정).
  • MUX는 멤캐시드(K/V) 작업에 노드당 단일 연결을 사용하므로 많은 연결 풀 설정이 더 이상 적용되지 않습니다(예: MinSize 및 MaxSize).
  • MUX는 뷰 또는 N1QL 쿼리에 영향을 미치지 않습니다.

v2.2.4 릴리스 노트

버그

  • [NCBC-1031] - 카우치베이스 2.2.1 성능 분리 대 2.1.4 + 내구성 버그
  • [NCBC-1038] - 기본 인덱스가 존재하지 않고 애드혹이 거짓인 경우 클라이언트는 시간 초과까지 반복합니다.
  • [NCBC-1041] - 인덱스 생성 시 메모리 부족 예외 미처리 오류
  • [NCBC-1046] - 멤캐시드컨피그컨텍스트가 비교를 위해 노드어댑터를 사용하도록 합니다.
  • [NCBC-1047] - 로그는 시간 초과 값만 알려줄 것입니다.
  • [NCBC-1048] - NET Hello world 예제가 작동하지 않습니다.

개선 사항

  • [NCBC-1044] - ServicePointManager 변경 사항을 전역이 아닌 상태로 만들기
  • [NCBC-1045] - 플러그형 IO 서비스 구현에 대한 지원 추가
  • [NCBC-1049] - IOStrategy를 IOService로 이름 변경 및 기타 이름 리팩토링
  • [NCBC-1050] - 파이프라인/멀티플렉스 IO에 대해 연결 버퍼를 구성 가능하게 만들기

작업

  • [NCBC-1039] - 쿼리 클라이언트가 N1QL 쿼리에 HTTP 인증을 사용하도록 강제 적용
  • [NCBC-1042] - N1QL 쿼리 요청에 max_parallelism 지원 추가

v2.2.4를 다운로드하는 방법

SDK는 NuGet을 통해 직접 다운로드하거나 Github 리포지토리를 복제하여 가져와서 사용할 수 있습니다:

  • 여기에서 바이너리를 다운로드하세요.
  • NuGet 패키지는 다음에서 찾을 수 있습니다. 여기.
  • 깃허브 리포지토리는 다음과 같습니다. 여기.

작성자

게시자 Jeff Morris, 수석 소프트웨어 엔지니어, Couchbase

Jeff Morris는 Couchbase의 수석 소프트웨어 엔지니어입니다. Couchbase에 입사하기 전에는 6년 동안 Source Interlink에서 엔터프라이즈 웹 아키텍트로 근무했습니다. Jeff는 Couchbase SDK 개발과 N1QL(쿼리 언어)과 통합하는 방법을 담당하고 있습니다.

댓글 남기기