Couchbase .NET SDK 2.1.0을 소개합니다: 비동기식 카우치베이스 .NET 클라이언트!

드디어 Couchbase .NET SDK 2.1.0 GA가 출시되었습니다! 이번 릴리스는 2.1.0의 마이너 릴리스이지만, 작업 비동기 패턴(비동기 및 대기 키워드)과 모든 키/값 작업에 대한 비차단 IO 지원이 포함되어 있습니다. 그 외에도 여러 가지 기능이 포함되었습니다:

  • 연결별 TCP KEEP_ALIVE 설정
  • "플러그형" 트랜스코더, 시리얼라이저 및 컨버터를 만들기 위한 새로운 확장 포인트
  • 키/값 쌍의 슬라이딩 만료를 위한 '가져오기 및 터치' 지원
  • "키 존재" 메서드에 대한 공식 지원

기타 개선 사항 및 버그 수정에는 복제본 읽기에 대한 수정, 스왑/재조정/장애 조치 시나리오 중 불일치 및 오류를 처리하기 위한 새로운 쿼리 요청 엔진 및 기타 수많은 버그 수정 및 개선 사항(45개 이상의 Jira 티켓이 종료됨)이 있습니다. 이 릴리스는 JUGGED입니다!

다음 두 섹션에서는 이번 릴리스의 주요 기능에 대해 간략하게 살펴보고, 조만간 각 기능에 대해 더 자세히 살펴볼 수 있는 긴 포스팅을 준비할 예정입니다.

K/V에 대한 작업 비동기 패턴 지원

이번 릴리스에서는 전체 IO 엔진이 비차단 IO를 지원하도록 개선되었으며, 이 기능을 활용하기 위해 비동기 및 대기 키워드를 통해 이 기능을 노출했습니다. 비동기/대기 키워드와 TAP(작업 비동기 패턴)에 익숙하지 않으시다면, 다음 글을 읽어보시기 바랍니다. 또는 또는 를 클릭한 후 계속하세요.

너무 자세히 설명하지 않고(향후 다른 포스팅에서 자세히 다룰 예정입니다), 여기서는 비동기/대기 및 Couchbase SDK를 사용하여 Couchbase 클러스터에서 키를 삽입하고 검색하는 예제를 보여드리겠습니다:

가장 먼저 눈에 띄는 차이점은 메소드 시그니처에 async 키워드가 추가되어 메소드 본문에서 await 키워드를 사용할 수 있게 되었다는 것입니다. 메소드가 실행될 때, await 키워드에 도달할 때까지 동기적으로 실행되고, 그 후에는 "해제"되어 비동기적으로 실행됩니다. 여기에는 .NET 측에서 꽤 많은 컴파일러 마법이 개입되어 있지만, Couchbase .NET SDK를 사용하여 비동기 코드를 작성하는 데 필요한 것은 이것뿐입니다!

태스크가 생성되어 대기열에 저장되고, 요청은 "일단 실행하고 잊어버리는" 방식(IOCP를 통해)으로 Couchbase 서버에 실행되며, 완료되면 응답을 읽고 호출자에게 반환하여 요청을 완료하는 콜백이 실행됩니다. 오류나 예외가 발생하면 이를 처리하고 태스크가 캡슐화하는 IOperationResult 구현으로 반환합니다. 다음 포스팅에서 다시 한 번 자세히 살펴보겠습니다!

새로운 확장 포인트!

2.0 SDK의 목표 중 하나는 SDK의 다양한 구성 요소에 대한 확장 포인트를 제공하는 것이었습니다. 구현이나 기반이 되는 외부 API가 마음에 들지 않는다면 직접 작성하세요! 또 다른 긍정적인 효과는 SDK 내에서 다양한 레이어와 컴포넌트를 더 쉽게 분리하고 테스트할 수 있다는 것입니다.

2.1.1에서는 이제 세 가지 새로운 확장 포인트를 지원합니다:

  1. 직렬화기 - POCO를 JSON으로 직렬화 및 역직렬화 처리합니다.
  2. 변환기 - 카우치베이스 서버와 주고받는 멤캐시드 바이트 패킷의 변환(및 다른 SDK 간의 패리티)을 처리합니다.
  3. 트랜스코더 - 요청 또는 응답 본문('키/값'의 '값' 부분)의 변환 및 직렬화/역직렬화를 처리합니다.

