팀 전체를 대표하여 드디어 Couchbase Java SDK 2.1.0 버전이 출시되었다는 소식을 전하게 되어 기쁘게 생각합니다. 2.0 브랜치에 비해 많은 새로운 기능과 수많은 작은 개선 사항 및 버그 수정이 이루어졌습니다. 이는 애플리케이션을 업그레이드하는 점점 더 많은 사용자들과 반응형 데이터 액세스 패턴을 탐색하는 신규 사용자들로부터 받은 귀중한 피드백의 결과입니다.
이 블로그 게시물에서는 새로운 기능에 대해 집중적으로 살펴보겠습니다. 전체 변경 사항 목록을 확인하려면 다음 링크를 참조하세요. 릴리스 정보. 질문이 있는 경우 다음에서 질문할 수 있습니다. 포럼 문제가 발생했다고 생각되면 문제를 제기해 주세요. JIRA에서.
그리고 특정 워크로드에서 성능을 개선할 수 있는 몇 가지 변경 사항도 적용했습니다. 이 블로그 게시물에 벤치마크가 없더라도 2.0.3에 비해 지연 시간과 처리량이 개선된 것을 확인할 수 있을 것입니다.
SDK 받기
항상 그렇듯이 다음에서 GA 릴리스를 배포합니다. Maven Central 그리고 아카이브.
N1QL DP4 지원
이번 릴리스에서는 N1QL DP4에 대한 공식(아직 실험 단계) 지원이 제공됩니다. 기본 스트리밍 응답이 상당히 변경되었기 때문에 DP3와 이전 버전과 호환되지 않습니다. 주요 내용은 다음과 같습니다:
- 간단하고 매개변수화되어 준비된 명세서.
- 시간 초과 및 스캔 일관성과 같은 확장된 쿼리 옵션.
- 보다 유연한 오류 처리를 위해 동기식 및 비동기식 QueryResults가 개선되었습니다.
Simon이 2주 전에 훌륭한 블로그 게시물을 작성했으니 자세히 알아보려면 다음을 참조하세요. 여기에서 확인하세요..
공간 뷰 쿼리 지원
일반 보기 쿼리 지원 외에도 공간 보기 쿼리에 대한 지원이 추가되었습니다. 공간 쿼리 지원은 Couchbase Server 3.0.2에서 아직 실험적이지만 곧 공식적으로 지원될 예정입니다. 또한 2.1.0의 구현은 응답 형식이 약간 변경되었기 때문에 이전 Couchbase Server 릴리스와 호환되지 않습니다.
간단한 예로 상점 정보를 저장한다고 가정해 보겠습니다:
이 데이터 형식을 기반으로 위도와 경도뿐만 아니라 영업 시간까지 인덱싱하는 공간 보기를 정의할 수 있습니다:
그런 다음 위치에 대한 경계 상자와 상점이 열려 있어야 하는 시간 범위를 제공하여 모든 3차원에서 쿼리할 수 있습니다:
서버 측에서 완전히 지원되는 버전에 가까워짐에 따라 조만간 더 많은 블로그 게시물과 예제를 볼 수 있을 것으로 예상됩니다.
유휴 소켓 하트비트/키팔라이브
클라이언트를 통해 특정 소켓으로 이동하는 부하가 없는 경우, 방화벽(또는 다른 것)이 오래된 것으로 판단하여 연결을 차단할 가능성이 있습니다. 이를 방지하기 위해 SDK는 이제 유휴 소켓에 대해 30초마다 하트비트 메시지를 보냅니다. 물론 이 간격에 일반 트래픽이 흐르고 있는 경우에는 이러한 메시지가 전송되지 않습니다.
환경 설정에서 간격을 변경할 수 있으며 비활성화하려면 0으로 설정하면 됩니다.
플러그형 재시도 전략
요청을 즉시 발송할 수 없는 경우 빠르게 실패할 수 있는 방법을 제공하는 기능이 많이 요청되었습니다. 예를 들어 노드에 장애가 발생하여 클러스터에서 장애 조치되는 동안 문서의 하위 집합(이 노드의 특정 파티션을 대상으로 하는 모든 문서)을 작성할 수 없습니다. 기본적으로 SDK는 조금 후에 작업을 다시 시도하고 결국 호출자 측에서 시간 초과가 발생합니다.
대신 새로운 빠른 실패 모드는 요청을 즉시 취소하여 요청을 다시 시도할지 여부를 결정할 수 있는 빠른 피드백 루프를 호출자에게 제공합니다. 이 새로운 전략은 다음과 같은 환경에서 사용할 수 있습니다:
또한 재시도 전략을 플러그인할 수 있도록 하여 사용자가 직접 정의할 수도 있습니다. 이 기능은 상당히 고급이므로 이 블로그 게시물에서는 다루지 않았지만 곧 해당 주제에 대한 문서에서 자세한 정보를 확인할 수 있습니다. 그동안 궁금한 점이 있으시다면 SDK와 함께 제공되는 (매우 간단한) 전략을 확인해 보세요.
마지막으로, 구성 가능한 '최대 요청 수명'이 환경에 추가되어 기본 '최선의 노력' 전략에서 요청을 계속 재시도할지 아니면 대신 취소할지를 결정하는 데 활용됩니다. 이는 요청이 오랫동안 순환하면서 링버퍼의 귀중한 슬롯을 차지하는 것을 방지하기 위해 필요합니다.
구독 가능한 이벤트 버스
코어와 클라이언트가 잠재적인 애플리케이션 구독자에게 이벤트를 게시하기 위해 활용하는 일반 이벤트 버스가 환경에 추가되었습니다. 현재는 버킷 열기/닫기 및 노드 연결/연결 해제 이벤트만 게시되지만, 향후에는 성능 메트릭과 다른 유형의 이벤트 및 경고도 수집 및 게시하여 이를 대폭 확장할 계획입니다.
옵저버블의 스트리밍 특성 덕분에 이러한 종류의 이벤트를 구독하고 반응하는 것은 매우 쉽습니다:
DNS SRV 부트스트랩
이제 DNS SRV 레코드를 통해 부트스트랩 노드 목록을 가져올 수 있습니다. 이를 통해 시스템 관리자는 매우 간편한 방식으로 부트스트랩 노드 목록 구성을 중앙 집중화할 수 있습니다. 이 기능을 사용하려면 해당 환경에서 활성화해야 합니다. 자세한 내용은 다음에서 확인할 수 있습니다. 여기.
다음 단계는 무엇인가요?
이미 2.2 릴리스에 대한 많은 아이디어가 있지만, 지금은 한발 물러나 필요에 따라 버그 수정 릴리스를 통해 이 브랜치를 더욱 안정화할 계획입니다. 또한, 향상된 프레임워크와 "스택 위쪽" 통합에 초점을 맞추고 있으니 앞으로 몇 주 동안 블로그 게시물과 발표를 기대해 주세요!