커스텀 직렬화기를 만들려면 ITypeSerializer 인터페이스를 구현하고 Func 를 클라이언트 구성에 직렬화기를 생성하는 팩토리 메서드로 사용할 수 있습니다. 사용자 정의 직렬화기의 예로는 다른 JSON 직렬화 API를 사용하려는 경우를 들 수 있습니다. ServiceStack.Text?) SDK가 기본적으로 사용하는 표준 JSON.NET API가 아닙니다.

사용자 정의 컨버터와 트랜스코더도 ITypeConverter 또는 ITypeTranscoder 인터페이스를 구현하고 특정 사용 사례나 요구 사항을 처리하는 사용자 정의 클래스를 제공하여 플러그인할 수 있습니다. 그런 다음 직렬화기와 마찬가지로 Func 또는 Func 팩토리를 사용하여 클라이언트에 새 동작을 "주입"합니다.

이러한 확장 포인트를 자세히 살펴보고 새로운 트랜스코더, 직렬화기 및/또는 변환기 동작을 빌드하고 클라이언트에 주입하는 방법을 설명하는 향후 게시물을 기대해 주세요.

2.1.0의 기타 새로운 기능

TCP 킵얼라이브에 대한 연결별 설정

Windows에서 TCP 킵얼라이브의 기본 OS 설정은 120분입니다. 네트워크 어플라이언스(로드 밸런서 등)가 더 짧은 시간 동안 유휴 상태인 TCP 연결을 종료하도록 구성된 클라우드 배포와 같은 일부 경우에는 기본 TCP 킵얼라이브 시간을 더 짧게 설정할 수 있는 방법이 필요합니다. OS 수준에서 레지스트리 설정을 통해 KeepAliveInterval 및 KeepAliveTime을 통해 전역적으로 이 작업을 수행할 수 있지만, 이 경우 해당 서버에서 실행 중인 모든 애플리케이션에 영향을 미칩니다. 더 나은 해결책은 클라이언트가 사용 중인 연결에만 적용되도록 TCP 연결 수준에서 간격과 시간을 변경하는 것입니다.

이제 ClientConfiguration 클래스의 EnableTcpKeepAlives, TcpKeepAliveTime 및 TcpKeepAliveInterval 속성을 통해 이를 수행할 수 있습니다. EnableTcpKeepAlives는 TCP 킵-알리브를 활성화 또는 비활성화하며(기본값은 활성화), TcpKeepAliveTime은 킵-알리브를 보내기 전에 경과할 시간, TcpKeepAliveInterval은 킵-알리브 간격이 TcpKeepAliveTime에 도달한 후 킵-알브 간격을 지정합니다.

위의 예제에서는 Cluster 개체를 생성하고 버킷을 열기 전에 ClientConfiguration을 생성하고 EnableTcpKeepAlives를 true로 설정하고(기본값은 true이므로 설명을 위한 것임), TcpKeepAliveTime을 1시간(연결이 유휴 상태일 때 첫 번째 KEEP-ALIVE 패킷이 전송되는 시간), 마지막으로 TcpKeepAliveInterVal을 5sec로 설정합니다. 즉, 1시간 동안 유휴 상태가 지속되면 클라이언트는 연결이 다시 활성화될 때까지 5초마다 TCP 킵-얼라이브를 전송하기 시작합니다.

존재 메서드 지원

사용자들은 종종 값을 실제로 가져오지 않고도 키가 존재하는지 확인할 수 있는 방법을 요청합니다. 이제 v2.1.0에서 이 기능이 지원됩니다. 이 메서드의 동기식 버전과 비동기식 버전이 모두 지원됩니다.

GAT(가져오기 및 터치) 및 터치(슬라이딩 만료용) 지원

두 가지 새로운 방법이 도입되었습니다: GetAndTouch와 Touch. GetAndTouch는 값을 검색하여 만료를 업데이트하고 Touch는 키의 만료를 업데이트하지만 값을 반환하지 않습니다.

중요한 버그 수정

  • 1.3.X에서 2.X로의 정수 트랜스코딩
  • 복제본 읽기 수정
  • 수많은 버그 수정과 개선이 이루어졌습니다!

Couchbase .NET SDK를 얻는 방법

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

  • 바이너리 다운로드 여기.
  • NuGet 패키지는 다음에서 찾을 수 있습니다. 여기.
  • 깃허브 리포지토리는 다음과 같습니다. 여기.
이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

작성자

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

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

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.